数值分析实验报告——方程求根

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数值分析》实验报告

班级信科1501 学号150803114 姓名梁恩昊日期2017.10.3

实验一________ 方程求根_______

一、实验目的:

掌握二分法、Newt on法、不动点迭代法、弦截法求方程的根的各种计算方法、并实施程序调试和运行,学习应用这些算法于实际问题。

二、实验内容:

二分法、Newt on法、不动点迭代法、弦截法求方程的根、程序的调试和运行,给出实例的计算结果。观察初值对收敛性的影响。

三、实验步骤:

①、二分法:

定义:对于区间[a, b]上连续不断且f (a)・f (b) <0的函数y=f (x),通过不断地把函数f (x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。

实现方法:首先我们设一方程400*(x A4)-300*(x A3)+200*(x A2)-10*x-仁0 ,并求其在区间[0.1,1]上的根,误差限为e=10A-4。

PS:本方法应用的软件为matlab。

disp('二分法')

a=0.1;b=1;

tol=0.0001;

n0=100;

fa=400*(a.A4)-300*(a.A3)+200*(a.A2)-10*a-1;

for i=1: n0 p=(a+b)/2;

fp=400*(p.A4)-300*(p.A3)+200*(pA2)-10*p-1;

if fp==0||(abs((b-a)/2)

disp(' 用二分法求得方程的根p=')

disp(p)

disp(' 二分迭代次数为:')

disp(i)

break;

end;

if fa*fp>0 a=p; else b=p;

end;

end;

if i==n0&&~( fp==0||(abs((b-a)/2)

程序调试:

A«^SK»■ J^+JK KL::-L4*«r-j.

I JX p«I K*bl >r2

ffp"iDb* p. 4)^J &6" p> 31+2D0» ■ p. Z E ]. if fji-=< 11 f*b. i 'b-» i /2 ■

4±JP •図二好去求谭才程的Mhh)

dljp pj

4U. ' i)

勺巩妙.

*nd:

if e&*fp 'O E=P

*194 b=1>

rnd.;

If UsuCSr rp=Ql II»Ife-Sl IlTil^SXr&li 4-llpi WI nsns' 「二〒迭代垢归*i X出方程茁霍r “

二泌

曲二讨;t3HS芳壮甘训壮匕

«. n$9

_曲乜竹Tfl-n:

U

k r>\

运行结果:

用二分法求得方程的根p=

0.1108

二分迭代次数为:

14

②Newton 法

Vllw M F

aim0.1

BQ

^1104Mia

aw

EeaE7«■

IM

MM sita

LWJOr-CA UJM

宀li > aihJ H^.ul 囈鬥收

i-1 严 f rt*b>F2, .

fp=-;00rlp ■jJ-MKhri-p - 3)4 200. p. ■?

” if fp=:!| I ahi lh-3l Z'

•HL13JI 均一-蹙車啤*||?星

:必屮样

iiusC 二特为t "tt F ' •

•bcA&k 卜曲

it 忸4=>

.llAt fe^F.

4H4 :

'if i—rOtt ""(f p—-fl 11 I' ②讥=

dlTpC r 二一:启Tf; 7■尢詳国••舉■

亡远

-" □ * * SI ■ ■ Q ■ 113知祢硝—■福鼻耕■ |

ibhb-irfpte

R

定义:取定初值xO,找到函数对应的点,然后通过该点作函数切线,交x轴,得到新的横坐标值,然后找函数对应的点,做切线,得到新的横坐标值,重复上述步骤,多次迭代,直

到收敛到需要的精度。

实现方法:我们与二分法一样,先设一方程400*(x A4)-300*(x A3)+200*(x A2)-10*x -仁0 ,并求其在区间[O.1,1] 上的根。

PS:本方法应用的软件为matlab。

syms x;

diff(400*(x.A4)-300*(x.A3)+200*(x.A2)-10*x-1) %求导方程

函数文件:

function Newton=fun(a)

Newton=400*(a.A4)-300*(a.A3)+200*(a.A2)-10*a-1;

end

function Newton2=dfun(b)

Newton2=1600*bA3-900*bA2+400*b-10; %fun 函数的导数

end

主程序:

x0=1;

while 1

x1=x0-fun(x0)/dfun(x0);

if abs(x1-x0)<1e-8 || abs(fun(x1))<1e-10 break;

相关文档
最新文档