[Matlab] funzione di corrente

fabio2290
Ciao a tutti! (Premettendo che è la prima volta che uso matlab) Sto cercando di rappresentare le linee di corrente intorno ad un cilindro in 2D, ho provato a scrivere il tutto ma ho ancora dei piccoli problemi .Volevo sapere da voi cosa devo correggere,per quale motivo se metto elseif mi appare il tutto mentre con else mi esce solo la circonferenza e perché nel grafico compaiono quelle irregolarità sia al centro che subito dopo la circonferenza anche perché non so come creare la linea di corrente che è rappresentata dall'ascissa x e che una volta in cui r=R tale linea viaggia sul cilindro :

[x,y]=meshgrid(-3:.1:3);
r=sqrt(x.^2 + y.^2);
theta=asin(y./r);
R=1 ;
for i=1:length(x);
for j=1:length(x);
if sqrt(x(i,j).^2 + y(i,j).^2) == R;
r(i,j)=R;
elseif sqrt (x(i,j).^2 + y(i,j).^2) < R ;
x(i,j)= 0;
y(i,j)= 0;
end
end
end
warning off
psi=r.*sin(theta).*(1-(1./r).^2);
t=linspace(0,2*pi,100);
x1=R.*cos(t);
y1=R.*sin(t);
hold on
axis equal
plot(x1,y1);
contour(x,y,psi,100);

Risposte
Lucainaerna
Complimenti, ci stavo ragionando, prova a mettere questa parte, funziona,

for i=1:length(x);
for j=1:length(x);
if r(i,j)<1
r(i,j)=nan;
end
end
end


al posto del tuo ciclo for, il programma parte con qualsiasi dimensione del mesh, comunque bel lavoro e tra poco posterò anche il caso di cilindro portante





P.S.

sostituirei le parti dove ricavi theta e ro con la più pratica formulazione

[theta,r] = cart2pol(x,y);

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.