Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Brauche Hilfe bei einem Programm!!! Es geht um Integralberechnung



donguz
24.05.2006, 22:47
Hi Leute
ich brauch Hilfe bei einem Programm für die Schule.Es geht um Integralrechnung.
Es soll eine Funktion numerisch Integriert werden. Man kann dazu verschiedene Näherungsverfahren benutzen. Grundidee dieser Verfahren ist es, die gesuchte Gesamtfläche in Teilflächen aufzugliedern und diese aufzusummieren. Die Wahl des Verfahrens ist den Gruppen selbst überlassen.

Dabei geht es um folgende Funktion:

[
f(x)= m* 1/ X hoch n also in Worten: m mal 1 durch x hoch n


Leider bin ich nicht so gut im Programmieren, desshalb weiß ich nicht wie ich das machen soll.
Das ganze muss in C++ sein.
Wär echt nett wenn mir jemand helfen könnte.
Schanmal Danke


Donguz

Jesus_666
25.05.2006, 14:07
#include <math.h>

double f(double m, double n, double x)
{
return pow(m*(1/x), n);
}

Das wäre eine Funktion, die f(x) nachbildet.

Ineluki
25.05.2006, 15:52
#include <math.h>

double f(double m, double n, double x)
{
return pow(m*(1/x), n);
}

Das wäre eine Funktion, die f(x) nachbildet.
Ich glaube, er meinte ehr

#include <math.h>

double f(double m, double n, double x)
{
return m*pow(1/x, n);
}

Die Numerische Integration mit Flaechenteilung geht folgendermassen. Wenn du das Integral von A nach B bestimmen willst, unterteilst du die Strecke AB in n Intervalle konstanter Breite R = (B-A) / n. Nun bildest du die Flaeche der Rechtecke mit Breite R und Hoehe f(A+i*R), wobei i von 1 bis n laeuft. Die Summe der Flaechen gibt naehrungsweise das Integral wieder. Wenn du nun die Zahl n kontinuierlich erhoehst, bis sich die Summe der Flaechen nur noch um einen Betrag aendert, der unterhalb deiner gewuenschten Genauigkeit liegt, dann hast du den Numerischen Wert des Integrals bestimmt. Fuer n gegen Unendlich geht der Zahlenwert der Summe in das exakte Integral ueber.

Ein kleines Codebeispiel ...



double integral(double A, double B, int n) {
double R = (B-A)/n;
double summe = 0;
for (int i=1; i<=n; ++i)
summe += R * f (A + i * R);
return summe;
}

double berechne(double A, double B, double genauigkeit) {
int n=2;
double old=0, new=0;
while (abs((new = integral(A,B, n++)) - old) > genauigkeit )
old = new;
return new;
}

Jesus_666
25.05.2006, 17:00
Ich glaube, er meinte ehr

#include <math.h>

double f(double m, double n, double x)
{
return m*pow(1/x, n);
}
In der Tat. Da habe ich eindeutig Unsinn geschrieben (oder eher gesagt, ich habe seine Formal unsinnig geparst).