Error using mesh X, Y, Z., and C cannot be complex
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have this code:
*x1='Bucur',
x2='Mihai'
a=(single(uint8(x1(1)))+single(uint8(x2(2))))/2-60
%b=(numarul de ordine din grupa 92X)/4 (X=1,2,3,4,5,6,7);
b=2/4
%1.1. Sa se determine tangenta, normala si binormala la curba: [b*sin(t); b*cos(t); a*t*sin(t)*cos(t)], t=[-pi,pi],
%in punctele: t1=-2*pi/3, t2=pi/3
syms t
r=[0.5000*sin(t),0.5000*cos(t),25.5000*t.*sin(t).*cos(t)];
%Derivatele lui r:
rprim=diff(r);
rsec=diff(r,2);
rtert=diff(r,3);
r1xr2=cross(rprim,rsec);
rprim2=rprim(1)^2+rprim(2)^2+rprim(3)^2;
rprim_rsec=rprim(1)*rsec(1)+rprim(2)*rsec(2)+rprim(3)*rsec(3);
T=rprim./sqrt(rprim2) %Tangenta
Bvec=cross(rprim,rsec);
Bvec2=Bvec(1)^2+Bvec(2)^2+Bvec(3)^2
k=sqrt(Bvec2/rprim2) %Curbura
N=(rprim2*rsec-rprim_rsec*rprim)/rprim2^2 %Normala
B=cross(T,N) %Binormala
tau=(r1xr2(1)*rtert(1)+r1xr2(2)*rtert(2)+r1xr2(3)*rtert(3))/rprim_rsec^2 %Torsiunea
% tangenta, normala si binormala in t1=-2*pi/3
Tangenta=[subs(T(1),t,-2*pi/3),subs(T(2),t,-2*pi/3),subs(T(3),t,-2*pi/3)]
Normala=[subs(N(1),t,-2*pi/3),subs(N(2),t,-2*pi/3),subs(N(3),t,-2*pi/3)]
Binormala=[subs(B(1),t,-2*pi/3),subs(B(2),t,-2*pi/3),subs(B(3),t,-2*pi/3)]
Curbura=subs(k,t,-2*pi/3)
Torsiunea=subs(tau,t,-2*pi/3)
%tangenta, normala si binormala in t2=pi/3
Tangenta=[subs(T(1),t,pi/3),subs(T(2),t,pi/3),subs(T(3),t,pi/3)]
Normala=[subs(N(1),t,pi/3),subs(N(2),t,pi/3),subs(N(3),t,pi/3)]
Binormala=[subs(B(1),t,pi/3),subs(B(2),t,pi/3),subs(B(3),t,pi/3)]
Curbura=subs(k,t,pi/3)
Torsiunea=subs(tau,t,pi/3)
%1.2. Sa se determine lungimea curbei intre punctele mentionate.
%Definim elemtul de arc ce ne va da lungimea integralei
u=[-2*pi/3:0.001:pi/3];
elemarc=sqrt(rprim(1).^2+rprim(2).^2+rprim(3).^2)
lungimea=trapz(u,subs(elemarc,t,u))
%2.1. Sa se reprezinte grafic elipsoidul:
% r(u,v):=[u;a/b*sqrt(b2-u2)*cos(v);a/b*sqrt(b2-u2)*sin(v)];
% Observatie!
% sqrt(b^2-u^2)=>0. atunci -b<=u<=b.
figure;
u=linspace(-5,5,30);
v=linspace(0,2*pi,30);
[u,v]=meshgrid(u,v);
x=u;
y= 25.5000/0.5000*sqrt(0.5000^2-u.^2).*cos(v);
z= 25.5000/0.5000*sqrt(0.5000^2-u.^2).*sin(v);
mesh(x,y,z)
hold
%2.2. Sa se precizeze planul tangent in punctul u:=0, v:=2*pi/3.
% Ecuatia planului tangent intr-un punct si doua directii date.
syms u v
ruv=[u;36.5/4.75*sqrt(4.75^2-u.^2).*cos(v);36.5/4.75*sqrt(4.75^2-u.^2).*sin(v);];
ru=diff(ruv,1,u)
rv=diff(ruv,1,v)
x=u;
y= 25.5000/0.5000*sqrt(5^2-u.^2).*cos(v);
z= 25.5000/0.5000*sqrt(5^2-u.^2).*sin(v);
syms x1 y1 z1
%Calculam determinantul urmatoarei matrici:
A=[(x1-subs(x,{u,v},{0,2*pi/3})) (y1-subs(y,{u,v},{0,2*pi/3})) (z1-subs(z,{u,v},{0,2*pi/3}))
(subs(ru(1),{u,v},{0,2*pi/3})) (subs(ru(2),{u,v},{0,2*pi/3})) (subs(ru(3),{u,v},{0,2*pi/3}))
(subs(rv(1),{u,v},{0,2*pi/3})) (subs(rv(2),{u,v},{0,2*pi/3})) (subs(rv(3),{u,v},{0,2*pi/3}))]
d=det(A)
%(73*y1)/4 - (73*3^(1/2)*z1)/4 + 5329/4=0
%2.3 Aria elipsoidului
% x^2/b^2+y^2/a^2+z^2/a^2=1
% Suprafata elipsoid:
% S=2*pi*(a^2+c^2/sin(ae)*log((1+sin(ae)/cos(ae))), unde ae=arccos(c/a)
ae=acos(0.5000/25.5000)
S=2*pi*(25.5000^2+0.5000^2/sin(0.5000/25.5000)*log((1+sin(0.5000/25.5000))/cos(0.5000/25.5000)))*
and when i run it it gives me this error:
*Error using mesh X, Y, Z, and C cannot be complex.*
can you help me? Thanks
0 commentaires
Réponses (2)
Beatrice Balaceanu
le 14 Nov 2016
Try using the absolute value of the square root from the equation of the ellipsoid. Instead of typing sqrt(4.75^2-u.^2) , you could use abs(sqrt(4.75^2-u.^2)).
0 commentaires
Steven Lord
le 14 Nov 2016
Some of the code you wrote includes:
u=linspace(-5,5,30);
v=linspace(0,2*pi,30);
[u,v]=meshgrid(u,v);
x=u;
y= 25.5000/0.5000*sqrt(0.5000^2-u.^2).*cos(v);
The maximum value u can take is 5. Is sqrt(0.5^2-5^2) real or complex? That will determine whether y is real or complex in that snippet of code.
Did you intend for u to range from -0.5 to 0.5 instead of from -5 to 5?
0 commentaires
Voir également
Catégories
En savoir plus sur Computational Geometry dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!