[Matlab] funzione di corrente

Messaggioda fabio2290 » 12/07/2011, 14:58

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);
fabio2290
Starting Member
Starting Member
 
Messaggio: 16 di 36
Iscritto il: 18/01/2011, 12:46

Re: [Matlab] funzione di corrente

Messaggioda Lucainaerna » 21/11/2013, 12:08

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);
Lucainaerna
Starting Member
Starting Member
 
Messaggio: 1 di 2
Iscritto il: 21/11/2013, 12:03


Torna a Ingegneria

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite