MATLAB实现二分法和牛顿法————数值分析第五版第七章

以书本P239页计算式习题第一题为例

1、二分法

%% 设定初始函数
syms('x');
f(x) = x^2 - 3*x + 2 - exp(x);
%% 确定取值上下界
vpa(f(1));
vpa(f(0));
a = 0;
b = 1;
%% 计算迭代次数
k = 0;
while abs(a-b) >= 0.0001 % 误差取值
    z = a;
    x = b;
    
    if f((z+x)/2) > 0
        a = (a+b)/2;
    end
    
    if f((z+x)/2) == 0
    end
    
    if f((z+x)/2) < 0
        b = (a+b)/2;
    end
    k = k+1;
end
k
vpa((a+b)/2)
vpa(f((a+b)/2))

运算结果:

>> P239_1

k =

    14

ans =
 
0.257537841796875

ans =
 
-0.000028552962574734254926696770480219

2、牛顿法

clear;
clc;
%% 设定初始函数
syms('x');
f(x) = x^3 + 2*x^2 + 10*x - 20;
%% 计算方程的解
m = solve('x^3 + 2*x^2 + 10*x - 20 = 0','x');
vpa(m); % 得到方程的解为1.3688081078213726352274143300213
%% 确定初始迭代点x0
f(1); % = -8 < 0
f(1.1); % < 0
f(2); % = 16 > 0
x0 = 1.1;
%% 构造牛顿公式
df = diff(f,x);
x1 = x0 - f(x0)/df(x0);
%% 计算迭代次数
k = 1;
while abs(x1-x0) >= 10^-100
    x0 = x1;
    x1 = x0 - f(x0)/df(x0);
    k = k+1;
end
vpa(x1)
k

运算结果:

ans =
 
1.3688081078213726352274143300213
 
k =

     8
  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值