1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Langzahlarithmenitk in C++

Dieses Thema im Forum "OS X-Developer" wurde erstellt von wastel, 12.11.07.

  1. wastel

    wastel Grahams Jubiläumsapfel

    Dabei seit:
    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;
    }
    
     
  2. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    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?
     
  3. wastel

    wastel Grahams Jubiläumsapfel

    Dabei seit:
    14.02.07
    Beiträge:
    107
    reicht nicht.


    Ich hätte gern 100 oder so
     
  4. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    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.
     
  5. wastel

    wastel Grahams Jubiläumsapfel

    Dabei seit:
    14.02.07
    Beiträge:
    107
    Aufgabe für Numerische Mathematik ;). Der Prof verlangts.....
     
  6. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    ... dann frag ich jetzt als Numeriker mal nicht, welcher Prof solche Aufgaben stellt. ;)
     
  7. wastel

    wastel Grahams Jubiläumsapfel

    Dabei seit:
    14.02.07
    Beiträge:
    107
    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
     
  8. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Kannst gerne mal meine Homepage besuchen. ;)
     
  9. wastel

    wastel Grahams Jubiläumsapfel

    Dabei seit:
    14.02.07
    Beiträge:
    107
    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
     

Diese Seite empfehlen