Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
---- Algorithmen (http://www.informatikerboard.de/board/board.php?boardid=17)
----- C++ Maschinengenauigkeit und Summen (http://www.informatikerboard.de/board/thread.php?threadid=2564)


Geschrieben von eulerscheZahl am 15.11.2015 um 07:18:

 

Du bist bei Fehlermeldungen immer sehr ungenau. So kann ich nichts damit anfangen.
Du musst noch iostream einbinden. Das Endergebnis hast du nicht ausgegeben. Und Umlaute sind wie gesagt nicht empfehlenswert (der g++hat sie nicht akzeptiert)
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
#include <iostream>

using namespace std;

int main(int argc, const char * argv[]) {
	double zaehler = 1, nenner = 1;
	double sum = 1;
	double x;
	cout << "Geben sie x ein" << endl;
	cin >> x;
	for (int k = 1; k < 100; k++) {
		zaehler *= x;
		nenner *= k;
		sum += zaehler/nenner;
		cout<<"Der Summand ist "<< zaehler/nenner << endl;
	}
	cout<<"Die Summe ist "<< sum <<endl;
	return 0;
}



Geschrieben von Marcell99 am 15.11.2015 um 07:46:

 

Jaaa es hat geklappt
Da ist wieder eine Liste gekommen, ist damit die Aufgabe zu Ende oder???

Danke das du mir geholfen hättest, hätte ich alleine nie geschafft



Geschrieben von eulerscheZahl am 15.11.2015 um 07:53:

 

Du sollst dich noch um die Genauigkeit kümmern.
Wir summieren die Werte bis k=100 auf, weniger würde auch reichen für die geforderten 10^-6



Geschrieben von Marcell99 am 15.11.2015 um 07:55:

 

Aber das hängt doch davon ab was man für k einsetzt oder ??



Geschrieben von eulerscheZahl am 15.11.2015 um 07:59:

 

Das maximal nötige k wollen wir bestimmen. Und es hängt vom x ab.



Geschrieben von Marcell99 am 15.11.2015 um 08:02:

 

Man setzt also die x Werte (1,2,3) ein und schaut ob es ist 10^(-6)



Geschrieben von eulerscheZahl am 15.11.2015 um 08:09:

 

Du musst sicherstellen, dass die Summe aller Terme für k=k_max+1 bis unendlich kleiner ist als die geforderte Genauigkeit von 10^-6.

Du sollst eine Taylor - Mac Laurin Reihe bestimmen, das Restglied ist bekannt (siehe Formelsammlung).



Geschrieben von Marcell99 am 15.11.2015 um 08:28:

 

So??



Geschrieben von Marcell99 am 15.11.2015 um 08:34:

 

Kann es nicht hochladen

(F(0)(1)/0! +f(1)(2)/1! +f(2)(3)/2!) (x-1)^0

Wie programmiere ich das denn



Geschrieben von eulerscheZahl am 15.11.2015 um 08:40:

 

Das Restglied ist einfach [latex]\frac{x^{k_{max}+1}}{(k_{max}+1)!}[/latex].
Das ist praktisch, da wir das sowieso ausrechnen müssen ist der Summe.



Geschrieben von Marcell99 am 15.11.2015 um 08:47:

 

using namespace std;

int main(int argc, const char * argv[]) {


double zähler=1, nenner=1;
double sum =1;

double x;
cout<<"Geben sie x ein"<<endl;
cin>>x;


for (int k=1; k<100; k++) {
zähler *=x;
nenner *=k;

sum += zähler/nenner;
cout<<"Die Summe ist "<<zähler/nenner<<endl;


double rg;
rg *=+1+x/(k+1);



}



return 0;

}



Geschrieben von Marcell99 am 15.11.2015 um 08:47:

 

oder das in der summe ersetzen ??



Geschrieben von eulerscheZahl am 15.11.2015 um 09:15:

 

Warum so kompliziert?
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
#include <iostream>

using namespace std;

int main(int argc, const char * argv[]) {
	double zaehler = 1, nenner = 1;
	double sum = 1;
	double x;
	cout << "Geben sie x ein" << endl;
	cin >> x;
	for (int k = 1; zaehler/nenner > 1e-6; k++) {
		zaehler *= x;
		nenner *= k;
		sum += zaehler/nenner;
		cout<<"Der Summand ist "<< zaehler/nenner << endl;
	}
	cout<<"Die Summe ist "<< sum <<endl;
	return 0;
}

Man beachte das Abbruchkriterium in der Schleife, das nicht mehr auf den Wert von k prüft.
Wenn du das für verschiedene Werte von x testest, wirst du feststellen, dass sich die Zahl der Additionen ändert.



Geschrieben von Marcell99 am 15.11.2015 um 09:18:

 

aber warum denn ausgerechnet 1e-6 ??



Geschrieben von eulerscheZahl am 15.11.2015 um 09:19:

 

1e-6 ist das selbe wie 0.000001, also [latex]1 \cdot 10^{-6}[/latex]. Das hat nichts mit [latex]e = 2.718281828450945\dots[/latex] zu tun.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH