Integral berechnen < Fortran < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 14:38 Di 20.03.2012 | Autor: | bensca |
Aufgabe | Ich muss in Fortran ein Integral berechnen und zwar [mm] \integral_{0}^{r}{(alpha(r)+beta(r)) dr}. [/mm] Die Werte von alpha und beta sind bereits für jeder r vorgeschrieben und schon eingelesen. |
Also Code habe ich folgendes. Ist das so korrekt?
integral(:)=0.
do i=2, 2134
integral(i) = integral(i-1) + ((alpha(i-1)+alpha(i)+beta(i-1)+beta(i))/2.)
enddo
do i=2, 2134
integral(i) = integral(i) * (r(i)-r(i-1))
enddo
Damit müsste doch unter integral(i) die Integrale für alle r gespeichert sein, oder?
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 17:18 Di 20.03.2012 | Autor: | chrisno |
> [mm]\integral_{0}^{r}{(alpha(r)+beta(r)) dr}.[/mm] Die Werte von
r ist gleichzeitig Integrationsgrenze und Integrationsvariable. Das macht Probleme
> alpha und beta sind bereits für jeder r vorgeschrieben und
> schon eingelesen.
|
|
|
|
|
Hallo!
So wie ich das sehe, hast du eine Tabelle mit Werten für r, alpha und beta.
Damit kannst du das Integral natürlich über die Trapezregel berechnen.
Interessant wäre nun zu wissen, ob du das gesamte Integral berechnen sollst, oder wirklich alle Integrale von 0 bis zu beliebigen Werten von r. Du hast dich offensichtlich für letzteres entschieden.
Problematisch ist, daß du die Breite der einzelnen Trapeze erst in der zweiten Schleife berücksichtigst. Ich meine, du addierst die durchschnittliche Höhe aller Trapeze bis zu einem bestimmten i auf, und multiplizierst das dann mit der breite dieses i-ten Trapezes. Das ist falsch, wenn die Intervalle nicht alle gleich breit sind.
Die Multiplikation solltest du gleich in der ersten Schleife unterbringen.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:39 Mi 21.03.2012 | Autor: | bensca |
Richtig, ich hab eine Tabelle.
Ich brauche alle Integrale für alle r, da ich dann eine Kurve für den Integralwert in Abhängigkeit von r plotten muss.
Danke für den Tip mit der Trapezbreite. Das hab ich tatsächlich nicht beachtet. In meinem Fall sind die Trapeze zwar alle gleich breit, aber sauberer wärs anders. Daher hab ichs jetzt so geschrieben:
integral(:)=0.
do i=2, 2134
integral(i) = integral(i-1) + ((alpha(i-1)+alpha(i)+beta(i-1)+beta(i))/2.) * (r(i)-r(i-1))
enddo
|
|
|
|