Метод Ньютона–Рафсона с векторными входными данными в MATLAB

#matlab

#matlab

Вопрос:

Для решения этой задачи нам нужно использовать метод Ньютона-Рафсона, чтобы найти корни конкретной функции. Код работает, когда вводится единственное значение, но когда вводится вектор, ответы не совсем правильные.
Например, когда x=2 это входные данные, 2.5933 возвращается значение, а когда x=4 , 4.3215 возвращается. Оба эти ответа верны, но когда я ввожу вектор x = [2,4] , он возвращается [2.4106,4.4106] .

 
f = @(x) [(17/77196).*x.^(3)-(15/12866).*x.^(2) 0.004];
fd = @(x) [(17/25732).*x.^(2)-(15/6433).*x];
x= %initial guess;
for i=1:10
x=x-f(x)/fd(x);
end
  

Ответ №1:

Вы можете попробовать это

 f = @(x) [(17/77196).*x.^(3)-(15/12866).*x.^(2) 0.004];
fd = @(x) [(17/25732).*x.^(2)-(15/6433).*x];
x= [2, 4];
for i = 1:10
    x = x - f(x)./fd(x);
end
x
  

Вам не хватало . после f(x) , чтобы сделать это поэлементным разделением.

Комментарии:

1. Я потратил так много времени, пытаясь убедиться, что уравнения для f и fd были введены правильно, что я совершенно забыл об этом утверждении, большое спасибо, чувак ! 🙂