数值分析实验1 方程求根

一、实验目的

二、实验方法

三、实验内容

注:上面的是我自己手打的,因为有用MathType打的,不方便复制,所以我就截图了。

四、实验程序

二分法

function x=agui_bisect(fname,a,b,e) % a,b为左右端点,e为精度
fa=feval(fname,a); % feval函数求相应函数在某个点的函数值
fb=feval(fname,b);
if fa*fb>0
    error('两端函数值同号,没有实根');
end
k=0; % k为迭代次数
x=(a+b)/2; % 二分法取中间的值
while (b-a)>(2*e)
    fx=feval(fname,x);
    if fa*fx>0
        a=x;
        fa=fx;
    else
        b=x;
        fb=fx;
    end
    disp(x)
    k=k+1;
    x=(a+b)/2;
end

迭代法

function x=agui_iteration(fname,x0,e)
% fname为函数名,x0为迭代初值,e为迭代精度
N=100; % 最大迭代次数
x=x0;
x0=x+2*e;
k=0;
while abs(x0-x)>e&k<N
    k=k+1;
    x0=x;
    x=(2-exp(x0))/10;
    disp(x)
end
if k==N 
    warning('已经达到最大迭代次数');
end

牛顿迭代法

function x=agui_newton(fname,dfname,x0,e)
% fname为函数名,x0为迭代初值,e为迭代精度
N=100; % 最大迭代次数
x=x0;
x0=x+2*e;
k=0;
while abs(x0-x)>e&k<N
    k=k+1;
    x0=x;
    x=x0-feval(fname,x0)/feval(dfname,x0);
    disp(x)
end
if k==N 
    warning('已经达到最大迭代次数');
end

五、实验结果

二分法

>> fun=inline('exp(x)+10*x-2','x')
 
fun =
 
     内联函数:
     fun(x) =exp(x)+10*x-2
 
>> x=agui_bisect(fun,0,1,5e-4)
    0.5000
 
    0.2500
 
    0.1250
 
    0.0625
 
    0.0938
 
    0.0781
 
    0.0859
 
    0.0898
 
    0.0918
 
    0.0908
 
 
x =
 
    0.0903

迭代法

>> fun=inline('exp(x)+10*x-2','x')
 
fun =
 
     内联函数:
     fun(x) =exp(x)+10*x-2
 
>> x=agui_iteration(fun,0,5e-4)
    0.1000
 
    0.0895
 
    0.0906
 
    0.0905
 
 
x =
 
    0.0905

牛顿迭代法

>> fun=inline('exp(x)+10*x-2','x')
 
fun =
 
     内联函数:
     fun(x) =exp(x)+10*x-2
 
>> dfun=inline('exp(x)+10','x')
 
dfun =
 
     内联函数:
     dfun(x) =exp(x)+10
 
>> x=agui_newton(fun,dfun,0,5e-4)
    0.0909
 
    0.0905
 
 
x =
 
    0.0905

六、结果分析

二分法的计算次数为11次;迭代法的计算次数为5次;牛顿迭代法的计算次数为3次,牛顿迭代法的计算次数最少,可以大大减小计算量,而且误差更小。

实验一方程求根:二分法、迭代法。

实验二解方程组的直接法:列主元高斯-约当消去法。

实验三求解特殊线性方程组:追赶法。

实验四解线性方程组的迭代法:高斯-赛德尔迭代法。

实验五插值问题:牛顿插值。

实验六数值积分:复合辛普生公式

实验七数值微分:变步长中点方法

实验八常微分方程初值问题:改进的欧拉公式。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值