微分方程数学实验报告
- 格式: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、教师评语及评分