Как объявить x0 в функции matlab при использовании ее в методе взаимодействия - PullRequest
0 голосов
/ 16 мая 2019

Вот мой код (который должен находить полиномиальные корни с помощью метода Ньютона):

function z = newton(n, m ,z(0), a)
  b(1)=a(0);
  c(1)=a(0);
  for k=1:1:m
    for j=2:1:n+1
      b(j)=z(k)*b(b-1)+a(j);
    end
    for s=2:1:n
      c(s)=z(k)*c(s-1)+b(s);
    end
    h(k)=-b(n)/c(n-1);
    z(k+1)=z(k)+h(k);
  end
end

Я не могу вызвать эту функцию, потому что Matlab выдает мне ошибку на z(0) входном аргументе.a - это вектор, n - это размер вектора, m - это число итераций, а z(0) - это первый x, с которого начинается итерация.Не могли бы вы помочь мне, может быть, есть другой способ объявить первый х?

Я пытался написать:

function z = newton(n, m ,z, a)
z(0)=z ;

, но это не работает.

1 Ответ

0 голосов
/ 16 мая 2019

Я не имею в виду здесь логику вашего кода - реализацию метода Ньютона, я просто ссылаюсь на синтаксис и правила языка Matlab.

  1. Вы не можете использовать z(0) в Matlab, потому что индексирование начинается с 1, а не с 0 (как C, C ++ и другие языки программирования). Ваш z(0) должен быть z(1)
  2. Вы не можете использовать z(index) в объявлении функции, вы можете поместить только имена переменных
  3. Если n - размер вектора a, он вам не нужен в качестве параметра, просто используйте n = length(a) в теле функции
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...