numerikPro

133 days ago by anonymTm

Numerische Mathematik 1

Projekt 9

 

 

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

def x_n(f, n, k): xn=(cos((4*k + 3)* pi/ (4*n + 6))).n(); g = diff(f, x); if k == 0: return xn.n(); for i in range (1,k): f_x = f.subs(x=xn); g_x = g.subs(x=xn); if g_x != 0: xn= xn - (f_x/g_x); return xn.n(); 
       
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 range(0, n+1): sol.append(x_n(f,n,i)); #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.734514199732866
Fehler:
0.0123099330795607
Legendre-Gauss-Formel für n= 2
0.734514199732866
Fehler:
0.0123099330795607
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.743453500587047
Fehler:
0.00337063222538037
Legendre-Gauss-Formel für n= 4
0.743453500587047
Fehler:
0.00337063222538037
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.746189755762902
Fehler:
0.000634377049525181
Legendre-Gauss-Formel für n= 8
0.746189755762902
Fehler:
0.000634377049525181
n=16 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= 16
0.746687697616846
Fehler:
0.000136435195581264
Legendre-Gauss-Formel für n= 16
0.746687697616846
Fehler:
0.000136435195581264
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.434950265310012
Fehler:
0.185609686834779
Legendre-Gauss-Formel für n= 2
0.434950265310012
Fehler:
0.185609686834779
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.672952336671801 - 0.914077495123710*I
Fehler:
1.29852296414890
Legendre-Gauss-Formel für n= 4
-0.672952336671801 - 0.914077495123710*I
Fehler:
1.29852296414890
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
-3.57866198698061 - 1.91487925376588*I
Fehler:
4.28022968982267
Legendre-Gauss-Formel für n= 8
-3.57866198698061 - 1.91487925376588*I
Fehler:
4.28022968982267
n=16 int = legendquadrat(g,n,1,2) print "Legendre-Gauss-Formel für n=",(n) print int print "Fehler:" print abs(exactint2 - int).n() 
       
Legendre-Gauss-Formel für n= 16
-10.684354193 - 19.0891807601*I
Fehler:
21.9986932213699
Legendre-Gauss-Formel für n= 16
-10.684354193 - 19.0891807601*I
Fehler:
21.9986932213699