Pseudocode < Sonstiges < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 16:24 Di 06.11.2012 | Autor: | Duckx |
Hallo ich soll einen Pseudocode zur Berechnung der Funktion:
$F(x)= 1 + [mm] \summe_{k=1}^{\infty} (-1)^k \frac{x^k}{k! \cdot{} 2^k}$
[/mm]
für ein reelles x schreiben. Beim Aufsummieren werden nur Summanden beachtet die vom Betrag > t sind. Danach soll die Summenbildung abgebrochen werden.
Ich habe leider keine Ahnung, wie ich an die Sache herangehen soll.
Mein Ansatz:
program loese f(x)
begin
float x,t;
integer k;
Eingabe(x,t);
end
Ich habe leider keine Ahnung wie ich diese Funktion in Einzelteile zerlegen soll damit es einfacher wird. Ich hoffe mir kann da jemand helfen denn ich kenn mich damit nicht aus.
|
|
|
|
Hallo Duckx,
> Hallo ich soll einen Pseudocode zur Berechnung der
> Funktion:
>
> [mm]F(x)= 1 + \summe_{k=1}^{\infty} (-1)^k \frac{x^k}{k! \cdot{} 2^k}[/mm]
>
> für ein reelles x schreiben. Beim Aufsummieren werden nur
> Summanden beachtet die vom Betrag > t sind. Danach soll die
> Summenbildung abgebrochen werden.
>
> Ich habe leider keine Ahnung, wie ich an die Sache
> herangehen soll.
>
>
> Mein Ansatz:
>
> program loese f(x)
> begin
> float x,t;
> integer k;
> Eingabe(x,t);
>
> end
>
> Ich habe leider keine Ahnung wie ich diese Funktion in
> Einzelteile zerlegen soll damit es einfacher wird. Ich
> hoffe mir kann da jemand helfen denn ich kenn mich damit
> nicht aus.
>
Betrachte zunächst zwei aufeinanderfolgende Summanden.
Leite daraus eine Rekursionsformel
für die Bildung der Summanden her.
Gruss
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 16:42 Di 06.11.2012 | Autor: | Duckx |
Also ich habe mit k=1 angefangen dann ist der 1. Summand -0,5x und der 2. Summand [mm] $\frac{1}{8}x^2$
[/mm]
Wie mache ich denn daraus eine Rekursionsformel?
|
|
|
|
|
Hallo Duckx,
> Also ich habe mit k=1 angefangen dann ist der 1. Summand
> -0,5x und der 2. Summand [mm]\frac{1}{8}x^2[/mm]
>
> Wie mache ich denn daraus eine Rekursionsformel?
Schreibe die Summanden in Abhängigkeit von k auf.
Der k.te Summand lautet: [mm]a_{k}=\left(-1\right)^{k}*\frac{x^k}{k! \cdot{} 2^k} [/mm]
Der (k+1).te Summand lautet: [mm]a_{k+1}=\left(-1\right)^{k+1}*\frac{x^{k+1}}{\left(k+1\right)! \cdot{} 2^{k+1}} [/mm]
Bilde den Quotienten und forme so um, daß [mm]a_{k+1}= \ ... \ *a_{k}[/mm]
Das ist dann die Rekursionsformel.
Gruss
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 17:02 Di 06.11.2012 | Autor: | Duckx |
Also dann hätte ich raus:
$ [mm] a_{k+1}= -\frac{x}{2k+2} \cdot{}a_{k} [/mm] $
Ich hoffe ich habe mich nicht zu sehr vertan.
Und wie geht es dann weiter?
PS: kann man so an alle Formeln herangehen oder ist das jetzt ein spezieller Fall, bei dem solch eine rekursivformel angebracht ist?
|
|
|
|
|
Hallo Duckx,
> Also dann hätte ich raus:
>
> [mm]a_{k+1}= -\frac{x}{2k+2} \cdot{}a_{k}[/mm]
>
> Ich hoffe ich habe mich nicht zu sehr vertan.
> Und wie geht es dann weiter?
>
Jetzt kannst Du die Berechnung der Funktion ausführen:
>
> PS: kann man so an alle Formeln herangehen oder ist das
> jetzt ein spezieller Fall, bei dem solch eine
> rekursivformel angebracht ist?
>
Das ist ein spezieller Fall, und zwar der,
wenn die Funktion in Form einer Summe vorliegt.
Gruss
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 18:19 Di 06.11.2012 | Autor: | Duckx |
Und wie genau schreibe ich das jetzt im Pseudocode?
Ich seh bei der Materie noch nicht durch tut mir leid.
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 20:25 Di 06.11.2012 | Autor: | Duckx |
kann mir niemand weiterhelfen?
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:20 Do 08.11.2012 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|
|
Hallo Duckx,
> Und wie genau schreibe ich das jetzt im Pseudocode?
> Ich seh bei der Materie noch nicht durch tut mir leid.
Sicher hast Du irgendwo in Deinen Unterlagen ein Beispiel dazu.
An diesem Beispiel kannst Du Dich orientieren.
Gruss
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 20:36 Di 06.11.2012 | Autor: | Duckx |
Nein tut mir leid. So ein Summenbeispiel hatten wir noch nie. Deswegen ist es für mich ja so schwierig das nachzuvollziehen :(
|
|
|
|
|
Hallo Duckx,
> Nein tut mir leid. So ein Summenbeispiel hatten wir noch
> nie. Deswegen ist es für mich ja so schwierig das
> nachzuvollziehen :(
Fakt ist das so aufzuschreiben, was man gerade tut.
Als erstes z.B.
Setze die Summenvariable s auf 1.
Setze das Ergebenis result auf 0.
Setze die Zählvariable k auf 0.
Gruss
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 20:44 Di 06.11.2012 | Autor: | Duckx |
Könnten Sie mir das eventuell bitte einmal lösen mit Kommentar? Ich kann das dann besser nachvollziehen wie man vorzugehen hat.
ich habe jetzt [mm] $a_{k+1}$ [/mm] in Abhängigkeit von [mm] $a_k$ [/mm] aber was soll mir das jetzt bringen? besonders die Abbruchbedingung macht mir auch sorgen.
|
|
|
|
|
Hallo Duckx,
> Könnten Sie mir das eventuell bitte einmal lösen mit
> Kommentar? Ich kann das dann besser nachvollziehen wie man
> vorzugehen hat.
> ich habe jetzt [mm]a_{k+1}[/mm] in Abhängigkeit von [mm]a_k[/mm] aber was
> soll mir das jetzt bringen? besonders die Abbruchbedingung
Eine leichtere Bestimmung des Summanden [mm]a_{k+1}[/mm]
> macht mir auch sorgen.
Abbruchbedingung ist ja wohl: [mm]\vmat{a_{k+1}} \le t[/mm]
Gruss
MathePower
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 08:19 Fr 09.11.2012 | Autor: | Pauli90 |
Hi Duckx,
also im Pseudocode würde das ganze dann in etwa so aussehen:
function(float x, float t)
begin;
float summe,a;
summe= 1;
a = -x/2;
begin{Schleife über int k=1,2,...}
float temp;
temp = -x/(2*k) * a;
Ist |temp| [mm] $\le$ [/mm] t [mm] $\rightarrow$ [/mm] Abbruch
Sonst{ Setze s = s + temp;
Setze a = temp;}
end{Schleife};
end;
Dabei müssen die float-Zahlen x und t im Funktionsaufruf gegeben sein. Das Ergebnis steht dann in der Variablen s.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 15:32 Di 20.11.2012 | Autor: | Duckx |
Vielen dank für deine Mühe
ich glaube ich verstehe das alles.
Allerdings ist:
temp = -x/(2*k+2) * a;
und nicht temp = -x/(2*k) * a;
oder?
|
|
|
|
|
Hallo Duckx,
> Vielen dank für deine Mühe
> ich glaube ich verstehe das alles.
> Allerdings ist:
> temp = -x/(2*k+2) * a;
> und nicht temp = -x/(2*k) * a;
>
> oder?
Da hast Du recht.
Gruss
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 16:19 Di 20.11.2012 | Autor: | Duckx |
Mein Problem ist jetzt allerdings, das die Funktion die Pauli90 angegeben hat, Sozusagen erst ab k=2 berechnet wird, da k von 1-unendlich geht
Die Summe soll aber schon ab k=1 berechnet werden. Mit der Rekursionsformel lässt sich k=1 aber nicht berechnen.
Wie muss ich jetzt die Funktion ergänzen?
|
|
|
|
|
Hallo Duckx,
> Mein Problem ist jetzt allerdings, das die Funktion die
> Pauli90 angegeben hat, Sozusagen erst ab k=2 berechnet
> wird, da k von 1-unendlich geht
> Die Summe soll aber schon ab k=1 berechnet werden. Mit der
> Rekursionsformel lässt sich k=1 aber nicht berechnen.
> Wie muss ich jetzt die Funktion ergänzen?
Setze a=1, und beginne die Schleife bei k=0.
Gruss
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 16:59 Di 20.11.2012 | Autor: | Duckx |
Ah ja :)
so einfach ist das. Dankeschön :)
Jetzt soll ich die Funktion nutzen um F(x) im Intervall [-1,1] zu tabellarisieren.
Im Teilintervall [-0,5;0,5] mit der schrittweite 0,05 und der genauigkeit [mm] $10^{-6}$
[/mm]
Im restlichen Bereich Schrittweite 0,1 und Genauigkeit [mm] $10^{-5}$
[/mm]
tabelle im Pseudocode:
Float x;
x=-1;
begin{Schleife};
wenn [mm] -1$\le$x<(-0,5) [/mm] oder [mm] 0,5
[mm] function(x,$10^5$); [/mm]
Ausgabe "x="x", F(x)="s;
x=x+0,1;
Sonst wenn [mm] -0,5$\le$x$\le$0,5 [/mm]
[mm] function(x,$10^{-6}$);
[/mm]
Ausgabe"x="x", F(x)="s;
x=x+0,05;
Sonst [mm] $\rightarrow$ [/mm] Abbruch
end{schleife};
Ist das so richtig?
Kann man das sonst eventuell noch vereinfachen oder so?
|
|
|
|
|
Hallo Duckx,
> Ah ja :)
> so einfach ist das. Dankeschön :)
>
> Jetzt soll ich die Funktion nutzen um F(x) im Intervall
> [-1,1] zu tabellarisieren.
> Im Teilintervall [-0,5;0,5] mit der schrittweite 0,05 und
> der genauigkeit [mm]10^{-6}[/mm]
> Im restlichen Bereich Schrittweite 0,1 und Genauigkeit
> [mm]10^{-5}[/mm]
>
> tabelle im Pseudocode:
>
> Float x;
> x=-1;
> begin{Schleife};
> wenn -1[mm]\le[/mm]x<(-0,5) oder 0,5<x[mm]\le[/mm] 1
> function(x,[mm]10^5[/mm]);
Das sollte hier doch so lauten:
function(x,[mm]10^{\blue{-}5}[/mm]);
> Ausgabe "x="x", F(x)="s;
> x=x+0,1;
> Sonst wenn -0,5[mm]\le[/mm]x[mm]\le[/mm]0,5
> function(x,[mm]10^{-6}[/mm]);
> Ausgabe"x="x", F(x)="s;
> x=x+0,05;
> Sonst [mm]\rightarrow[/mm] Abbruch
> end{schleife};
>
>
> Ist das so richtig?
Ja.
> Kann man das sonst eventuell noch vereinfachen oder so?
Das zweite "Sonst" könnte man noch in den Schleifenkopf mit einbringen.
Gruss
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 17:25 Di 20.11.2012 | Autor: | Duckx |
Wie sieht das dann mit dem Schleifenkopf aus? soll ich da einfach begin(schleife für $-1 [mm] \le [/mm] x [mm] \le [/mm] 1$) schreiben?
|
|
|
|
|
Hallo Duckx,
> Wie sieht das dann mit dem Schleifenkopf aus? soll ich da
> einfach begin(schleife für [mm]-1 \le x \le 1[/mm]) schreiben?
Das kannst Du so schreiben.
Gruss
MathePower
|
|
|
|