数值分析实验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次,牛顿迭代法的计算次数最少,可以大大减小计算量,而且误差更小。

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

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

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

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

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

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

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

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

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
课题一: 线性方程组的迭代法 一、实验内容 1、设线性方程组 = x = ( 1, -1, 0, 1, 2, 0, 3, 1, -1, 2 ) 2、设对称正定阵系数阵线方程组 = x = ( 1, -1, 0, 2, 1, -1, 0, 2 ) 3、三对角形线性方程组 = x = ( 2, 1, -3, 0, 1, -2, 3, 0, 1, -1 ) 试分别选用Jacobi 迭代法,Gauss-Seidol迭代法和SOR方法计算其解。 二、实验要求 1、体会迭代法求解线性方程组,并能与消去法做以比较; 2、分别对不同精度要求,如 由迭代次数体会该迭代法的收敛快慢; 3、对方程组2,3使用SOR方法时,选取松弛因子 =0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者; 4、给出各种算法的设计程序和计算结果。 三、目的和意义 1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较; 2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序; 3、体会上机计算时,终止步骤 (予给的迭代次数),对迭代法敛散性的意义; 4、体会初始解 x ,松弛因子的选取,对计算结果的影响。 课题二:数值积分 一、实验内容 选用复合梯形公式,复合Simpson公式,Romberg算法,计算 (1) I = (2) I = (3) I = (4) I = 二、实验要求 1、 编制数值积分算法的程序; 2、 分别用两种算法计算同一个积分,并比较其结果; 3、 分别取不同步长 ,试比较计算结果(如n = 10, 20等); 4、 给定精度要求 ,试用变步长算法,确定最佳步长。 三、目的和意义 1、 深刻认识数值积分法的意义; 2、 明确数值积分精度与步长的关系; 3、 根据定积分的计算方法,可以考虑二重积分的计算问题。 四、流程图设计
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值