微分方程数学实验报告

  • 格式:doc
  • 大小:39.00 KB
  • 文档页数:4

数学实验报告

实验序号:1 日期:2014年 月 日

班级 xxxxx 姓名 xxx 学号 xxxxxxx

实验名称 方程的近似根

实验所用软件及版本 Matlab

1、实验目的

掌握二分法和P等分法的编程实现.

2、实验内容

分别用二分法和P等分法求方程()0fx的根.

定义f(x)=x-0.8

3、源代码与运行结果

(1)二分法源代码:

f=input('输入函数:f(x)=');

qujian=input('输入区间=');

err=input('输入误差=');

a=qujian(1);

b=qujian(2);

yc=1;

while ((b-a)>err)&(yc~=0)

c=(a+b)/2;

x=a; ya=eval(f);

x=b; yb=eval(f);

x=c; yc=eval(f);

if ya*yc<0

b=c;

else

a=c;

end

x0=c

end

存为文件erfenfa.m

运行结果如下:

》erfenfa

输入函数:f(x)='x-0.8'

输入区间=[0,1]

输入误差=0.001

x0 =

0.5000

x0 =

0.7500

x0 =

0.8750

x0 =

0.8125

x0 =

0.7813

x0 =

0.7969

x0 =

0.8047

x0 =

0.8008

x0 =

0.7988

x0 =

0.7998

(2)P分法

syms x;fun=input('(输入函数形式)fx=');

a=input('(输入二分法下限)a=') ;

b=input('(输入二分法上限)b=');

d=input('输入误差限 d=')%二分法求根

p=input(‘输入p分法的p值,p=’)

f=inline(fun);%修改需要求解的inline函数的函数体

X=[1:p];

e=b-a;

k=0;

while e>d

h=(b-a)/(p-1);

for i=0:p-1

X(i+1)=a+(h*i);

end

for i=1:p

x=X(i);

if f(x)+1==1

a=X(i);

j=i;

else if f(x)*f(a)>0

a=X(i);

j=i+1;

end

end

end

b=X(j);

k=k+1;

e=b-a;

end

if (b-a)

w=a

else

w=(a+b)/(p-1)

end

k

运行结果:

(输入函数形式)fx=x-0.8

(输入二分法下限)a=0

(输入二分法上限)b=1

输入误差限 d=0.001

d =

1.0000e-003

输入p分法的p值,p=10

p =

10

w =

0.7999

k =

4

4、实验总结

6、教师评语及评分