//Dieses Datei wurde von Marcel Müller geschrieben und unter der GPL veröffentlicht //Informationen gibt es unter www.einfachsaufen.de //Autoren die das Script weiter bearbeiten dürfen ihre Änderungen an dieser Datei erst ab HIER vornehmen /* Einbindung der Bibliotheken Definition der Prototypen */ #include #include using namespace std; double naeherung(int grad, double *koeff, double *koeffA, double xnull); double ableitung(int grad, double *koeff, double *koeffA); /* Diese Funktion führt die eigentliche Ableitung durch. Es müssen hier zwei Parameter übergeben werden: Der Grad der Funktion und die Koeffizienten. */ double ableitung(int grad, double *koeff, double *koeffA) { int i; for(i=0;i 1.0e-10 && iter < MaxIter); //Prüfung ob sich noch etwas am Wert ändert, wenn nicht bricht die Schleife ab return xnull; } /*Diese Funktion fragt lediglich alle Einzugebenen Daten ab und gibt die Nullstelle aus. grad steht für den Grad der Funktion. koeff reserviert den Platz für die Koeffizienten, die Anzahl ist Grad+1 koeffA reserviert den Platz für die abgeleiteten Koeffizienten xnull steht für den Startwert. */ int main(void) { cout << "Bitte beachten Sie, dass das Ergebnis nur verwendbar ist wenn die Funktion auch eine Nullstelle besitzt." << endl; char r; int grad; double* koeff(0); double* koeffA(0); //Die Eingabe des Grades und der Koeffizienten kann ggf. wiederholt werden do { int i; cout << "Bitte geben Sie den Grad der Funktion ein: "; cin >> grad; cout << "Bitte geben Sie jetzt die Koeffizienten ein (absteigende Reihenfolge der Exponenten und 0 sowie den letztem Summanden beachten): " << endl; koeff = new double[grad+1]; koeffA = new double[grad+1]; // nur zur Sicherheit //Eingabe der Koeffizienten, bedingt durch den Grad der Funktion for(i=0;i<=grad;i++) //weil eine Funktion 5.Grades hat ja 6 Koeffizienten { cin >> koeff[i]; } cout << "Ist das Ihre Funktionsgleichung? " << endl; //Ausgabe der Koeffizienten, bedingt durch den Grad der Funktion for (i=0;i<=grad;i++) { if( i> r; if( r=='n') //Wenn die Koeffizienten nicht korrekt sind, werden die Arrays gelöscht { delete[] koeff; delete[] koeffA; } }while(r=='n'); //Wenn die ausgegebene Funktionsgleichung mit der des Benutzers übereinstimmt geht es hier weiter, anderfalls wird die Eingabe wiederholt. double xnull; cout << "Bitte geben Sie den Startwert x0 fuer die Naeherung an: "; cin >> xnull; //Eingabe des Startwertes ableitung(grad, koeff, koeffA); //Funktion zum Ableiten /* Bei der Prüfung der Funktion wichtig gewesen //Ausgabe der abgeleiteten Koeffizienten cout << endl << "Die abgeleiteten Koeffizienten sind: "; for(int i=0;i