Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

21.09.2006, 12:12

Integralrechnung

So ch habe mal mit C++,
von der Buch CD (C++ für Spieleprogrammierer)
ein Programm geschrieben zur Berechnung von Integralen.

//Mathe1.1
//Integralrechnung y= a*x*x + b*x + c
//
#include <iostream>

using namespace std;

//Hauptprogramm
//
float main ()
{
//Variablen
//
float fa;
float fb;
float fc; // Parameter
float fm; //Vordere Grenze
float fn; //hintere Grenze

cout << "Berechnet werden soll das Integral von m bis n von der Funktion y= a*x*x + b*x +c" <<endl;
cout << "Geben sie a ein: ";
cin >> fa;

cout << "Geben sie b ein: ";
cin >> fb;

cout << "Geben sie c ein: ";
cin >> fc;

cout << "Geben sie die untere Grenze m ein: ";
cin >> fm;

cout << "Geben sie die obere Grenze n ein: ";
cin >> fn;

//Der Flächeninhalt
//
float fz = 0;

//Die Breite
//
float fdx = 0;

//Die Höhe
//
float fy = 0;

//Die Variable
//
float fx = 0;

//Berechnungen
//
fdx = (fn-fm) / 1000.0f;
fx = fm - fdx / 2.0f;

//Berechnung durchlaufen

for (int i=1; i<= 1000; i++)
{
//Berechnungen
//
fx = fx + fdx;
fy = (fa * fx * fx + fb * fx + fc);
if (fy < 0)
fy = -fy;
fz += fy * fdx;
}


//Ergebnis ausgeben
//
cout << "Das Integral von m bis n der Funktion y ist: " << fz << endl;

return 0;
}

So verwendet habe ich den Datei Typ float.
Problem bei Integralen ist, das einige Negativ sind und andere eben positiv,
aber wenn ich das Integral von m bis n nehmen will und einige teile davon positiv sind und andere negativ kommt ja der falsche Flächeninhalt raus (also wenn ich den Flächeninhalt haben will.
Das Problem habe ich aber in den Griff bekommen.

So meine Probleme:

Einige Funktionen sind ja nun nicht überall stetig, und es gibt nicht überall ein Integral, da sie an einigen stellen eben nicht definiert sind.
Wie sage ich den Programm jetzt, nur bis dort das Integral und dann von dort weiter (Z.B. 8/x).

Wie bekomme ich eine größere Genauigkeit hin. Sprich "float" hat ja nur eine gewisse genauigkeit, welcher ist besser.
habe z.B. "double float" probiert, aber den kennt er nicht.

auch wllte ich das Prolbem mit dem positiven und negativen durch ein Betrag lösen (also "abs"). Aber abs ist ja nur für integer und "fabs" sagt er wieder nicht deklarierter Datei Typ.

Wie kann man das Programm noch einfacher schreiben?

Ich will ein Programm haben womit ich jedes Integral (fast) berechnen kann, mit möglichst wenig arbeit für mich, will also nicht erst jede polstelle selber berechnen usw.
________________________________________________________

Ist das Programm so vom Buch nun eigentlich vollständig nutzbar?
Oder was davon ist nicht vollständig (bin Neuling beim programmieren)

Wo bekommt man nun die Volständige Version kostengünstig her?

Danke für alle antworten.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

21.09.2006, 12:33

Re: Integralrechnung

Zitat von »"KaiserHannes"«

"double float" probiert, aber den kennt er nicht.

Weil es einfach nur "double" heißt.

Zitat von »"KaiserHannes"«

Aber abs ist ja nur für integer und "fabs" sagt er wieder nicht deklarierter Datei Typ.

Nicht deklarierter Dateityp?!
Du musst <cmath> #includen.

Zitat von »"KaiserHannes"«

Ich will ein Programm haben womit ich jedes Integral (fast) berechnen kann, mit möglichst wenig arbeit für mich, will also nicht erst jede polstelle selber berechnen usw.

Dann nimm ein Programm wie Derive, Maple oder Matlab. Sowas selbst zu programmieren ist mit extrem großem Aufwand verbunden.

Zitat von »"KaiserHannes"«

Ist das Programm so vom Buch nun eigentlich vollständig nutzbar?
Oder was davon ist nicht vollständig (bin Neuling beim programmieren)
Wo bekommt man nun die Volständige Version kostengünstig her?

Du meinst Visual C++?
Hol dir Visual C++ Express 2005, das ist kostenlos, 1000x besser als das veraltete Visual C++ 6 und, soweit ich weiß, unbeschränkt nutzbar.

Anonymous

unregistriert

3

21.09.2006, 12:38

Re: Integralrechnung

Zitat von »"David Scherfgen"«


Du meinst Visual C++?
Hol dir Visual C++ Express 2005, das ist kostenlos, 1000x besser als das veraltete Visual C++ 6 und, soweit ich weiß, unbeschränkt nutzbar.


Kleine Ergänzung: http://old.germangamedev.de/index.php?site=article&id=28

Und ich habe noch keine Beschränkungen entdeckt. :p

4

21.09.2006, 13:14

danke ersteinmal,

muß ich dafür jetzt visual C++6 deinstallieren?

oder geht das auch nebeneinander?

danke

Anonymous

unregistriert

5

21.09.2006, 13:24

Deinstallier das, ist eh schwachsinnig das drauf zu haben, wenn du
dich nach ein paar Tagen an VS C++ 2005 Express gewöhnt hast,
willst du es nie wieder hergeben! ;)

john

Alter Hase

Beiträge: 786

Beruf: Schüler

  • Private Nachricht senden

6

21.09.2006, 13:25

Geht auch "nebeneinander". ;)

edit: zu spät. klar kannst dus auch runterhaun, aber wenn du willst kannst dus vorerst noch dazu drauflassen ( ich bin am anfang ziemlich schnell von der 6er Edition abgekommen ).
mfg
john

7

22.09.2006, 23:12

Also.
Du scheinst ja eine Schliefe zur Berechnung zu benutzen, d.h. offensichtlich sowas wie Unter+Obersumme.
Mathematisch korrekt wäre es ja, die Stammfunktion zu finden (integreiren, bzw. aufleiten) was allerdings auf dem Papier bei komplexeren Funktionen sauschwer ist, und automatisch auf nem Rechner ncoh viel schwerer.
Das Problem mit dem + und - ist klar, du must halt die Nullstellen ausrechnen und dann die Strekce in Tiele zerteilen und von denen jeweils den abs wert nehmen.
Allerdings nur manchmal, bei bestimmten Aufgaben ist es sehr gut, das da was negatives rauskommen kann (also sollte das eine optionale Funktion sein).
Lieber dumm fragen, als dumm bleiben!

8

26.09.2006, 13:19

ja im endefekt hast du da komplett recht,

muß man sich dann halt immer so umschreiben wie man es braucht,

das mit der stammfunktion ist nicht ganz richtig,

die will ich ja in diesem fal l eben nicht,

diese sagt ja auch nur das aus, was ich so ausrechne.

wenn man natürlich eine stammfunktion braucht, denke ich sollte man es noch per hand probieren.

das programm ist eigentlich dafür da um aber eben dieses nicht tun zu müssen, wenn man halt nur ein bestimmtes integral will.

Werbeanzeige