Just nu i M3-nätverket
Jump to content

Finita differansmetoden i Matlab


jeppe_1

Recommended Posts

Hej

Vi har en svår uppgift där vi ska använda FDM för att beräkna hur en färgklump sprider sig i en kanal (se länken längst ner). Vi har lyckats skriva ut matrisen A som blir tridiagonal och sedan tänkte vi att vi lägger till steglängden h på alla positioner utom första och sista kolumnen där bara halva steglängden lagts till.

 

Så här ser det ut i matlabb

-------------------------------------------------

Diffusivitet = 0.005*(1+0.5*sin(2*pi*x));%%

PrimDiffusivitet = 0.005*cos(2*pi*x)*pi;

 

Matris = eye(s); rakna = 0; vektor = [];

 

if rakna < 20, a = 0.02; end

if rakna > 20, a = 0.06; end

if rakna == 20, a = 0.04; end

if rakna == 0, a = 0.04; end

 

if rakna == 39, rakna = 0;

else rakna = rakna + 1; end

 

vektor = [vektor;n-1 a];

 

A = Diffusivitet(n)/h^2-(PrimDiffusivitet(n)-a)/(2*h);

B = -2*Diffusivitet(n)/h^2;

C = Diffusivitet(n)/h^2+(PrimDiffusivitet(n)-a)/(2*h);

 

if n>1, Matris(n,n-1) = A; else Matris(n,end-1) = A; end

Matris(n,n) = B;

if n<s, Matris(n,n+1) = C; else Matris(n,2) = C; end

 

for m = 2:s-1 Matris(n,m) = Matris(n,m)+h; end

Matris(n,1) = Matris(n,1)+h/2;

Matris(n,s) = Matris(n,s)+h/2;

end

 

areav = ones(1,s)';

M0 = 0.51166

for n = 1:s

areav(n) = M0;

end

 

Y = Matris\areav;

------------------------------------------------------

När vi sedan plottar Y mot x så får vi bara en rak linje (alla Y-värderna blir M0/4) Antagligen ska vi göra något smartare med arean för grafen men vi kommer inte riktigt på vad. All hjälp kan vara bra.

 

Fråga om något verkar oklart eller om ni undrar något. Vi skickar även med vår matlabfil

 

3B.20: Färgränder — utspridd färg i randigt medium (sid 21)

http://www.csc.kth.se/utbildning/kth/kurser/DN1240/numo08/labbar/Lab3Buppgopen.pdf

Lab 3.zip

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...