How to find the value of a variable in MATLAB that exists on both sides of th eequal sign?

Does anybody know how we can find the value of a variable in MATLAB that exists on both sides of equal sign, e.g. n in 2n+q=n+r (n is the only variable)?
In this case it is so simple; n=r-q. But what if the equation is very complex and we are not able to transfer the variable to one side?

 Accepted Answer

If you have the Symbolic Math Toolbox:
syms n q r
Eq = 2*n+q == n+r
n = solve(Eq, n)
produces:
n =
r - q
To solve them numerically for n, make the entire equation equal to zero and use the fzero function:
r = 3;
q = 5;
f = @(n) [2*n+q - (n+r)];
n = fzero(f, 1)
produces:
n =
-2

4 Comments

Dear Star,
I have one specific problem in my case. What you mentioned is correct. But in my case with the funntion
su=1; b=0.5; l=1.571; p=0.16; t=atan(2*pi()/p); Landa=-tan((pi()/2)-t);
pn=p/l; B=asin(pn);
q=0.49*pn^-0.55; r=0.76*pn^-0.55;
Nmax=4.266*cos (B)*((b/l)/0.318)*su*l^2; Tmax=0.191*((b/l)/0.318)*su*l^3;
f = @(Nn) [((Nn/Nmax)^(q-1))/(1-(Nn/Nmax)^q)^((r-1)/r)-(r*Landa*Nmax/(q*Tmax))];
Nn = fzero(f, 0)
where I know the result is definitely between 0 and 10, the result by Matlab is NaN.
I am pretty sure the equation is correct. Is there any other way to solve it?
Cheers, Cyrus
I don’t know what the equation is, but plotting it:
Nn = linspace(-10,10);
figure(1)
plot(Nn, real(f(Nn)))
grid
shows that the real part doesn’t have a zero crossing anywhere in the region. (It has a small region in the Nn domain where it generates complex values.)

Sign in to comment.

Asked:

on 16 May 2014

Edited:

on 19 May 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!