Solution of implicit function
Mostrar comentarios más antiguos
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 comentarios
Matt J
el 25 de En. de 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
el 25 de En. de 2016
Respuestas (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 comentarios
Cengiz Görkem DENGIZ
el 25 de En. de 2016
Matt J
el 26 de En. de 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
el 26 de En. de 2016
Walter Roberson
el 26 de En. de 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
el 26 de En. de 2016
Walter Roberson
el 26 de En. de 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));
Categorías
Más información sobre Calculus en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!