Solution of implicit function
Mostra commenti meno recenti
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 Commenti
Matt J
il 25 Gen 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
il 25 Gen 2016
Risposte (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 Commenti
Cengiz Görkem DENGIZ
il 25 Gen 2016
Matt J
il 26 Gen 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
il 26 Gen 2016
Walter Roberson
il 26 Gen 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
il 26 Gen 2016
Walter Roberson
il 26 Gen 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));
Categorie
Scopri di più su Calculus in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!