实验报告二

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

浙江大学城市学院实验报告

课程名称 科学计算

实验项目名称 一元非线性方程的解法

实验成绩 指导老师(签名 ) 日期

一. 实验目的和要求

1. 用Matlab 软件掌握求解非线性方程的二分法、迭代法和牛顿法,并对结果作初步分析;

2. 通过实例练习用非线性方程求解实际问题。

二. 实验内容和原理

分析应用题2-1,2-2,2-3,2-4,2-5要求将问题的分析过程、Matlab 源程序和运行结果和结果的解释、算法的分析写在实验报告上。

2-1 程序注释

对用二分法、迭代法和牛顿法求一元非线性方程数值解的Matlab 程序的每一句添上注释。 二分法: [x,n]=BisectionMethod(a,b,f,epsi,Nmax)

迭代法: [x,n]=IterationMethod(x0,g,epsi,Nmax)

Newton 法: [x,n]=NewtonMethod(x0,f,epsi,Nmax)

2-2 分析应用题 用二分法求方程2

()sin 04

x f x x =-=和()sin 0x g x e x =-=根的近似值,使误差不超过210-,输出每次二分之后解的近似结果以及二分的次数,其中()0g x =的根只需求最接近原点的那个根。

2-3 分析应用题

已知方程230x

x e -=有以下三种迭代格式,分析三种迭代格式的收敛性,求出迭代精度为610-的数值结果,并比较迭代序列的收敛速度。

1

)1n x += 2)12ln ln3n n x x +=+ 3)136n n x n n n x n x e x x x e +-=--

2-4 分析应用题

用下列方法求方程1020x

e x +-=的近似根,要求误差不超过31102-⨯,并比较计算量。 1)在区间[0, 1]上用二分法;

2)取初值0x =,并用迭代过程12(0,1,2,.......)10

k x k e x k +-==;

3)取初值00x =用牛顿法求解。

2-5 分析应用题

以定期存储为基础的储蓄帐户的累积值可由定期年金方程确定

[(1)1]n P A i i

=+- 在这个方程中,A 是帐户中的数额,P 是定期存储的数额,i 是n 个存储期间的每期利率。一个工程师想在20年后退休时储蓄帐户上的数额达到750000美元,而为了达到这个目标,他每个月能存1500美元。为实现他的储值目标,最小利率应是多少?假定利息是月复利的。

选做题

试用Newton 迭代法分别求解方程(1)

0,3,6,12m x m -==,取迭代初始值0 1.5x =,要求误差不超过510-,观察迭代序列的收敛情况,分析所发生的现象。能否改造Newton 法使

得它收敛更快?

三. 操作方法与实验步骤(包括实验数据记录和处理)

1.

(1)

以y=x.^2-3*x+2-exp(x)为例

1)二分法(文件名:bisect.m)

a)function[R]=bisect(f,a,b,e1,n)

% f 要求根函数名

% a 初试有根区间最小值

% b 初试有根区间最大值

% e 精度

% n 迭代次数

k=0;

fb=feval_r(f,b);

fa=feval_r(f,a);

x=(a+b)/2;

fx=feval_r(f,x);

while abs(a-b)>e1&k

k=k+1;

disp([k,x,fx,abs(a-b)]);

%显示迭代过程

if fx*fa<0

b=x;

fb=fx;

else

a=x;

fa=fx;

end

x=(a+b)/2;

fx=feval_r(f,x);

end

R=x;

b) 二分法、牛顿法所需用的原函数(文件名Myfun.m:) function[y]=myfun(x)

y=x.^2-3*x+2-exp(x)

(2)

普通迭代法(文件名:DieDai.m)

a) function [R]=DieDai(g,x1,N,e) %普通迭代法

% g要求根函数名

%x1迭代初值

%N迭代最大次数

%e 精度

k=0;

x2=feval_r(g,x1);

while abs(x2-x1)>e&k

k=k+1;

disp([k,x1,x2,abs(x1-x2)]); 显示迭代过程%

x1=x2;

x2=feval_r(g,x1);

end

R=x2;

if k==N

error('error');

% 所需迭代已达到

end

b) 实现定点迭代法所需用的函数(文件名:myfun1.m) function[y]=myfun1(x)

% 要求的函数方程

y=(x.^2+2-exp(x))/3

(3)

3)牛顿法(文件名:Newton.m)

a)function [R]=newton(g,dg,x0,n,e)

%牛顿法

%g 要求根函数名

%dg 要求根函数的导函数名

%x0 初值

%e精度

%n 迭代次数

x1=x0- feval_r(g,x0)/feval_r(dg,x0);

k=0;

while ke;

k=k+1;

if feval_r(dg,x0)==0

error(error)

;%导函数为0程序停止

else

disp([k,x1,x0,abs(x1-x0)]);

相关文档
最新文档