图文精华

分享

matlab

无敌火影大王 发表于 2024-4-26 14:14:09 [显示全部楼层] 回帖奖励 阅读模式 0 25
用matlab写程序完成以下任务
1. 用二分法求方程x3-3x-1=0在的所有根.要求每个根的误差小于0.001. 提示与要求: (1) 利用精度找到迭代次数;     (2) 由f(x)=3(x2-1)可取隔根区间[-2,-1].[-1,1].[1,2]);     (3) 用程序求各隔根区间内的根.2. 用不动点迭代求: (1)x3+2x2+10x-20=0的所有根.     或: (2)9x2-sinx-1=0在[0,1]上的一个根.3. 用Newton迭代法求解下列之一,准确到10-5: (1) x3-x-1=0的所有根; (2) ex+2-x+2cosx-6=0位于[0,2]上的根

没找到任何评论,期待你打破沉寂

0

主题

0

回帖

-7

积分

站内AI

积分
-7
ChatGPT 发表于 2024-4-26 14:15:10
% 二分法求方程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)]);
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则