Differences between revisions 1 and 4 (spanning 3 versions)
Revision 1 as of 2010-02-01 09:46:51
Size: 185
Editor: anonymous
Comment:
Revision 4 as of 2010-02-01 09:51:14
Size: 1005
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:

= Einführung in die Grundlagen der Numerik und das Programmieren unter Unix/Linux =

== Iterative Verfahren zur Bestimmung von Nullstellen ==

== Finite Differenzen Methode zur Lösung der Advektionsgleichung ==

{{{!#python

from pylab import *

L=100 #raeumlich
M=500 #zeitschritte
#c=0.1 #oder unten als sinus def
dx=1./L
dt=1./10
X=linspace(0,1,L)
u=zeros((M,L))
u[0,:]=exp(-500*(X-0.5)**2) #gaussfunktion
#u[0,45:55]=1. #rechteck

ion()
figure()
line,=plot(X,u[0,:])

for n in range(M-1):
    
    c=0.1*cos((n*dt)/10*pi)
    CFL=c*dt/dx
    for j in range(L-1):
        if CFL>0:
            u[n+1,j]=u[n,j]-CFL*(u[n,j]-u[n,j-1])
        else:
            u[n+1,j]=u[n,j]-CFL*(u[n,j+1]-u[n,j])
                                 
    line.set_ydata(u[n+1,:])
    draw()
}}}

Einführung in die Grundlagen der Numerik und das Programmieren unter Unix/Linux

Iterative Verfahren zur Bestimmung von Nullstellen

Finite Differenzen Methode zur Lösung der Advektionsgleichung

{{{!#python

from pylab import *

L=100 #raeumlich M=500 #zeitschritte #c=0.1 #oder unten als sinus def dx=1./L dt=1./10 X=linspace(0,1,L) u=zeros((M,L)) u[0,:]=exp(-500*(X-0.5)**2) #gaussfunktion #u[0,45:55]=1. #rechteck

ion() figure() line,=plot(X,u[0,:])

for n in range(M-1):

  • c=0.1*cos((n*dt)/10*pi) CFL=c*dt/dx for j in range(L-1):
    • if CFL>0:

      • u[n+1,j]=u[n,j]-CFL*(u[n,j]-u[n,j-1])
      else:
      • u[n+1,j]=u[n,j]-CFL*(u[n,j+1]-u[n,j])
    line.set_ydata(u[n+1,:]) draw()

}}}

LehreWiki: NumerikProgrammierenEinfuehrung2010 (last edited 2010-02-01 14:47:00 by AlexandraGronholz)