Gauß-Quadratur mit Legendre-P < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) überfällig | Datum: | 09:26 Mi 05.05.2010 | Autor: | Ultio |
Hallo an Alle,
Ich habe dieses Semester mein Numerik-Praktikum und soll dafür unter anderem die Gauß-Quadratur implementieren.
Erstmal nur am Beispiel:
[mm] \integral_{0}^{1}{\bruch{1}{1+x^2} dx}
[/mm]
= [mm] \bruch{1}{2} \integral_{-1}^{1}{\bruch{1}{1+x^2} dx}
[/mm]
und dazu mein Code.
Doch vorher möchte ich gerne die fragen stellen:
Ich möchte die Gewichte berechnen. Ist es dafür günstiger die form des Produktes aufzuschreiben wie es im Code gemacht wird oder besser mit Gleichungssystem? Ist die Form im Code überhaupt richtig?
Wenn nein, kann mir dann jemand bitte helfen den zu berichtigen?
Oder zum Gleichungssystem:
mir bitte aufschreiben wie ich das GLS löse:
Bemerkung: nstleg sind Nullstellen der LegendrePolynome
[mm] \vektor{w(1) \\ w(2) \\...\\w(n)} [/mm] = [mm] \pmat{ 1 & 1& 1&...& 1 \\ nstleg(1) & nstleg(2)& nstleg(3)&...& nstleg(n)\\nstleg(1)^2 & nstleg(2)^2& nstleg(3)^2&...& nstleg(n)^2\\...\\nstleg(1)^n & nstleg(2)^n& nstleg(3)^n&...& nstleg(n)^n} [/mm] ^{-1} * [mm] \vektor{\integral_{a}^{b}{1 dx} \\ \integral_{a}^{b}{x dx} \\...\\\integral_{a}^{b}{x^n dx} }
[/mm]
in diesem Fall ist natürlich a= -1 und b=1
nun zum Code:
a = input('Bitte gebe die untere Intervallgrenze a an: a=');
b = input('Bitte gebe die obere Intervallgrenze b an: b=');
n = input('Bitte gebe die Anzahl der Teilintervalle n an: ');
y=legendre(n,x);
nstleg=roots(y); %Berechnung der Nullstellen des Legendrepolynoms, die gleich den Stützstellen sind
%Berechnung der Gewichte w(i) bzw. w(k) dazu nehme dir die i-te Nullstelle nstleg(k) und nutze alle anderen
%nstleg(j)ungleich nstleg(k) und nutze folgende Formel
%w(i) = maple('int(...),a,b;')
for k=1:n
for j=1:n
j~=k; %j soll ungleich k sein
w(k)=maple('int(prod( (x-nstleg(j)) / (nstleg(i)-nstleg(j)) ),x,a,b;');
end
end
Gauzws = 0; %Zwischensumme daher zws
for i=1:n
gauzws = gauzws + (w(i)*feval(fkt,(nstleg(i)))); %also die Summe der Gewichte multipliziert mit dem Funktionswert an der zugehörigen Stützstelle
end
Gauval = gauzws/2; %siehe Ansatz oben mit Integral
Vielen Dank.
Gruß
Felix
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 10:20 Sa 08.05.2010 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|