[Matlab] Integration durch Potenzreihenentwicklung

Neue Frage »

Endariel Auf diesen Beitrag antworten »
[Matlab] Integration durch Potenzreihenentwicklung
Hallo, Leute!

Ich hab mal ein Problem:

Ich soll den Wert des folgenden Integrals durch Potenzreihenentwicklung des Integranden bestimmen und anschließend gliedweise auf 6 Dezimalstellen nach dem Komma integrieren.
Dabei soll ich beim ersten Glied der Potenzreihe beginnen, das integrieren und das Ergebnis ausdrucken. Dann für jedes zusätzliche Glied das Ergebnis ausdrucken bis ich die Genauigkeit erreicht habe.

Die Aufgabe:



Ich hab bei Matlab die Aufgabe so eingegeben, aber er zeigt mir cos(sqrt(x)) nicht als Potenzreihe an, sondern als Summe einer komplexen e-Funktion.

1. Gibt es bei Matlab einen Befehl, mit dem ich das Ergebnis als Potenzreihe darstellen kann?

2. Und wie kann ich gliedweise integrieren und das Ergebnis anzeigen lassen?

3. Und wie stelle ich dann das mit einer Genauigkeit ein?

Hier was ich bisher erreicht habe...:

code:
1:
2:
3:
symsum(cos(sqrt(n)),1,inf)


Das was er anzeigt:

code:
1:
2:
3:
4:
5:
ans =

sum(exp(i*n^(1/2)), n = 1..Inf)/2 + sum(1/exp(i*n^(1/2)), n = 1..Inf)/2


Ich hoffe ihr könnt mir helfen...

freundliche Grüße

Endariel
Endariel Auf diesen Beitrag antworten »

Gibts keinen der mir helfen kann?
chrizke Auf diesen Beitrag antworten »

Findest du es selber nicht auch unhöflich, schon nach knapp einer Stunde zu pushen? Ich hab den Thread zB grade erst gesehen.
Was glaubst du eigentlich, was wir den ganzen Tag tun? Darauf warten, dass du schlecht recherchierte Fragen stellst? Etwas Zeit musst du uns schon geben.


Hast du dir mal durchgelesen was symsum tut? Wahrscheinlich nicht, denn dann wüsstest du, dass dir das nicht die Taylorreihe einer Funktion ausgibt.
Endariel Auf diesen Beitrag antworten »

Oh, sorry...ich wusste nicht dass das verboten ist...nur stehe ich halt etwas unter Zeitdruck, ansonsten wäre ich nicht so "unhöflich".

Außerdem soll ich, so denke ich mal, keine Taylorformel verwenden, ansonsten würde das in der Aufgabenstellung stehen.
Symsum ist auch nur der symbolische Ausdruck, den man für eine Potenzreihenentwicklung braucht. Und mit der muss ich das machen.

Mit der Genauigkeit hab ich inzwischen herausgefunden, die Frage wäre abgehakt.
Die andere Frage ist nur, ob ich die wie gesagt von der exp Schreibweise in eine Potenzreihe umwandeln und gliedweise integrieren sowie anzeigen lassen kann.

da habe ich noch keine Idee...
chrizke Auf diesen Beitrag antworten »

Wie wenn nicht mit Taylor willst du denn, nur mal rein von der Theorie her, aus dem cos Ausdruck eine Potenzreihe machen? Zudem die Taylorreihe ja eine Potenzreihe ist...


Nochmal zur Klarstellung: symsum liefert keine Potenzreihe. Sondern

Endariel Auf diesen Beitrag antworten »

Okay, hab das ganze mal mit Taylor ausprobiert, sieht auch ganz gut aus:

code:
1:
2:
3:
4:
5:
6:
7:
taylor(cos(sqrt(x)))
 
ans =
 
- x^5/3628800 + x^4/40320 - x^3/720 + x^2/24 - x/2 + 1


Allerdings, wenn ich das jetzt integriere, dann kommt dort ein anderes Ergebnis raus als rauskommen müsste....:

code:
1:
2:
3:
4:
5:
6:
7:
int('ans',0,0.5)
 
ans =
 
1/8


Es sollte da ungefähr 0,4393 herauskommen...

Was hab ich da falsch gemacht?
 
 
Endariel Auf diesen Beitrag antworten »

Eigentlich sollte das ganze so aussehen:



und dann als Ergebnis wie gesagt 0,4393...

wo liegt mein Fehler?
Endariel Auf diesen Beitrag antworten »

Also, hab jetzt mal etwas probiert und komme auf folgendes:

code:
1:
2:
3:
4:
5:
syms n x
digits(6)
f = cos(sqrt(x))


Nachdem ich jetzt mit dem Befehl "taylor" und "int" die Funktion eingebe:

code:
1:
2:
3:
4:
taylor(f,6)
int(ans,0,0.5)


kommt das ergebnis plötzlich richtig heraus...

Allerdings wie kann ich das jetzt gliedweise integrieren und anzeigen lassen?

Hab das mit dem versucht:

code:
1:
2:
3:
4:
5:
6:
for i=1; i=6;
taylor(f,i)
i = i+1;
end


und dann mit:

code:
1:
2:
3:
int(f(i),0,0.5)


allerdings kommt hier immer ein Fehler, da i nur der Zähler für die Taylor-Terme ist und ich diese Terme nicht direkt aufrufen kann.

Wie muss ich das verändern, ich komm da grad echt nicht weiter...
chrizke Auf diesen Beitrag antworten »

Du könntest zwei Taylorformeln voneinander abziehen.

Nämlich die, die bis zum gewünschten Glied geht, minus die, die bis zum Glied davor geht.
Endariel Auf diesen Beitrag antworten »

Ich glaube wir haben das hinbekommen, nur etwas anders als dein Tipp ^^:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
syms N x
digits(6)
f = cos(sqrt(x))

for i=1:6; 
    
    N = taylor(f,i);
    int(N,0,0.5)
    disp(N)
    clear N
    i = i+1;
end


jetzt wollte ich das noch etwas verschönern, dass er sagt 'Das i-te Ergebnis ist N'.
Aber immer wenn ich das bei disp reinschreibe, also so:

code:
1:
2:
3:
    disp(['Das',num2str(i)'.' 'Ergebnis beträgt: ' num2str(N)])


kommt der Fehler:

code:
1:
2:
3:
4:
5:
6:
??? Undefined function or method 'max' for input arguments of type 'sym'.

Error in ==> num2str at 84
            xmax = double(max(abs(x(:))));


Was sagt mir Matlab damit und wie löse ich das??
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »