Morgoth
Captain
- Registriert
- Juli 2002
- Beiträge
- 3.889
Und meine Methode ist noch viel zu langsam:
Was habe ich mir nur dabei gedacht? Viel zu viele Multiplikationen.
So gehts schneller:
Im ersten Codeschnipsel wären es n² Multiplikationen, im zweiten leidiglich 2*n. Bei hohen Polynomgraden sind das schon ein paar Sekündchen Rechenzeit.
Was meinst Du mit der Differenz?
Integration in Grenzen bedeutet, die Fläche zwischen der Funktion und der Argument-Achse zu berechnen. Das mit einem Computer analytisch zu lösen ist ziemlich kompliziert, numerisch aber nicht. Du nimmst Dir einfach ein möglichst kleines Funktionsstück und berechnest die Fläche davon. Das wäre bei meiner Methode
s ist die Schrittweite, multipliziert mit dem geometrischen Mittelwert der beiden Stützstellen. Auf diese berechnete Fläche addiere ich alle weiteren kleinen Flächen, bis die obere Grenze erreicht ist.
Gruß
Morgoth
Code:
summe=0.0;
for (n=Grad;n>=0;n--)
{
summe+=Koeffizient[n]*x^n;
//für x^n gibts auch irgendeine Funktion
//oder selber schreiben, ist nur ne for-Schleife
}
Was habe ich mir nur dabei gedacht? Viel zu viele Multiplikationen.
So gehts schneller:
Code:
float help;
[...]
summe=0.0;
help=x;
for (n=0;n<=Grad;n++)
{
summe+=Koeffizient[n]*help;
help*=help;
}
Im ersten Codeschnipsel wären es n² Multiplikationen, im zweiten leidiglich 2*n. Bei hohen Polynomgraden sind das schon ein paar Sekündchen Rechenzeit.
Was meinst Du mit der Differenz?
Integration in Grenzen bedeutet, die Fläche zwischen der Funktion und der Argument-Achse zu berechnen. Das mit einem Computer analytisch zu lösen ist ziemlich kompliziert, numerisch aber nicht. Du nimmst Dir einfach ein möglichst kleines Funktionsstück und berechnest die Fläche davon. Das wäre bei meiner Methode
Code:
s*(Funktionswert(x+s)+Funktionswert(x))/2;
s ist die Schrittweite, multipliziert mit dem geometrischen Mittelwert der beiden Stützstellen. Auf diese berechnete Fläche addiere ich alle weiteren kleinen Flächen, bis die obere Grenze erreicht ist.
Gruß
Morgoth