2017-02-08 7 views
0

Я пытаюсь выполнить итерацию по вектору y, используя 2 вложенных цикла for, чтобы вернуть список сумм расширения taylor для каждого числа в векторе ,Matlab: итерация над вектором, чтобы получить расширение taylor для каждого элемента

Это продолжает возвращаться ошибку

В присваивания A (:) = В, число элементов в A и B должны быть одинаковыми.

Код:

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

Вы используете ту же переменную 'i' как для внутренней, так и для внешней петель. Это опечатка ?. – ibancg

+0

Я действительно ничего не понимаю из того, что вы пытаетесь сказать. – Bernhard

ответ

0

Проблема заключается в том, что вы пытаетесь заполнить у с номером место п + 1, а у только длины п.

другими словами: length(y) = 6 и вы пытаетесь заполнить y(6+1)

также, пожалуйста, постарайтесь не делать 2 петли с тем же счетчик так считают нечаянно второй счетчик цикла с j

0

Я не могу сказать, что это дает расширение Тейлора в каждой точке, но оно исправляет ваш код.

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

большое спасибо – fgg3331