my_fun = z^3 - 1;
my_deriv = 3*(z^2);
これらは私が使用した関数です。解の実数部は見つかりますが、上記の関数のように根元に虚数部がある関数を使うと、どうやって見つけたらいいのかわかりません。私のコードは初期値に対して異なる値を通過し、ルートが見つかった場合はそれを配列に格納し、すでに配列内にルートが見つかった場合はそれを無視します。したがって、基本的に、虚数部を持つルートを見つけるためにコードを変更できるかどうか疑問に思っています。ありがとう
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