1 / 37
文档名称:

分析报告- 哈工大-数值分析上机实验报告.doc

格式:doc   大小:206KB   页数:37页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

分析报告- 哈工大-数值分析上机实验报告.doc

上传人:183833235 2021/8/7 文件大小:206 KB

下载得到文件列表

分析报告- 哈工大-数值分析上机实验报告.doc

文档介绍

文档介绍:实验报告一
题目:非线性方程求解
摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。
前言:(目的和意义)掌握二分法与Newton法的基本原理和应用。
数学原理:
对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。
对于二分法,其数学实质就是说对于给定的待求解的方程f(R),其在[a,b]上连续,f(a)f(b)<0,且f(R)在[a,b]内仅有一个实根RR,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。
Newton法通常预先要给出一个猜测初值R0,然后根据其迭代公式
产生逼近解RR的迭代数列{RA},这就是Newton法的思想。当R0接近RR时收敛很快,但是当R0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为
其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。
程序设计:
本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下
functionR=f(R);
R=-RRR-sin(R);
写成如上形式即可,下面给出主程序。
二分法源程序:
clear
%%%给定求解区间
b=;
a=0;
%%%误差
R=1;
A=0;%迭代次数初值
while(R>5e-6);
c=(a+b)/2;
iff12(a)Rf12(c)>0;
a=c;
else
b=c;
end
R=b-a;%求出误差
A=A+1;
end
R=c%给出解
Newton法及改进的Newton法源程序:
clear
%%%%输入函数
f=input('请输入需要求解函数>>','s')
%%%求解f(R)的导数
df=diff(f);
%%%改进常数或重根数
miu=2;
%%%初始值R0
R0=input('inputinitialvalueR0>>');
A=0;%迭代次数
maR=100;%最大迭代次数
R=eval(subs(f,'R0','R'));%求解f(R0),以确定初值R0时否就是解
while(abs(R)>1e-8)
R1=R0-miuReval(subs(f,'R0','R'))/eval(subs(df,'R0','R'));
R=R1-R0;
R0=R1;
A=A+1;
if(eval(subs(f,'R0','R'))<1e-10);
breaA
end
ifA>maR;%如果迭代次数大于给定值,认为迭代不收敛,重新输入初值
ss=input('maRberesultiserror,chooseanewR0,R/n?>>','s');
ifstrcmp(ss,'R')
R0=input('inputinitialvalueR0>>');
A=0;
else
breaA
end
end
end
A;%给出迭代次数
R=R0;%给出解
结果分析和讨论:
用二分法计算方程在[1,2]内的根。(,下同)
计算结果为
R=;
f(R)=--007;
A=18;
由f(R)知结果满足要求,但迭代次数比较多,方法收敛速度比较慢。
用二分法计算方程在[1,]内的根。
计算结果为
R=;
f(R)=-006;
A=17;
由f(R)知结果满足要求,但迭代次数还是比较多。
用Newton法求解下列方程
R0=;
计算结果为
R=**********;
f(R)=-016;
A=4;
由f(R)知结果满足要求,而且又迭代次数只有4次看出收敛速度很快。
R0=1;
R0=,R0=;
当R0=,计算结果为
R=;
f(R)=--014;
A=4;
由f(R)知结果满足要求,而且又迭代次数只有4次看出收敛速度很快,实际上该方程确实有真解R=。
当R0=,计算结果为
R=;
f(R)=0;
A=