Eulersche zahl mit Hilfe Taylorreihe
-
include <math.h> is doch gestattet...
Danke für die Hilfe!!!!!#include <stdio.h> #include <math.h> double exppow(double x, double gen) { double a=1.; double c=1.; int d=1; double e=1.; while(gen<=fabs (a/c)) { a=a*x; c=c*d; e=e+ (a/c) ; d++; } return e; } int main (void) { int n=4; printf(" %g ", exppow(n,0.001) ); }
[code="c"]
-
pepe123 schrieb:
include <math.h> is doch gestattet...
Ist aber, wie schon gesagt, gar nicht nötig.
Um nochmal den Tipp von SeppJ bezüglich der Vorfaktoren aufzugreifen:
double exppow(double x, double gen) { int d=1; double e=1.; double de=1; // Hier fehlt noch die Überprüfung, ob die Paramter sinnvolle Werte enthalten do { de *= x/d ; // Hier wird nur noch mit dem Unterschied zum Vorwert gerechnet // Dadurch werden die Einzelwerte nicht so riesig groß e+=de; d++; } while(de>gen); return e; } int main (void) { printf(" %g ", exppow(1,1e-99) ); }
-
warum sind die differenzen nur positiv? input x kann doch auch negativ sein und dann sind es die differenzen auch.
-
Okay das is jetz mein entgültiger Quellcode:
#include <stdio.h> double exppow(double x, double gen) { double ep=1; double rg=1; int i=1; while(rg>gen) { rg=rg*x/i++; ep=ep+rg; } return ep; } int main (void) { printf(" %g ", exppow(3.0,0.001) ); }
-
Jetz hab ich von nem Kumpel den Quellcode für sinus(x) bekommen:
Allerdings versteh ich nicht was das %.3f im printf soll und iwie kommt da auch was falsches raus...
Vll könnt ihr mie da auch helfen ?!#include <stdio.h> #include <math.h> double sinpow(double x, double genauigkeit) { double sinus=x; double rg=x; int i=2; while( fabs(rg)>genauigkeit) { rg = rg * -x * x / i / ( i + 1 ); sinus = sinus + rg; i += 2; } return sinus ; } int main (void) { printf(" sin(x)=%.3f \n", sinpow(3.14,0.01) ); }
-
StarCraftFeuerteufel schrieb:
warum sind die differenzen nur positiv? input x kann doch auch negativ sein und dann sind es die differenzen auch.
schäm
-
pepe123 schrieb:
Allerdings versteh ich nicht was das %.3f im printf soll und
Gibt dir die Zahl mit 3 Nachkommastellen aus.
Siehe: http://www.cplusplus.com/reference/cstdio/printf/
-
Das programm müsste also jetz sin(3.14) berechenen.
mein taschenrechner wirft da 0,054 aus aber das programm 0,001...
-
pepe123 schrieb:
Das programm müsste also jetz sin(3.14) berechenen.
mein taschenrechner wirft da 0,054 aus aber das programm 0,001...Du kannst nicht mit deinem Taschenrechner umgehen. sin(3.14) = 0.00159265...
Allgemein ist es keine so gute Idee, Sinus, besonders mit so großen Zahlen wie 3.14, über die Taylorreihe zu berechnen, aber für die hier vorliegenden Anforderungen reicht es noch.
-
Dann stell mal deinen Taschenrechner auf Bogenmaß (RAD) um.
Der Sinus von Pi ist 0.
Wenn du mal ein paar mehr Stellen zu den 3.14 spendierst, solte das auch rauskommen.
-
-
Wie man aber auf den Therm kommt ist mir nich klar:
rg = rg * -x * x / i / ( i + 1 );
rg*-x*x ist für die potenz und den vorzeichenwechsel aber wie man auf die Fakultät kommt ist mir unklar...