Importer:Error:WasEmpty



  • Hi,

    ich lerne momentan in der Uni C++ und muss grad eine Aufgabe machen!
    Leider bin ich damit völlig überfordert, da ich zum einen das mathematische Problem nicht ganz durchschaue, als auch die für die Implementation nötigen Kenntnisse in C++ nicht besitze. ich könnte ein paar Tipps wirklich gut gebrauchen!

    der folgende Text stellt meine Aufgabe dar:

    (ich bitte die schlechte Formatierung zu entschuldigen, ich hab mir mühe gegeben es möglichst sinnvoll zu kopieren und anzupassen!)

    Interpolation

    Schreiben Sie ein Programm, das das Neville-Aitken-Schema auf dem Bildschirm ausgibt.
    Es gibt zwei Parameter für das Verfahren, einen Fließkommawert x und einen ganzzahligen Wert n.
    Dabei ist x die Stelle an der eine Interpolation einer Funktion f : R ! R mit Hilfe von Polynomen vorgenommen
    werden soll.
    Dazu werden n+1 Funktionswerte f(x0); f(x1); : : : ; f(xn) an den Stützstellen x0; x1; : : : ; xn
    vorgegeben. Das heißt das Verfahren erwartet n+1 Stützstellen und n+1 entsprechende Funktionswerte
    als Eingabedaten.

    Das Neville-Aitken-Schema sieht zum Beispiel für n = 2 so aus:

    x0 f(x0)
    x1 f(x1) P1;1
    x2 f(x2) P2;1 P2;2
    Dabei sind die Pi;k wie folgt definiert:

    Pi;k := Pi;k􀀀1 +
    x 􀀀 xi
    xi 􀀀 xi􀀀k
     (Pi;k􀀀1 􀀀 Pi􀀀1;k􀀀1) i; k 2 f1; : : : ; ng (1)
    Dabei gilt P0;0 = f(x0); : : : ; Pn;0 = f(xn). Eine Ausgabe einer möglichen Implementierung könnte so
    aussehen, wobei hier die Funktion sin(x) an der Stelle 3.141529 interpoliert werden soll.

    ./ a . out 3.141529 6 < in . t x t
    x : 3.14153
    n : 6
    Please give the 7 x [ i ] values :
    Please give the 7 func t ion values :
    The fol lowing data was submitted :
    f ( 0 . 7 ) : 0.644218
    f ( 1 . 7 ) : 0.991665
    f ( 2 . 2 ) : 0.808496
    f ( 2 . 7 ) : 0.42738
    f ( 3 . 2 ) : 􀀀0.0583741
    f ( 3 . 7 ) : 􀀀0.529836
    f ( 4 ) : 􀀀0.756802
    0 . 7 0 . 6 4
    1 . 7 0 . 9 9 1 . 5
    2 . 2 0 . 8 1 0 . 4 6 􀀀0.18
    2 . 7 0 . 4 3 0 .0 9 1 􀀀0.074 􀀀0.05
    3 . 2 􀀀0.058 􀀀0.0016 0.0038 0.00081 􀀀0.00037
    3 . 7 􀀀0.53 􀀀0.0032 􀀀0.0023 􀀀2.1e􀀀05 0.00021 0.0001
    4 􀀀0.76 􀀀0.11 0.0044 􀀀4e􀀀05 􀀀3.1e􀀀05 5 . 9 e􀀀05 7e􀀀05
    Der Wert ganz unten rechts (7e-05) entspricht dem interpoliertem Wert der Funktion sin an der Stelle
    3.141529. Es wurde bei dem Aufruf von a.out eine Umleitung der Standardeingabe benutzt (< in . txt).

    Dabei werden alle Eingaben, die normalerweise von der Tastatur erwartet werden aus der Datei in . txt
    gelesen. Die verwendete Datei in . txt kann im Repository heruntergeladen werden.

    Hauptprogramm (main)

    Nachdem Ihr Programm die Werte x und n per Kommandozeilenparameter erhalten hat, sollen die
    Stützstellen x0; x1; : : : ; xn von der Standardeingabe (cin) eingelesen werden. Ist dies geschehen, werden
    danach die Funktionswerte f(x0), f(x1), : : :, f(xn) ebenfalls von der Standardeingabe eingelesen.
    Allokieren Sie ein ein-dimensionales Array für die Stützstellen und ein zwei-dimensionales Array,
    das die Werte für Pf0;:::;ng;f0;:::;ng Werte aufnehmen soll. Beachten Sie dabei, dass die Zeilen des Arrays
    unterschiedliche Längen haben.
    Berechnung (6 Punkte)
    Implementieren Sie eine Funktion mit der Signatur
    double computeP ( double x , double  s t u e t z s t e l l e n ,
    double P , i n t i , i n t k ) ;
    die die Berechnung des Arrays P mit Hilfe der Formel (1) vornimmt. Dabei liefert computeP den Wert
    P1;2, wenn der Parameter i den Wert 1 hat und der Parameter k den Wert 2 hat.

    Implementieren Sie eine Funktion mit der Signatur

    void pr int_schemata ( i n t n , double  s t u e t z s t e l l e n , double  P)
    das die Ausgabe des Neville-Aitken-Schema ermöglicht. Benutzen Sie dabei die formatierte Ausgabe
    von C++. Die Feldbreite für die Werte des Schema soll 12 betragen, die Präzision von cout soll auf 2
    festgesetzt werden.



  • Hm, 2 Tipps: Sorge dafür, dass man die Aufgabenstellung lesen kann; und dann stelle eine konkrete Frage.


Log in to reply