Solution of implicit function
Ältere Kommentare anzeigen
Hi,
I have an equation for example x^2+y^2-16=0 . How can I get all of x and y value for this equation. Of course I can write it y=sqrt(16-x^2). But what if this equation is more complex. I tried something with solve command on matlab but i didn't achive. can u help me?
2 Kommentare
Matt J
am 25 Jan. 2016
How can I get all of x and y value for this equation.
There are infinite pairs x,y that solve your example equation. I think you really mean, "how can I get y for a given x?"
Cengiz Görkem DENGIZ
am 25 Jan. 2016
Antworten (1)
If analytical solutions exist, then SOLVE would be the thing to use.
If analytical solutions don't exist, then you would have to search numerically for a solution using FZERO or FSOLVE.
6 Kommentare
Cengiz Görkem DENGIZ
am 25 Jan. 2016
Matt J
am 26 Jan. 2016
Once you have solved the equation symbolically, you could convert it to a vectorized anonymous function,
>> x=sym('x'); f=sqrt(16-x^2)
f =
(16 - x^2)^(1/2)
>> fa=str2func(['@(x)' char(vectorize(f))])
fa =
@(x)(16-x.^2).^(1./2)
>> tic;fa(linspace(0,1,401));toc
Elapsed time is 0.000538 seconds.
Seems pretty fast to me.
Cengiz Görkem DENGIZ
am 26 Jan. 2016
Walter Roberson
am 26 Jan. 2016
So you solve() for s1 and get two results (two branches of a quadratic.) And you matlabFunction() that; do the parts individually if you need to. Then substitute in the s2 values.
Cengiz Görkem DENGIZ
am 26 Jan. 2016
Walter Roberson
am 26 Jan. 2016
c = rand; s90 = rand; p = rand; q = rand; sb = rand; su = rand; %in other words you need numeric values for them
syms s1 s2
eqn = s1^2/s0^2-c*s1*s2/s0/s90+s2^2/s90^2+((p+q)-(p*s1+q*s2)/sb)*s1*s2/s0/s90-su^2;
sols = solve(eqn, s1);
f1 = matlabFunction(sols(1), s2);
f2 = matlabFunction(sols(2), s2);
S2 = linspace(-50,50);
plot(S2, f1(S2), S2, f2(S2));
Kategorien
Mehr zu Calculus finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!