• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Langzahlarithmenitk in C++

wastel

Grahams Jubiläumsapfel
Registriert
14.02.07
Beiträge
107
Hi.

Ich habe eine kleines Programm geschrieben zur Bestimmung von "5-te Wurzel 5" mit dem Bisektionsverfahren. Nun aber das Problem. Ich würde gern mehr signifikante Stellen in der Ausgabe haben, am besten in Verbindung mit einem bessern "genaueren" Datentyp als double oder float.


Code:
#include<iostream>
#include<stdlib.h>

using namespace std;


int main(){
    float fE = 0, fR = 0, fL = 0, fG=0, fF=1, fM=0;
    int n = 0;
    cout<<"Bitte geben Sie die Genauigkeit ihrer Approximation ein"<<"\n";
    cin>>fG;
    cout<<"Rechte Intervallgrenze"<<"\n";
    cin>>fR;
    cout<<"Linke Intervallgrenze"<<"\n";
    cin>>fL;
    while(fF > fG)
    {
        n = n+1;
        fF = fF / 2;
        fM = ((fR-fL)/2) + fL;
        if((fL*fL*fL*fL*fL-5)*(fM*fM*fM*fM*fM-5)>0)
        {
            fL = fM;
        }
        else
        {
            fR = fM;
        }
    }
    cout<<fM<<"\n";
    cout<<n;
    return 0;
}
 
Inkludier mal <iomanip> und stelle die Ausgabegenauigkeit hoch:
Code:
unsigned int old_precision = cout.precision(10);
cout << irgendwas;
...
cout.precision(old_precision);
Bei float kannst Du günstigenfalls mit 8 Nachkommastellen rechnen, bei double mit ca. 15. Oder reicht das nicht?
 
reicht nicht.


Ich hätte gern 100 oder so
 
Dann brauchst Du eine eigene Klasse als Ersatz für double. Google mal nach GMP oder schau hier unter "multiprecision". Aber wofür soll eine derart hohe Genauigkeit gut sein? Die Geschwindigkeit des Algorithmus wird auf jeden Fall drastisch leiden.
 
Aufgabe für Numerische Mathematik ;-). Der Prof verlangts.....
 
... dann frag ich jetzt als Numeriker mal nicht, welcher Prof solche Aufgaben stellt. ;-)
 
Ihm geht es ja nicht um die 1.000.000.000.000 te Stelle sondern um die Möglichkeit das es zu berechenn ist und die Genauigkeit des Algorithmus über die Lauzeit abzuschätzen ist.

Du Numeriker. In welchen Zusammenhang arbeitest du mit Numerik
 
Noch ne Frage.

Ich benutze Yacas for Mac, stelle jeoch fest, dass nicht alle Befehle in der Mac-Version funktionieren. Insbesondere die "Precision" Fkt. kann ich nicht benutzen um die Ergebnisse meines Programms abzuschätzen