Just nu i M3-nätverket
Gå till innehåll

Finita differansmetoden i Matlab


jeppe_1

Rekommendera Poster

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

Länk till inlägg
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.



×
×
  • Skapa nytt...