Code als Formel angeben < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 06:02 So 01.12.2013 | Autor: | Muskat |
Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt:
Hallo, ich habe hier folgenden Java-Code:
public static double mySin (double x)
{
double summeNeu,summeAlt, summand;
int i = 1;
summand = summeNeu = x;
do
{
summeAlt = summeNeu;
i++; summand = - summand * x * x / i;
i++; summand = summand / i;
summeNeu = summeAlt + summand;
} while (summeNeu != summeAlt);
return summeNeu;
}
In der Variablen summand wird das erste Reihenglied der Sinusrheihe mit dem Wert x festgelegt. Jeder Schleifendurchlauf berechnet in der Variablen summand ein weiteres Reihenglied. Gesucht ist das zweite, dritte und vierte Reihenglied als Formel an. Nach welcher Summenformel wird außerdem die Funktion sin(x) in der Methode mySin berechnet? Ich denke, das müsste alles mit Summenzeichen lösbar sein, aber ich komme da nicht weiter.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 07:37 So 01.12.2013 | Autor: | DieAcht |
Hallo,
> Ich habe diese Frage auch in folgenden Foren auf anderen
> Internetseiten gestellt:
>
>
>
>
> Hallo, ich habe hier folgenden Java-Code:
>
> public static double mySin (double x)
> {
> double summeNeu,summeAlt, summand;
> int i = 1;
> summand = summeNeu = x;
> do
> {
> summeAlt = summeNeu;
> i++; summand = - summand * x * x / i;
> i++; summand = summand / i;
> summeNeu = summeAlt + summand;
> } while (summeNeu != summeAlt);
> return summeNeu;
> }
>
> In der Variablen summand wird das erste Reihenglied der
> Sinusrheihe mit dem Wert x festgelegt. Jeder
> Schleifendurchlauf berechnet in der Variablen summand ein
> weiteres Reihenglied. Gesucht ist das zweite, dritte und
> vierte Reihenglied als Formel an. Nach welcher Summenformel
> wird außerdem die Funktion sin(x) in der Methode mySin
> berechnet? Ich denke, das müsste alles mit Summenzeichen
> lösbar sein, aber ich komme da nicht weiter.
>
Was ist denn genau deine Aufgabe? Was ist das Ziel dieser Aufgabe? Was ist der Input, was ist der Output?
Eine mögliche Aufgabe wäre:
Schreiben Sie eine Methode, die für ein beliebiges [mm] x\in\IR [/mm] die Summe bis zum n-ten Reihenglied des Sinus berechnet, wobei [mm] n\in\IN_0.
[/mm]
[mm] \sin(x)=\summe_{i=0}^{\infty}(-1)^i\frac{x^{2i+1}}{(2i+1)!}=\frac{x}{1!}-\frac{x^3}{3!}+\frac{x^5}{5!}\mp\ldots
[/mm]
In Java umgesetzt:
public static double mySin(double x, int n) {
double returnValue = 0;
double fac = 1;
double temp;
for (int i = 0; i <= n; i++) {
temp = 2 * i + 1;
returnValue += Math.pow(-1, i) * (Math.pow(x, temp) / fac);
fac *= (temp + 1) * (temp + 2);
}
return returnValue;
}
Das ist natürlich verbessert, in dem die Fakultät nicht immer neu berechnet wird
Gruß
DieAcht
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 07:38 So 01.12.2013 | Autor: | DieAcht |
Hallo,
> Ich habe diese Frage auch in folgenden Foren auf anderen
> Internetseiten gestellt:
>
> []
>
>
> Hallo, ich habe hier folgenden Java-Code:
>
> public static double mySin (double x)
> {
> double summeNeu,summeAlt, summand;
> int i = 1;
> summand = summeNeu = x;
> do
> {
> summeAlt = summeNeu;
> i++; summand = - summand * x * x / i;
> i++; summand = summand / i;
> summeNeu = summeAlt + summand;
> } while (summeNeu != summeAlt);
> return summeNeu;
> }
>
> In der Variablen summand wird das erste Reihenglied der
> Sinusrheihe mit dem Wert x festgelegt. Jeder
> Schleifendurchlauf berechnet in der Variablen summand ein
> weiteres Reihenglied. Gesucht ist das zweite, dritte und
> vierte Reihenglied als Formel an. Nach welcher Summenformel
> wird außerdem die Funktion sin(x) in der Methode mySin
> berechnet? Ich denke, das müsste alles mit Summenzeichen
> lösbar sein, aber ich komme da nicht weiter.
>
Was ist denn genau deine Aufgabe? Was ist das Ziel dieser Aufgabe? Was ist der Input, was ist der Output?
Eine mögliche Aufgabe wäre:
Schreiben Sie eine Methode, die für ein beliebiges $ [mm] x\in\IR [/mm] $ die Summe bis zum n-ten Reihenglied des Sinus berechnet, wobei $ [mm] n\in\IN. [/mm] $
$ [mm] \sin(x)=\summe_{i=0}^{\infty}(-1)^i\frac{x^{2i+1}}{(2i+1)!}=\frac{x}{1!}-\frac{x^3}{3!}+\frac{x^5}{5!}\mp\ldots [/mm] $
In Java umgesetzt:
public static double mySin(double x, int n) {
double returnValue = 0;
double fac = 1;
double temp;
for (int i = 0; i <= n; i++) {
temp=2 * i + 1;
returnValue += Math.pow(-1, i) * (Math.pow(x,temp) / fac);
fac*=(temp+1)*(temp+2);
}
return returnValue;
}
Das ist natürlich verbessert, in dem die Fakultät nicht immer neu berechnet wird
Gruß
DieAcht
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 07:42 So 01.12.2013 | Autor: | DieAcht |
Hallo,
Das hier ist ein Versehen, bitte löschen!
Gruß
DieAcht
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:26 So 01.12.2013 | Autor: | Muskat |
Das Ziel der Aufgabe ist einfach nur aus dem Code auf die mathematische Formel zu schließen. Da soll nichts verbessert werden. Aber erst einmal Danke für die schnelle Hilfe. Jeweils die Formel für das 2., 3. und 4. Reihenglied soll angegeben werden, nachdem die Schleife durchlaufen wurde.
|
|
|
|