Borrar filtros
Borrar filtros

Error using mesh X, Y, Z., and C cannot be complex

3 visualizaciones (últimos 30 días)
Mihai
Mihai el 14 de Nov. de 2014
Respondida: Steven Lord el 14 de Nov. de 2016
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

Respuestas (2)

Beatrice Balaceanu
Beatrice Balaceanu el 14 de Nov. de 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)).

Steven Lord
Steven Lord el 14 de Nov. de 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?

Categorías

Más información sobre Computational Geometry en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by