Plotting the solutions of an equation (rotated ellipsoid)

조회 수: 1 (최근 30일)
Majid
Majid 2021년 9월 21일
편집: Majid 2021년 9월 23일
Here is the equaion
one equation with three unknowns, so we need to give two variables to get the third one. Here is what I have done to solve the equation and plot the solutions:
Eqn = 4*x^2 - (y - 1/3)*((3*3^(1/2)*(z - 1/6))/16 - (13*y)/16 + 13/48) - (z - 1/6)*((3*3^(1/2)*(y - 1/3))/16 - (7*z)/16 + 7/96) == 1;
S = solve(Eqn, [z, x, y], 'ReturnConditions', true);
Av1 = -.6; Bv1 = .6; Nv1=15; Av2 = -1; Bv2 = 2; Nv2=20;
[iv1, iv2] = meshgrid(linspace(Av1, Bv1, Nv1), linspace(Av2, Bv2, Nv2));
iv1 = iv1(:);
iv2 = iv2(:);
v1 = zeros(2,1); v2 = zeros(2,1); v3 = zeros(2,1);
sv1 = zeros(2,1); sv2 = zeros(2,1); sv3 = zeros(2,1);
counter = 1;
for i = 1: length(iv1)
Zv = subs(S.zv, S.parameters, [iv2(i), iv1(i)]);
if isreal(Zv(1))
v1(counter) = iv1(i);
v2(counter) = iv2(i);
v3(counter) = max(Zv);
sv1(counter) = iv1(i);
sv2(counter) = iv2(i);
sv3(counter) = min(Zv);
counter = counter +1;
end
end
V = [v1, v2, v3]; %these are the points on the upper part of rotated ellipsiod
sV = [sv1, sv2, sv3]; %these are the points on the upper part of rotated ellipsiod
v1lin = linspace( min(v1), max(v1), 100);
v2lin = linspace(min(v2), max(v2), 100);
[Xv, Yv] = meshgrid(v1lin, v2lin);
Zv = griddata(v1,v2,v3,Xv,Yv, 'cubic');
sv1lin = linspace( min(sv1), max(sv1), 100);
sv2lin = linspace(min(sv2), max(sv2), 100);
[sXv, sYv] = meshgrid(sv1lin, sv2lin);
sZv = griddata(sv1,sv2,sv3,sXv,sYv, 'cubic');
figure
mesh(Xv, Yv, Zv)
xlabel('Xv')
ylabel('Yv')
zlabel('Zv')
hold on
axis tight
mesh(sXv, sYv, sZv)
title('The complete surface by using Griddata interpolate on V vectors')
figure
mesh(Xv, Yv, Zv)
xlabel('Xv')
ylabel('Yv')
zlabel('Zv')
hold on
axis tight
title('The half surface by using Griddata interpolate on V vectors')
As the obtained solutions are not uniformly distributed, I have used the griddata() to generate some uniformly spaced points to be able to plot the desired surface. However, the problem is that I cannot get to the complete rotated ellipsoid. Please see the attached photos. The blue points are the points which have been obtained by solving the equation. From mathematics, I know that the equation above is a rotated ellipsoid, but I cannot get there and always there is some part missing.
Is there any idea on how I can find some more points on the ellipsoid by solving the equation (or using some other techniques) which help me to plot the entire ellipsoid?
I should say that I have asked this question in another way here. However, as it has not received any notable attention, I tried to ask my question in a new way here.
Any help would be appreciated.

답변 (1개)

Matt J
Matt J 2021년 9월 21일
편집: Matt J 2021년 9월 21일
If you have the center, radii, and yaw-pitch-roll angles (in degrees) of the ellipsoid, you can plot a data-free ellipsoidalFit object using,
The final section in the Examples tab at this link gives examples of this, but basically it is,
gtEllip=ellipsoidalFit.groundtruth([],center,radii,yaw_pitch_roll);
plot(gtEllip)
  댓글 수: 3
Matt J
Matt J 2021년 9월 22일
it is possible to set the color in your tool set
Yes, definitely. Plenty of examples of that at the link I gave you.
or if it is possible to have the figure as a mesh
Not directly, but you can use the gtEllip.sample() method to get surface points on the ellipse and then use alphaShape() to get a mesh, as we talked about in another thread today.
or to add the axis at the origin?
You can use line() to add lines to the plot.
Majid
Majid 2021년 9월 23일
편집: Majid 2021년 9월 23일
Thank you Matt for your explanations! As always, very helpful! I could not find out the yaw-pitch-roll angles. Actually, my main aim is not to plot the solutions of the above equation, but it is to plot the solutions of a system of differential equations in which the solutions of the above equation are used as initial conditions. However, as for a special case, the solutions of the system and the equation were the same, so I asked the question here in this way.
Anyway, your reply to my comment in another thread worked very well and saved me! Thank you so much!!!
If it is possible, I would like to know what your field of research is.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Matrix Computations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by