Plot figure for f(y,z)=0

4 vues (au cours des 30 derniers jours)
Behi
Behi le 27 Mai 2022
Commenté : Walter Roberson le 28 Mai 2022
Hi, I have two functions f and g.
and ; I want to plot f-g=0 (or f=g) in a yz plane of 3D plot. I can solve it and write y as a function of z and then plot it; but I want to know how I can plot f-g=0 directly.

Réponses (1)

John D'Errico
John D'Errico le 27 Mai 2022
Modifié(e) : John D'Errico le 27 Mai 2022
Simple enough. Define the two functions. Then subtract them, and plot using fimplicit.
f = @(z) 0.07*z.^2./(0.09 + z.^2);
g = @(y,z) 0.003 + 0.01*42./((y - z).^2 + 42);
fminusg = @(y,z) f(z) - g(y,z);
fimplicit(fminusg)
xlabel y
ylabel z
grid on
It can be a bit simpler if you want to use syms, because then you don't need to define f and g as explicit functions of the to variables.
syms y z
f = 0.07*z.^2./(0.09 + z.^2);
g = 0.003 + 0.01*42./((y - z).^2 + 42);
fminusg = f - g;
fimplicit(fminusg,[-20,20 -.15 .15])
xlabel y
ylabel z
grid on
You can choose a different domain for y and z (in the call to fimplicit) if you wish to expand it. You can see I did that in the second figure.
  2 commentaires
Behi
Behi le 28 Mai 2022
Many thanks for the answer. I have Matlab 2015 and fimplicit is not defined. Is there any other functions to use instead for this version of Matlab?
Walter Roberson
Walter Roberson le 28 Mai 2022
sol = solve(fminusg, z, 'maxdegree', 4);
Y = linspace(-20,20);
Z = double(subs(sol, Y)).';
plot(Y, Z)
Your version is old enough that you do not have symbolic fplot() either, which would have simplified the code.
The solution is the roots of a polynomial of degree 4.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by