Numerische Integration nach der Trapezregel



  • Hallo,

    ich hab eine Aufgabe bekommen :

    Numerische Integration nach der Trapezregel

    Schreiben Sie ein Programm, welches das Integral

    I=(Integralzeichen) f(x)*dx

    der Funktion:

    f(x)=(Wurzel von x) * sin x

    nach der Trapezregel berechnet.
    Die Anzahl der Stützstellen soll maximal 20 betragen und vom
    Anwender vorgegeben werden können.
    **************************************

    ich habe nicht den geringsten Schimmer was hiermit gemeint sein könnte und bin absolut auf EURE Hilfe angewiesen, deshalb würde ich mich riesig freuen wenn ihr zahlreich antwortet.
    Vielen Dank

    Grüße Jenny



  • Wie wäre es denn hiermit: http://www.informatik.uni-leipzig.de/~meiler/GL.dir/GLWS05.dir/V05_Inf_Num_4_5_6.htm

    PS: Fürchte keine Fachbücher. Ungelesen sind sie völlig harmlos ...



  • Hehe nein ich fürchte nicht. Danke für deine Antwort!!
    Aber was kann ich denn konkret mit dem Programmbeispiel anfangen brauch ich da nicht bestimmte Bibliotheksdateien? Wir sollten mit dem Programm "Lcc win 32 " arbeiten ..



  • und was hat das mit .NET zu tun?

    in letzer Zeit landen hier recht viele C Fragen.

    wmmf



  • Dieser Thread wurde von Moderator/in AndreasW aus dem Forum C# und .NET in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Dieser Link hilft vielleicht: http://www.informatik.uni-leipzig.de/~meiler/GL.dir/GLWS05.dir/V05_Inf_Num_4_5_6.htm

    Schönes (arbeitsreiches) und erfolgreiches Wochenende



  • Jenny82 schrieb:

    ich habe nicht den geringsten Schimmer was hiermit gemeint sein könnte und bin absolut auf EURE Hilfe angewiesen, deshalb würde ich mich riesig freuen wenn ihr zahlreich antwortet.

    wo hakelt's denn? mathe- oder programmieren?
    btw: http://www.ica1.uni-stuttgart.de/~hilfer/lehre/100-online/skriptum/html_book00/node84.html
    🙂



  • hallo, sorry für das so lang nich melden !
    hab mittlerweile diesen code, scheint aber noch fehler zu haben wär nett wenn ihr nochmal drüberschauen könntet..

    float integral(float a, float b) // a, b: Integrationsgrenzen
    {
    float intervall = b-a;
    float d = intervall / 100; // 100 Trapeze, d: Breite der Trapeze

    float l = a;
    float r = a+d;
    float flaeche = 0;
    for (int i=0; i++; i<=100)
    {
    flaeche += (f(l) + f(r)) / 2 * d; // Trapezformel
    l = l + d;
    r = r + d;
    }
    return flaeche;
    }

    f(float x)
    {
    return sqrt(x) * sin(x);
    }

    vielen dank

    gruß jenny



  • for (int i=0; i++; i<=100) <-- hier steckt der Wurm.
    for ( i=0; i <= 100; i++ ) <-- entwurmt

    Dann würd ich noch float in double umwandeln.
    Ansonsten ist die Funktion ok, obwohl man sie etwas eleganter schreiben könnte.
    🙂

    Gruß,
    p.



  • dank dir!!! hab mir noch Hilfe von einem Kollegen geholt und das kam dabei raus:

    #include <math.h>

    float f(float x)
    {
    return sqrt(x) * sin(x);
    }

    float integral(float a, float b) // a, b: Integrationsgrenzen
    {
    float intervall = b-a;
    float d = intervall / 100; // 100 Trapeze, d: Breite der Trapeze

    float l = a;
    float r = a+d;
    float flaeche = 0;
    for (int i=0; i++; i<=100)
    {
    flaeche += (f(l) + f(r)) / 2 * d; // Trapezformel
    l = l + d;
    r = r + d;
    }
    return flaeche;
    }

    int main(void)

    der code funktioniert nur weiß ich nich wie ich die Eingabe gestaltet, wär super wenn mir dabei nochmal jemand helfen könnte!!
    Danke und viele grüße



  • @ proggingmania wenn ich das nach deiner art mache gibt er mir als fehlermeldung : undeklarierte variabel i

    trotzdem danke nochmal!!



  • so hab jetzt bissl weitergearbeitet, ich bekomm die fehlermeldungen einfach nich weg, bitte HELFT mir nochmal!!

    #include <math.h>
    #include <stdio.h>

    float f(float x)
    {
    return sqrt(x) * sin(x);
    }

    float integral(float a, float b) // a, b: Integrationsgrenzen
    {
    float intervall = b-a;
    float d = intervall / 100; // 100 Trapeze, d: Breite der Trapeze

    float l = a;
    float r = a+d;
    float flaeche = 0;
    for (int i=0; i++; i<=100)
    {
    flaeche += (f(l) + f(r)) / 2 * d; // Trapezformel
    l = l + d;
    r = r + d;
    }
    return flaeche;
    }

    int main(void)
    {
    float a, b, out;
    printf("Geben Sie die untere Integrationsgrenze ein: ") ; //Ausgabe auf Bildschirm
    30 scanf("%f", &a) ; //Einlesen der 1. Zahl in die Variable a
    31printf("Geben Sie die oberere Integrationsgrenze ein: ") ; //Ausgabe auf Bildschirm
    32scanf("%f", &b) ; //Einlesen der 2. Zahl in die Variable b
    33out = integral(a,b);
    34printf("Das Integral beträgt: %f\n", out); //Ausgabedes Ergebnisses auf den Bildschirm
    35return 0; //Rückgabecode (0=kein Fehler)
    }

    Warning e:\fachhochschule\lcc\2323.c: 18 Statement has no effect
    Error e:\fachhochschule\lcc\2323.c: 30 illegal statement termination
    Error e:\fachhochschule\lcc\2323.c: 30 skipping /'/'
    Error e:\fachhochschule\lcc\2323.c: 30 undeclared identifier 'Einlesen'
    Warning e:\fachhochschule\lcc\2323.c: 30 Statement has no effect
    Error e:\fachhochschule\lcc\2323.c: 30 Syntax error; missing semicolon before der' Error e:\\fachhochschule\\lcc\\2323.c: 30 undeclared identifier 'der' Warning e:\\fachhochschule\\lcc\\2323.c: 30 Statement has no effect Error e:\\fachhochschule\\lcc\\2323.c: 30 Syntax error; missing semicolon before1.'
    Error e:\fachhochschule\lcc\2323.c: 30 Syntax error; missing semicolon before Zahl' Error e:\\fachhochschule\\lcc\\2323.c: 30 undeclared identifier 'Zahl' Warning e:\\fachhochschule\\lcc\\2323.c: 30 Statement has no effect Error e:\\fachhochschule\\lcc\\2323.c: 30 Syntax error; missing semicolon beforein'
    Error e:\fachhochschule\lcc\2323.c: 30 undeclared identifier 'in'
    Warning e:\fachhochschule\lcc\2323.c: 30 Statement has no effect
    Error e:\fachhochschule\lcc\2323.c: 30 Syntax error; missing semicolon before die' Error e:\\fachhochschule\\lcc\\2323.c: 30 undeclared identifier 'die' Warning e:\\fachhochschule\\lcc\\2323.c: 30 Statement has no effect Error e:\\fachhochschule\\lcc\\2323.c: 30 Syntax error; missing semicolon beforeVariable'
    Error e:\fachhochschule\lcc\2323.c: 30 undeclared identifier 'Variable'
    Warning e:\fachhochschule\lcc\2323.c: 30 Statement has no effect
    Error e:\fachhochschule\lcc\2323.c: 30 Syntax error; missing semicolon before a' Warning e:\\fachhochschule\\lcc\\2323.c: 31 Statement has no effect Error e:\\fachhochschule\\lcc\\2323.c: 31 Syntax error; missing semicolon beforeprintf'
    Error e:\fachhochschule\lcc\2323.c: 32 illegal statement termination
    Error e:\fachhochschule\lcc\2323.c: 32 skipping /'/'
    Warning e:\fachhochschule\lcc\2323.c: 32 Statement has no effect
    Error e:\fachhochschule\lcc\2323.c: 32 Syntax error; missing semicolon before der' Warning e:\\fachhochschule\\lcc\\2323.c: 32 Statement has no effect Error e:\\fachhochschule\\lcc\\2323.c: 32 Syntax error; missing semicolon before2.'
    Error e:\fachhochschule\lcc\2323.c: 32 too many errors

    Vielen dank gruß jenny



  • Die for-Anweisung ist nach wie vor Blödsinn.
    Schreibe "for (int i=0; i<=100; i++)", dann klappts auch mit der Variable i



  • Ansonsten müsste es funktionieren. Welchen Compiler benutzt Du? Sieht irgendwie aus, als würde der keine Kommentarzeichen kennen.



  • hatte das schonmal ausprobiert da kam es irgendwie zu fehlermeldungen jetzt speziell zu der der for zeile keine fehlermeldung jedoch klappt das mit der eingabe immernoch nicht
    muss die evtl an eine andere stelle des codes?

    hier nochmal code + fehlercode

    #include <math.h>
    #include <stdio.h>

    float f(float x)
    {
    return sqrt(x) * sin(x);
    }

    float integral(float a, float b) // a, b: Integrationsgrenzen
    {
    float intervall = b-a;
    float d = intervall / 100; // 100 Trapeze, d: Breite der Trapeze

    float l = a;
    float r = a+d;
    float flaeche = 0;
    for (int i=0; i<=100; i++)
    {
    flaeche += (f(l) + f(r)) / 2 * d; // Trapezformel
    l = l + d;
    r = r + d;
    }
    return flaeche;
    }

    int main(void)
    {
    float a, b, out;
    printf("Geben Sie die untere Integrationsgrenze ein: ") ; //Ausgabe auf Bildschirm
    30 scanf("%f", &a) ; //Einlesen der 1. Zahl in die Variable a
    31 printf("Geben Sie die oberere Integrationsgrenze ein: ") ; //Ausgabe auf Bildschirm
    32 scanf("%f", &b) ; //Einlesen der 2. Zahl in die Variable b
    33 out = integral(a,b);
    34 printf("Das Integral beträgt: %f\n", out); //Ausgabedes Ergebnisses auf den Bildschirm
    35 return 0; //Rückgabecode (0=kein Fehler)
    }

    Warning e:\fachhochschule\lcc\2323.c: 18 Statement has no effect
    Error e:\fachhochschule\lcc\2323.c: 30 illegal statement termination
    Error e:\fachhochschule\lcc\2323.c: 30 skipping /'/'
    Error e:\fachhochschule\lcc\2323.c: 30 undeclared identifier 'Einlesen'
    Warning e:\fachhochschule\lcc\2323.c: 30 Statement has no effect
    Error e:\fachhochschule\lcc\2323.c: 30 Syntax error; missing semicolon before der' Error e:\\fachhochschule\\lcc\\2323.c: 30 undeclared identifier 'der' Warning e:\\fachhochschule\\lcc\\2323.c: 30 Statement has no effect Error e:\\fachhochschule\\lcc\\2323.c: 30 Syntax error; missing semicolon before1.'
    Error e:\fachhochschule\lcc\2323.c: 30 Syntax error; missing semicolon before Zahl' Error e:\\fachhochschule\\lcc\\2323.c: 30 undeclared identifier 'Zahl' Warning e:\\fachhochschule\\lcc\\2323.c: 30 Statement has no effect Error e:\\fachhochschule\\lcc\\2323.c: 30 Syntax error; missing semicolon beforein'
    Error e:\fachhochschule\lcc\2323.c: 30 undeclared identifier 'in'
    Warning e:\fachhochschule\lcc\2323.c: 30 Statement has no effect
    Error e:\fachhochschule\lcc\2323.c: 30 Syntax error; missing semicolon before die' Error e:\\fachhochschule\\lcc\\2323.c: 30 undeclared identifier 'die' Warning e:\\fachhochschule\\lcc\\2323.c: 30 Statement has no effect Error e:\\fachhochschule\\lcc\\2323.c: 30 Syntax error; missing semicolon beforeVariable'
    Error e:\fachhochschule\lcc\2323.c: 30 undeclared identifier 'Variable'
    Warning e:\fachhochschule\lcc\2323.c: 30 Statement has no effect
    Error e:\fachhochschule\lcc\2323.c: 30 Syntax error; missing semicolon before a' Warning e:\\fachhochschule\\lcc\\2323.c: 31 Statement has no effect Error e:\\fachhochschule\\lcc\\2323.c: 31 Syntax error; missing semicolon beforeprintf'
    Error e:\fachhochschule\lcc\2323.c: 32 illegal statement termination
    Error e:\fachhochschule\lcc\2323.c: 32 skipping /'/'
    Warning e:\fachhochschule\lcc\2323.c: 32 Statement has no effect
    Error e:\fachhochschule\lcc\2323.c: 32 Syntax error; missing semicolon before der' Warning e:\\fachhochschule\\lcc\\2323.c: 32 Statement has no effect Error e:\\fachhochschule\\lcc\\2323.c: 32 Syntax error; missing semicolon before2.'
    Error e:\fachhochschule\lcc\2323.c: 32 too many errors



  • lcc win 32 (ist vorgabe...)

    http://www.cs.virginia.edu/~lcc-win32/



  • Jenny82 schrieb:

    ...
    30 scanf("%f", &a) ; //Einlesen der 1. Zahl in die Variable a
    31 printf("Geben Sie die oberere Integrationsgrenze ein: ") ; //Ausgabe auf Bildschirm
    32 scanf("%f", &b) ; //Einlesen der 2. Zahl in die Variable b
    33 out = integral(a,b);
    34 printf("Das Integral beträgt: %f\n", out); //Ausgabedes Ergebnisses auf den Bildschirm
    35 return 0; //Rückgabecode (0=kein Fehler)
    ...

    mach links diese zahlen weg...
    du bist ja echt ein voll-NOOB, ne 😉



  • danke pale dog

    jedoch hab ich die nummerierung für euch dran geschrieben damit ihr nich nachzählen braucht ( im fehlercode is die zeile angegeben)



  • Versuchmal statt "//" zur Auskommentierung /* Dein Kommentar */ zu verwenden! 😉



  • Jenny82 schrieb:

    danke pale dog
    jedoch hab ich die nummerierung für euch dran geschrieben damit ihr nich nachzählen braucht ( im fehlercode is die zeile angegeben)

    benutz' doch die code tags.
    wenn du quelltext postest, fügst du am anfang ein *[*code] ein, und am ende ein [/code].
    ääh, vielleicht mag dein compiler keine // -kommentare?


Anmelden zum Antworten