2017-02-08 5 views
0

Ich versuche, über einen Vektor y, 2 verschachtelte for Schleifen zu durchlaufen, um eine Liste der Summe der Taylor-Erweiterung für jede Zahl im Vektor zurückzugeben .Matlab: Iteration über einen Vektor, um Taylor-Erweiterung für jedes Element

Es hält den Fehler zurückkehr

in einer Zuweisung A (:) = B, die Anzahl der Elemente in A und B gleich sein müssen.

Code:

n = 6 
y = zeros(1,n); 
x = [0.785398,0.392699,0.19635,0.098175]; 

for i = (1:4) 

    for i = 0:n 

     y(i+1) = (-1).^i*x.^(2*i+1)/factorial(2*i+1); 

    end; 

    SINx = sum(y) 

end 
+1

Du die gleiche Variable 'I' für beide inneren und äußeren Schleifen verwenden. Ist das ein Tippfehler? – ibancg

+0

Ich verstehe wirklich nichts von dem, was Sie sagen wollen. – Bernhard

Antwort

0

Das Problem ist, dass Sie versuchen, y mit einer Reihe einen Platz zu füllen n + 1, während y nur die Länge n ist.

mit anderen Worten: length(y) = 6 und Sie versuchen zu füllen y(6+1)

auch versuchen Sie es mit den gleichen Zähler machen 2 Schleife zu vermeiden, so sollten Sie die zweite Schleifenzähler chancing mit einem j

0

kann ich nicht sagen, dass dies gibt die Taylorentwicklung an jedem Punkt, aber es korrigiert den Code

n = 6 
x = [0.785398, 0.392699, 0.19635, 0.098175]; 
y = zeros(n, size(x,2)); 

for j = 1:size(x,2) 

    for i = 0:n-1 

     y(i+1, :) = ((-1)^i) * x.^(2*i+1) ./ factorial(2*i+1); 

    end 

    SINx = sum(y(i+1, :)) 

end 
+0

vielen Dank – fgg3331

Verwandte Themen