爱玩科技网
您的当前位置:首页第二次实验报告(非线性方程求根)

第二次实验报告(非线性方程求根)

来源:爱玩科技网
数值计算方法Matlab实验报告

数 学 实 验 报 告

实 验 五

学院:数学与统计学院 班级:数学与统计学院(2)班

姓名:*** 学号:************

数值计算方法Matlab实验报告

非线性方程的数值解法实验

1实验目的

1)进一步熟练掌握求解非线性方程的牛顿迭代法和弦截法。

2)根据牛顿迭代法和弦截法的原理,编写程序求解非线性方程,提高编程解决问题的能力。

2 实验内容

(1)用牛顿法和割线法求下列方程的根

x^2-e^x=0; x*e^x-1=0; (2)用牛顿迭代法求平方根,计算5 3实验原理

(1)牛顿迭代公式:xk1xkf(xk)/f'(xk)

双点弦法公式:xk1xkf(xk)(xkxk1)

f(xk)f(xk1)(2)令f(x)xA,再用牛顿法求根。

24实验步骤

1)根据牛顿迭代法,双点弦法的算法编写相应的求根函数; 2)用牛顿迭代法和双点弦法分别对方程进行求解;

5 程序设计 牛顿迭代法

x0=1.0; N=100; k=0; eps=5e-6; delta=1e-6;

数值计算方法Matlab实验报告

while(1)

x1=x0-fc1(x0)/fc2(x0); k=k+1; if k>N

disp('Newton method failed') break end

if(abs(x1-x0)fprintf('%f',x0)

fprintf('%f',abs(fc1(x1)))

双点弦法

function cutline(x0,x1) N=100; k=0; delta=5e-8; while(1)

(abs(x1-x0)>=delta) c=x1;

x1=cutnext(x0,x1);

x0=c;

k=k+1; if k>N

disp('Cutline method failed') break; end

if(abs(x1-x0)fprintf('%10f\\n',x1);

function y=cutnext(a,b) y=b-fc(b)/(fc(b)-fc(a))*(b-a);

1) 原函数

数值计算方法Matlab实验报告

function fc1=fc1(x) fc1=x^2-exp(x); end

导函数

function fc2=fc2(x) fc2=2*x-exp(x); end

2)原函数function fc1=fc1(x) fc1=x*exp(x)-1; end

导函数

function fc2=fc2(x) fc2=1*exp(x)+x*exp(x); end

3)原函数

function fc1=fc1(x) fc1=x^2-5; end

导函数

function fc2=fc2(x) fc2=2*x; end

6实验结果及分析

方程 牛顿迭代法结果 牛顿法迭代次数 弦截法结果 弦截法迭代次数 x^2-e^x=0 x*e^x-1=0 x250

注:牛顿迭代法由于设置delta=1e-6,所以算出的误差e<1.0*10^-6;

割线法由于设置delta=5e-8,所以误差e<5.0*10^-8.

7总结

因篇幅问题不能全部显示,请点此查看更多更全内容