Итак, я понимаю, как написать очень простой для цикла, проходящего через массив в Matlab. Пример интерактивной справки:
A = [1 2 3; 4 5 6]
for i = 1:numel(A)
B(i) = A(i).^2
end
Так что это будет проходить по каждому числу в массиве и возводить его в квадрат. И я понимаю это, но что, если я хочу работать с предыдущими значениями i?
Моя проблема заключается в следующем: я хочу создать цикл, который будет выполнять интерполяционный полином Лагранжа для матрицы данных. Это означает, что мне нужно работать с термином i, термином i-1, термином i + 1 и т. Д. У меня есть следующее.
A = [1 0.6767; 1.5 0.3734; 1.6 0.3261; 2.5 0.08422; 3.5 0.01596]
for i = 1:numel(A)
F_1 = A(i,i+1)*(2*A(i+1,i) - A(i+1,i) - A(i+2,i))/((A(i,i) - A(i+1,i))*(A(i,i) - A(i+1,i)))
+ A(i+1,i+1)*(2*A(i+1,i) - A(i,i) - A(i+2,i))/((A(i+1,i) - A(i,i))*(A(i+1,i) - A(i+2,i)))
+ A(i+2,i+1)*(2*A(i+1,i) - A(i,i) - A(i+1,i))/((A(i+2,i) - A(i,i))*(A(i+2,i) - A(i+1,i)))
end
Это явно не работает, потому что мои навыки программирования элементарны. Как мне индексировать и работать с термином i, термином i + 1 и т. Д.?
Спасибо за помощь.