• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

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;
}
 

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
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?
 

wastel

Grahams Jubiläumsapfel
Registriert
14.02.07
Beiträge
107
reicht nicht.


Ich hätte gern 100 oder so
 

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
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.
 

wastel

Grahams Jubiläumsapfel
Registriert
14.02.07
Beiträge
107
Aufgabe für Numerische Mathematik ;). Der Prof verlangts.....
 

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
... dann frag ich jetzt als Numeriker mal nicht, welcher Prof solche Aufgaben stellt. ;)
 

wastel

Grahams Jubiläumsapfel
Registriert
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
 

wastel

Grahams Jubiläumsapfel
Registriert
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