solving equation in matlab

7 visualizaciones (últimos 30 días)
Esraa El-Basha
Esraa El-Basha el 28 de Dic. de 2017
Editada: John BG el 4 de En. de 2018
I want to solve this equation in matlab to get the values of y knowing that
x =[0:0.1:7];
eq1 = ((x/7)^2*sqrt(abs(abs(x)-3)/(abs(x)-3))+(y/3)^2*sqrt(abs(y+3/7*sqrt(33))/(y+3/7*sqrt(33)))-1);
then draw x and y together.
  2 comentarios
Walter Roberson
Walter Roberson el 28 de Dic. de 2017
is eq1 a constant? Is that constant 0 ? That is, is eq1 to be solved for the y that make eq1 0 when used with those x ?
Esraa El-Basha
Esraa El-Basha el 31 de Dic. de 2017
Yes, eq1 = 0 and i need to get all the values of y substituting by this range of x. and then draw x and y together.

Iniciar sesión para comentar.

Respuestas (3)

Malhar Ashtaputre
Malhar Ashtaputre el 2 de En. de 2018
Hello Esraa El-Basha,
Try to make the equation in following form.
y = function(eq1,x)
Then define x and eq1=0, then try running.

Walter Roberson
Walter Roberson el 2 de En. de 2018
syms x y
eq1 = ((x/7)^2*sqrt(abs(abs(x)-3)/(abs(x)-3))+(y/3)^2*sqrt(abs(y+3/7*sqrt(33))/(y+3/7*sqrt(33)))-1);
fimplicit(eq1, [-8 8 -3 3])
  1 comentario
John BG
John BG el 4 de En. de 2018
fimplicit returns a result that is all zeros except a single NaN
z=fimplicit(eq1, [-8 8 -3 3])
z.ZData
Then one realizes that it's a complex function, so solving complex functions requires to check both real and imaginary parts, or to work with abs.
Also, one wonders if the graph that fimplicit returns is of any use:

Iniciar sesión para comentar.


John BG
John BG el 4 de En. de 2018
Editada: John BG el 4 de En. de 2018
Hi Esraa
1. Check Real and Imaginary
Since the equation is complex, it's useful to check both real and imaginary parts of the equation:
clear all;clc;close all
x =[0:0.1:7];
y =[0:0.1:7];
[X Y]=meshgrid(x,y);
Z = ((X/7).^2*sqrt(abs(abs(X)-3)./(abs(X)-3))+(Y/3).^2*sqrt(abs(Y+3/7*sqrt(33))./(Y+3/7*sqrt(33)))-1);
figure(1);surf(X,Y,abs(Z));xlabel('X');ylabel('Y');
.
.
figure(2);surf(X,Y,imag(Z));xlabel('X');ylabel('Y');
.
.
the apparent minimum value is
min(min(Z))
ans =
22.835714285714282
for
x =[0:0.001:7];
y =[0:0.001:7];
..
min(min(Z))
=
2.332833357142857e+03
For abs(x)<3 the solution is complex
When x=>3 then the solution doesn't get any smaller than min(min(Z)) that seems to be 23.32
2. Asymptotic behavior apparently changes minimum
When changing x y ranges, such minimum value changes too
x =[-7:0.1:7];
y =[-7:0.1:7];
[X Y]=meshgrid(x,y);
Z = ((X/7).^2*sqrt(abs(abs(X)-3)./(abs(X)-3))+(Y/3).^2*sqrt(abs(Y+3/7*sqrt(33))./(Y+3/7*sqrt(33)))-1);
figure(1);surf(X,Y,abs(Z));xlabel('X');ylabel('Y');
figure(2);surf(X,Y,imag(Z));xlabel('X');ylabel('Y');
.
now
min(min(Z))
=
46.671428571428571
I tried smaller steps than 0.001, for the given range, which slowed down things.
Then when narrowing the range
x =[0:0.0001:.5];
y =[0:0.0001:.5];
..
min(min(Z))
=
-0.001044693333332 + 8.505952551020407i
3. Simplify
Stepping back on realizes that your the equation is the same, regarding zeros search, as
X^2*1./sqrt(abs(abs(X)-3))+
Y^2*1./(Y+3/7*sqrt(33)))-1)
these 2 terms will not zero for any both large values of X Y.
When approaching x=3 or y=-3/7*sqrt(33) the result rockets.
Now try this
x =[-5:0.01:5];
y =[-5:0.01:5];
[X Y]=meshgrid(x,y);
Z=X.^2*1./sqrt(abs(abs(X)-3))-Y.^2*1./(Y+3/7*sqrt(33))+1;
figure(1);surf(X,Y,10*log10(abs(Z)));xlabel('X');ylabel('Y');
.
that resembles the 'parenthesis like' curves obtained with fimplicit,
however, again increasing the range one realizes that the solutions are not a simple circle or ellipse but these two conic-like notch curves, plus the nearly flat notch running along X axis :
.
.
Therefore the solution to your equation are the zeros of
Z=X.^2*1./sqrt(abs(abs(X)-3))-Y.^2*1./(Y+3/7*sqrt(33))+1
Esraa
if you find this answer useful would you please be so kind to consider marking this answer as Accepted Answer?
To any other reader, if you find this answer useful please consider clicking on the thumbs-up vote link
thanks in advance for time and attention
John BG

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by