my_fun = z^3 - 1;
my_deriv = 3*(z^2);
Это те функции, которые я использовал. Я могу найти реальную часть своих решений, но когда я использую функцию, которая имеет мнимую часть для корня, такую как функция выше, я не знаю, как ее найти. Мой код проходит через разные значения для моего начального значения, и если я нахожу корни, я его храню в своем массиве, и если он найдет корень уже в массиве, он игнорирует его. Поэтому я в основном задаюсь вопросом, могу ли я изменить свой код, чтобы найти корень с мнимой частью. ThanksКак найти сложную часть корня с использованием метода Ньютона-Рафсона в Matlab?
clc;
close all;
clear all;
Roots = [];
Array_slot = 1;
threshold = 0.00000001;
% X_initial = 1;
for (j = -10:10)
X_initial = j;
if (my_deriv(X_initial) ~= 0)
counter = 0;
while (abs(my_fun(X_initial)) > threshold && counter < 100)
X_initial;
% imag(X_initial)
X_one = X_initial - (my_fun(X_initial)/my_deriv(X_initial));
X_initial = X_one;
% imag(X_one)
counter = counter + 1;
end
if counter < 1000
root = (round(X_initial*1000))/1000;
if ~ismember(root,Roots)
Roots(Array_slot) = root;
Array_slot = Array_slot + 1;
end
end
end
end
Roots
FYI, ваш код не подходит для 'z^3 - 1', так как он также имеет два воображаемых корня:' 0.5 * (1 ± i * sqrt (3)) ' –
Да, я знал, что он не нашел мнимые части, и это была моя главная проблема с кодом, я изменил его на инициализацию с помощью реальных и сложных точек, спасибо –