% 二分法求方程x^3-3x-1=0的根
f = @(x) x^3 - 3*x - 1;
a = [-2, -1, -1, 1, 1, 2]; % 隔根区间
roots = [];
for i = 1:2:length(a)
left = a(i);
right = a(i+1);
iter = 0;
while (right - left) > 0.001
mid = (left + right)/2;
if f(left)*f(mid) < 0
right = mid;
else
left = mid;
end
iter = iter + 1;
end
root = (left + right)/2;
roots = [roots, root];
end
disp('二分法求得的根为:');
disp(roots);
% 不动点迭代求x^3+2x^2+10x-20=0的根
g1 = @(x) (20 - 2*x^2 - x^3)/10; % x = (20 - 2x^2 - x^3)/10
% 初值选择
x0 = 0;
tol = 0.0001;
x = x0;
while abs(x - g1(x)) > tol
x = g1(x);
end
disp(['不动点迭代求得的根为:', num2str(x)]);
% Newton迭代法求x^3-x-1=0的根
f2 = @(x) x^3 - x - 1;
f2_prime = @(x) 3*x^2 - 1;
% 初值选择
x0 = 0;
tol = 0.00001;
x = x0;
while abs(f2(x)) > tol
x = x - f2(x)/f2_prime(x);
end
disp(['Newton迭代法求得的根为:', num2str(x)]);
|