numerikPro

141 days ago by chrisA

Numerische Mathematik 1

Projekt 9

 

 

Transformierte Gauß-Legendre Integrationsformel und absoluter Fehler im vergleich zum exakten Integral

def legendquadrat(f,n,a,b): def P(n): return 1/(2^n * factorial(n))*(diff((x^2 - 1)^n,x,n)) sol=[] for i in solve(P(n+1)==0,x): sol.append(i.rhs()) sol = [i.rhs() for i in solve(P(n+1)==0,x)] scale(t) = (t*(b-a)+a+b)/2 sum = 0 def L(i,n): prod = 1 for j in range(n+1): if j != i: prod = prod*((x - sol[j]) / (sol[i] - sol[j])) return prod for i in range(n+1): sum = sum + integrate(L(i,n),-1,1)*f(scale(sol[i])) return ((b-a)/2)*sum 
       
exaktes Integral
f(x)=e^(-x^2) exactint=integrate(f(x),0,1).n() print "Exactes Integral" print exactint 
       
Exactes Integral
0.746824132812427
Exactes Integral
0.746824132812427
n=2 int = legendquadrat(f,n,0,1) print "Legendre-Gauss-Formel für n=",(n) print int.n() print "Fehler:" print abs(exactint - int).n() 
       
Legendre-Gauss-Formel für n= 2
0.746814584191256
Fehler:
9.54862117114041e-6
Legendre-Gauss-Formel für n= 2
0.746814584191256
Fehler:
9.54862117114041e-6
n=4 int = legendquadrat(f,n,0,1) print "Legendre-Gauss-Formel für n=",(n) print int.n() print "Fehler:" print abs(exactint - int).n() 
       
Legendre-Gauss-Formel für n= 4
0.746824126766248
Fehler:
6.04617878680047e-9
Legendre-Gauss-Formel für n= 4
0.746824126766248
Fehler:
6.04617878680047e-9
n=8 int = legendquadrat(f,n,0,1) print "Legendre-Gauss-Formel für n=",(n) print int.n() print "Fehler:" print abs(exactint - int).n() 
       
Legendre-Gauss-Formel für n= 8
0.746824132812427 - 2.45995896108446e-17*I
Fehler:
3.06300749456093e-16
Legendre-Gauss-Formel für n= 8
0.746824132812427 - 2.45995896108446e-17*I
Fehler:
3.06300749456093e-16
g(x)=ln(4-x^2) exactint2=integrate(g(x),1,2).n() print "Exactes Integral" print exactint2 
       
Exactes Integral
0.249340578475233
Exactes Integral
0.249340578475233
n=2 int = legendquadrat(g,n,1,2) print "Legendre-Gauss-Formel für n=",(n) print int.n() print "Fehler:" print abs(exactint2 - int).n() 
       
Legendre-Gauss-Formel für n= 2
0.301668227862591
Fehler:
0.0523276493873574
Legendre-Gauss-Formel für n= 2
0.301668227862591
Fehler:
0.0523276493873574
n=4 int = legendquadrat(g,n,1,2) print "Legendre-Gauss-Formel für n=",(n) print int.n() print "Fehler:" print abs(exactint2 - int).n() 
       
Legendre-Gauss-Formel für n= 4
0.270339586188402
Fehler:
0.0209990077131685
Legendre-Gauss-Formel für n= 4
0.270339586188402
Fehler:
0.0209990077131685
n=8 int = legendquadrat(g,n,1,2) print "Legendre-Gauss-Formel für n=",(n) print int.n() print "Fehler:" print abs(exactint2 - int).n() 
       
Legendre-Gauss-Formel für n= 8
0.256350652365283 + 1.81004827173597e-17*I
Fehler:
0.00701007389004994
Legendre-Gauss-Formel für n= 8
0.256350652365283 + 1.81004827173597e-17*I
Fehler:
0.00701007389004994