Teilsummen aufsummieren < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 12:37 Mo 23.06.2008 | Autor: | Patr1ck |
Aufgabe | Berechnen Sie mit der Trapezsumme das Integral
x · [mm] e^{−x^2} [/mm] dx von 0 bis 2
Benutzen Sie dazu N = 100 Teilintervalle und wenden sie auf jedem einzelnen die Trapez-Regel an.
Vergleichen Sie das Ergebnis dieser Quadratur mit dem exakten Ergebnis. Geben sie den absoluten sowie
den relativen Fehler an. |
Ich habe für das Programm Scilab benutzt und bin soweit auch fast fertig, aber ein letzten entscheidenden Schritt bekomme ich nicht hin und zwar rechne ich in der for Schleife alle Teilsummen s(i) aus.
Wie kann ich diese nun aufsummieren?
Hier mein Programm:
function y = f(x)
y = x * [mm] exp(-x^2);
[/mm]
endfunction
for i=0:99
a = i/50;
b = (i + 1)/50;
s(i)
end
T = //Summe aller s(i)
I = intg(0,2,f)
Fehler_absolut = abs(T-I)
Fehler_relativ = abs(I/(T - I))
Die Frage hört sich sicher banal an, aber ich hab nix gefunden. Ich hoffe ihr könnt mir weiterhelfen. :)
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 13:14 Mo 23.06.2008 | Autor: | leduart |
Hallo
Kannst du deine for Schleife erklären? ich seh da nichts von Trapezregel,
Falls da irgendwas richtiges steht für s(i) müsste dahinter nur T=T+s(i)
mit Anfangswert T=0
der relative Fehler ist auch falsch.
Gruss leduart
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:24 Mo 23.06.2008 | Autor: | Patr1ck |
Tatsache, die Funktion war so nicht richtig.
Also hier nochmal so wie ichs mir gedacht hab:
function y = f(x)
y = x * [mm] exp(-x^2);
[/mm]
endfunction
function z = s(i)
z = ((b - a)/2) * (f(a) + f(b));
endfunction
for i=0:99
a = i/50;
b = (i + 1)/50;
S = s(i) + s(i+1);
end
T = S
I = intg(0,2,f)
Fehler_absolut = abs(T-I)
Fehler_relativ = abs(I/(T - I))
Leider funktioniert die Summation nicht richtig. Was hab ich falsch gemacht?
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 23:15 Mo 23.06.2008 | Autor: | Patr1ck |
habs doch noch rausgefunden. Falls jemand die Lösung interessiert:
function y = f(x)
y = x * [mm] exp(-x^2);
[/mm]
endfunction
//Funktion zur Berechnung der Trapezregel
function z = s(i)
z = ((b - a)/2) * (f(a) + f(b));
endfunction
//setze Startwert für S
S = 0;
//wende for Schleife für 100 Teilinveralle an, für die jeweils gilt: b-a = 1/50
for i=0:99
a = i/50;
b = (i + 1)/50;
//Dieser Befehl addiert zu der Startsumme = 0 jeweils den Wert von s(i) für jedes der Teilintervalle
S = S + s(i);
end
//Trapezsumme
S
//Exaktes Integal
I = intg(0,2,f)
Fehler_absolut = abs(S-I)
Fehler_relativ = abs((S-I)/I)
//Bei 100 Intervallen ist die Trapezregel sehr exakt und der beläuft sich auf 10^(-4)
//Trozdem ist das Verfahren gemessen an der Intervallänge und der Anzahl der Teilintervalle ineffektiv
|
|
|
|