Hier meine Lösung für die Exponentialreihe iterativ :
Nachdem ich es denn eingegeben hatte das und mir aufgefallen war, dass 0! ja gleich 1 ist und es ohne die if immer unendlich wäre ....
man kann sich an kleinen sachen schon gut aufhängen..
Sinus annäherung:
//Sinus - berechnen
public double sin(double x, int k){
double zaehler;
double nenner=1;
double erg=x;
//sinus von 0 ist 0
if (x == 0) {
return 0;
}
for (int i=1; i <= k; i++){
zaehler =x;
//definiere den zähler, nach der regel i*2+1
for (int j=2; j <= i*2+1; j++) {
zaehler *= x;
}
//nenner berechnen
nenner *= (2*i) * (2*i + 1);;
//wenn i gerade wird addiert, wenn ungerade wird subtrahiert
if (i % 2 == 0) {
erg += zaehler / nenner;
}
else {
erg -= zaehler / nenner;
}
}
return erg;
}
Code:
public class exponentialreihe
{
//iterative berechnung exponentialreihe
public double exp(double x, int k) {
//Initialisierung vars
double zaehler = 1.0;
double nenner = 1;
double erg = 0;
// e hoch 0 ist immer 1
if (k == O) {
return 1;
}
//solange i kleiner gleich k, summiere Summanden bestehend aus Brüchen
for (int i=0; i <= k; i++) {
if (i == 0) {
nenner *= 1;
}
else {
nenner *= i;
}
if (i != 0) {
zaehler *= x;
}
erg += zaehler / nenner;
}
return erg;
}
}
man kann sich an kleinen sachen schon gut aufhängen..
Sinus annäherung:
//Sinus - berechnen
public double sin(double x, int k){
double zaehler;
double nenner=1;
double erg=x;
//sinus von 0 ist 0
if (x == 0) {
return 0;
}
for (int i=1; i <= k; i++){
zaehler =x;
//definiere den zähler, nach der regel i*2+1
for (int j=2; j <= i*2+1; j++) {
zaehler *= x;
}
//nenner berechnen
nenner *= (2*i) * (2*i + 1);;
//wenn i gerade wird addiert, wenn ungerade wird subtrahiert
if (i % 2 == 0) {
erg += zaehler / nenner;
}
else {
erg -= zaehler / nenner;
}
}
return erg;
}