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 DankGrüß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 Trapezefloat 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++ ) <-- entwurmtDann 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 Trapezefloat 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 Trapezefloat 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 beforeder' 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 before
1.'
Error e:\fachhochschule\lcc\2323.c: 30 Syntax error; missing semicolon beforeZahl' 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 before
in'
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 beforedie' 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 before
Variable'
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 beforea' Warning e:\\fachhochschule\\lcc\\2323.c: 31 Statement has no effect Error e:\\fachhochschule\\lcc\\2323.c: 31 Syntax error; missing semicolon before
printf'
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 beforeder' Warning e:\\fachhochschule\\lcc\\2323.c: 32 Statement has no effect Error e:\\fachhochschule\\lcc\\2323.c: 32 Syntax error; missing semicolon before
2.'
Error e:\fachhochschule\lcc\2323.c: 32 too many errorsVielen 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 Trapezefloat 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 beforeder' 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 before
1.'
Error e:\fachhochschule\lcc\2323.c: 30 Syntax error; missing semicolon beforeZahl' 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 before
in'
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 beforedie' 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 before
Variable'
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 beforea' Warning e:\\fachhochschule\\lcc\\2323.c: 31 Statement has no effect Error e:\\fachhochschule\\lcc\\2323.c: 31 Syntax error; missing semicolon before
printf'
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 beforeder' Warning e:\\fachhochschule\\lcc\\2323.c: 32 Statement has no effect Error e:\\fachhochschule\\lcc\\2323.c: 32 Syntax error; missing semicolon before
2.'
Error e:\fachhochschule\lcc\2323.c: 32 too many errors
-
lcc win 32 (ist vorgabe...)
-
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?