中北大学信息商务学院
计算方法实验报告
学生姓名: 刘昊文 学号: 1603042130 学 院: 中北大学信息商务学院 专 业: 电气工程及其自动化 指导教师: 薛晓健
2017 年 04 月 19 日
实验一:非线性方程的近似解法
1.实验目的
1.掌握二分法和牛顿迭代法的原理
2. 根据实验内容编写二分法和牛顿迭代法的算法实现 注:(可以用C 语言或者matlab 语言) 2.实验设备
matlab
3.实验内容及步骤 解方程f(x)=x5-3x 3-2x 2+2=0 4.实验结果及分析
二分法:
数据:
f =x^5-3*x^3-2*x^2+2
[ n xa xb xc fc ]
1 -3 3 0 2
2.0000 -3.0000 0 -1.5000 0.0313 3.0000 -3.0000 -1.5000 -2.2500 -31.6182 4.0000 -2.2500 -1.5000 -1.8750 -8.4301 5.0000 -1.8750 -1.5000 -1.6875 -2.9632 6.0000 -1.6875 -1.5000 -1.5938 -1.2181 7.0000 -1.5938 -1.5000 -1.5469 -0.5382 8.0000 -1.5469 -1.5000 -1.5234 -0.2405 9.0000 -1.5234 -1.5000 -1.5117 -0.1015 10.0000 -1.5117 -1.5000 -1.5059 -0.0343 11.0000 -1.5059 -1.5000 -1.5029 -0.0014 12.0000 -1.5029 -1.5000 -1.5015 0.0150 13.0000 -1.5029 -1.5015 -1.5022 0.0068 14.0000 -1.5029 -1.5022 -1.5026 0.0027 15.0000 -1.5029 -1.5026 -1.5027 0.0007 16.0000 -1.5029 -1.5027 -1.5028 -0.0003 17.0000 -1.5028 -1.5027 -1.5028 0.0002 18.0000 -1.5028 -1.5028 -1.5028 -0.0001 19.0000 -1.5028 -1.5028 -1.5028 0.0001 20.0000 -1.5028 -1.5028 -1.5028
-0.0000
牛顿迭代法
> syms x;
f=(x^5-3*x^3-2*x^2+2) [x,k]=Newtondd(f,0,1e-12) f = x^5 - 3*x^3 - 2*x^2 + 2 x = NaN k =2
实验二:解线性方程组的迭代法
1.实验目的
1.掌握雅克比迭代法和高斯-塞德尔迭代法的原理
2. 根据实验内容编写雅克比迭代法和高斯-塞德尔迭代法的算法实现 注:(可以用C 语言或者matlab 语言)
2.实验设备
Matlab
3.实验内容及步骤
1、分别用雅克比迭代法和高斯-塞德尔迭代法解方程Ax=b
其中A=[4 -1 0 -1 0 0 -1 4 -1 0 -1 0 0 -1 4 -1 0 -1 -1 0 -1 4 -1 0 0 -1 0 -1 4 -1 0 0 -1 0 -1 4]
b=[0 ;5;-2;5;-2;6] 4.实验结果及分析
(雅克比迭代法)
a=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 -1 0 -1;-1 0 -1 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4] b=[0;5;-2;5;-2;6] x=agui_jacobi(a,b)
a = 4 -1 0 -1 0 0 -1 4 -1 0 -1 0 0 -1 4 -1 0 -1 -1 0 -1 4 -1 0 0 -1 0 -1 4 -1 0 0 -1 0 -1 4 b = 0 5 -2 5 -2 6
0 1.2500 -0.5000 1.2500 -0.5000 1.5000 k = 2
0.6250 1.0000 0.5000 1.0000 0.5000 1.2500 k = 3
0.5000 1.6563 0.3125 1.6563 0.3125 1.7500 k = 4
0.8281 1.5313 0.7656 1.5313 0.7656 1.6563 k = 5
0.7656 k = 6
0.9199 k = 7
0.8906 k = 8
0.9626 k = 9
0.9490 k = 10
0.9826 k = 11
0.9762 k = 12
0.9919 k = 13
0.9889 k = 14
0.9962 k = 15
0.9948 k = 16
0.9982 k = 17
0.9976 k = 18
0.9992 k = 19
0.9989 k = 20
0.9996 k = 21
0.9995 k = 22
0.9998 1.8398 0.6797 1.7813 0.8906 1.9253 0.8506 1.8979 0.9490 1.9651 0.9303 1.9524 0.9762 1.9837 0.9675 1.9778 0.9889 1.9924 0.9848 1.9896 0.9948 1.9965 0.9929 1.9952 0.9976 1.9983 0.9967 1.9977 0.9989 1.9992 0.9985 1.9989 0.9995 1.9996 0.9993 1.9995 0.9998 1.8398 0.6797 1.7813 0.8906 1.9253 0.8506 1.8979 0.9490 1.9651 0.9303 1.9524 0.9762 1.9837 0.9675 1.9778 0.9889 1.9924 0.9848 1.9896 0.9948 1.9965 0.9929 1.9952 0.9976 1.9983 0.9967 1.9977 0.9989 1.9992 0.9985 1.9989 0.9995 1.9996 0.9993 1.9995 0.9998 1.8828 1.8398 1.9453 1.9253 1.9745 1.9651 1.9881 1.9837 1.9944 1.9924 1.9974 1.9965 1.9988 1.9983 1.9994 1.9992 1.9997 1.9996
0.9998 1.9998 0.9997 1.9998 0.9997 1.9999 k = 24
0.9999 1.9998 0.9999 1.9998 0.9999 1.9998 k = 25
0.9999 1.9999 0.9998 1.9999 0.9998 1.9999 k = 26
1.0000 1.9999 0.9999 1.9999 0.9999 1.9999 k = 27
0.9999 2.0000 0.9999 2.0000 0.9999 2.0000
x = 0.9999 2.0000 0.9999 2.0000 0.9999 2.0000
(高斯-赛德尔迭代法迭代法)
a=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 -1 0 -1;-1 0 -1 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4] b=[0;5;-2;5;-2;6] x= agui_GS(a,b)
a = 4 -1 0 -1 0 0 -1 4 -1 0 -1 0 0 -1 4 -1 0 -1 -1 0 -1 4 -1 0 0 -1 0 -1 4 -1 0 0 -1 0 -1 4 b = 0 5 -2 5 -2 6 k = 1
Columns 1 through 5
0 1.[**************] -0.[**************] 1.[**************] 0.[**************] Column 6
1.[**************] k = 2
Columns 1 through 5
0.[**************] 1.[**************] 0.[**************] 1.[**************] 0.[**************] Column 6
1.[**************]
k = 3
Columns 1 through 5
0.[**************] 0.[**************] Column 6
1.[**************]
k = 4
Columns 1 through 5
0.[**************] 0.[**************] Column 6
1.[**************]
k = 5
Columns 1 through 5
0.[**************] 0.[**************] Column 6
1.[**************]
k = 6
Columns 1 through 5
0.[**************] 0.[**************] Column 6
1.[**************]
k = 7
Columns 1 through 5
0.[**************] 0.[**************] Column 6
1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************]
1.[**************]
k = 8
Columns 1 through 5 0.[**************] 1.[**************] 0.[**************] 1.[**************]
0.[**************] Column 6
1.[**************]
k = 9
Columns 1 through 5 0.[**************] 0.[**************] Column 6
1.[**************]
k = 10
Columns 1 through 5 0.[**************] 0.[**************] Column 6
1.[**************]
k = 11
Columns 1 through 5 0.[**************] 0.[**************] Column 6
1.[**************]
k = 12
Columns 1 through 5 0.[**************] 0.[**************] Column 6
1.[**************]
k = 13
Columns 1 through 5 0.[**************] 0.[**************] Column 6
1.[**************]
1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 1.[**************]
1.[**************]
1.[**************]
1.[**************]
1.[**************]
k = 14
Columns 1 through 5 0.[**************] 0.[**************] Column 6
1.[**************]
x = 0.[**************] 1.[**************] 0.[**************] 1.[**************] 0.[**************] 1.[**************]
1.[**************] 0.[**************] 1.[**************]
实验三:插值与拟合
1.实验目的
1、掌握线性插值、抛物线插值、拉格朗日插值,三次样条插值与拟合 2、根据实验内容,编写三次样条插值(一阶导数) 的算法实现。 3、根据实验内容,编写最小二乘法的算法实现。
2.实验设备
Matlab
3.实验内容及步骤
端点边界条件为第一类边界条件(给定一阶导数):
Y 0' =0. 01087Y =100
'
7
4.实验结果及分析
结果
b1 c1 d1
0.01087 0.14489 0.368
0.17405 0.4485 -0.393
0.2878 -0.25891 2.1153
1.5294 2.8188 -69.141
-0.56548 -21.035 73.614
12.794 58.247 -512.32
-28.949 -259.9 42279
最小二乘法拟合
代码:
function p=funLSM(x,y,m)
% x,y为序列长度相等的数据向量,m 为拟合多项式次数
format short ;
A=zeros(m+1,m+1);
for i=0:m
for j=0:m
A(i+1,j+1)=sum(x.^i.*y);
end
b(i+1)=sum(x.^i.*y)
end
a=A\b';
p=fliplr(a')
f=polyval(p,x)
plot(x,y,'b*',x,f, 'r--' );
disp(' 拟合方程系数按照降幂排列如下' )
一次拟合结果:
b = 145.2270
b = 145.2270 284.8363
Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 9.978262e-17. > In funLSM at 11
p = 1 0
f = 1.3600 1.4900 1.7300 1.8100 1.9500 2.1600 2.2800 2.4800 拟合方程系数按照降幂排列如下
p = 1 0
二次拟合结果
b = 145.2270
b = 145.2270 284.8363
b = 145.2270 284.8363 577.3679
Warning: Matrix is singular to working precision. > In funLSM at 11 p = NaN NaN NaN
f = NaN NaN NaN NaN NaN NaN NaN NaN
拟合方程系数按照降幂排列如下
p = NaN NaN NaN
实验四:数值积分
1.实验目的
1、掌握牛顿-柯特斯求积公式、梯形公式、辛普生公式及误差(余项)。
2、根据实验内容,编写复合梯形公式、复合辛普生公式的算法实现。
2.实验设备
Matlab
3.实验内容及步骤
1、用复合梯形公式和辛普生公式求下面两式的积分(误差要求5e-8)
2
x xe (1)⎰
1
(2)4 2⎰1+x 0
1
4.实验结果及分析
复化梯形积分
代码:
function [t]=agui_trapz(fname,d2fname,a,b,e)
%fname为北极函数,d2fname 为函数fname 的二阶导函数,a,b 分别为上下界,e 为精度 y=abs(feval(d2fname,a:1e-5:b));
m=max(y);
h=abs(sqrt(12*e/(b-a)./m));
n=ceil((b-a)/h)
h=(b-a)/n;
fa=feval(fname,a);
fb=feval(fname,b);
f=feval(fname,a+h:h:b-h+0.001*h);
t=h*(0.5*(fa+fb)+sum(f));
结果:
一:format long
t=agui_trapz(inline('x.*exp(x)'),inline('(x+2).*exp(x)'),1,2,5e-8)
n = 7019
t = 7.[**************]
二:t=agui_trapz(inline('4./(1+x.^2)'),inline('(-8+24.*x.^2)./(1+x.^2).^3'),0,1,5e-8) n = 3652
t = 3.[**************]
复化辛普生求积公式
代码:
function [s]=agui_simpson(fname,d4fname,a,b,e)
%fname为被积函数,d4fname 为函数fname 的四阶导函数,a,b 分别为上下界,e 为精度 y=abs(feval(d4fname,a:1e-5:b));
m=max(y);
h=abs((2880*e/(b-a)./m).^(0.25));
n=ceil((b-a)/h)
h=(b-a)/n;
fa=feval(fname,a);
fb=feval(fname,b);
s=fa-fb;
x=a;
for i=1:n
x=x+h/2;s=s+4*feval(fname,x);
x=x+h/2;s=s+2*feval(fname,x);
end
s=s*h/6;
结果:
一:t=agui_simpson(inline('x.*exp(x)'),inline('(x+4).*exp(x)'),1,2,5e-8)
n = 24
t = 7.[**************]
二:t=agui_simpson(inline('4/(1+x.^2)'),inline('96.*(1-10.*x.^2+5.*x.^4)./(1+x.^2).^5'),0,1,5e-8) n = 29
t = 3.[**************]
中北大学信息商务学院
计算方法实验报告
学生姓名: 刘昊文 学号: 1603042130 学 院: 中北大学信息商务学院 专 业: 电气工程及其自动化 指导教师: 薛晓健
2017 年 04 月 19 日
实验一:非线性方程的近似解法
1.实验目的
1.掌握二分法和牛顿迭代法的原理
2. 根据实验内容编写二分法和牛顿迭代法的算法实现 注:(可以用C 语言或者matlab 语言) 2.实验设备
matlab
3.实验内容及步骤 解方程f(x)=x5-3x 3-2x 2+2=0 4.实验结果及分析
二分法:
数据:
f =x^5-3*x^3-2*x^2+2
[ n xa xb xc fc ]
1 -3 3 0 2
2.0000 -3.0000 0 -1.5000 0.0313 3.0000 -3.0000 -1.5000 -2.2500 -31.6182 4.0000 -2.2500 -1.5000 -1.8750 -8.4301 5.0000 -1.8750 -1.5000 -1.6875 -2.9632 6.0000 -1.6875 -1.5000 -1.5938 -1.2181 7.0000 -1.5938 -1.5000 -1.5469 -0.5382 8.0000 -1.5469 -1.5000 -1.5234 -0.2405 9.0000 -1.5234 -1.5000 -1.5117 -0.1015 10.0000 -1.5117 -1.5000 -1.5059 -0.0343 11.0000 -1.5059 -1.5000 -1.5029 -0.0014 12.0000 -1.5029 -1.5000 -1.5015 0.0150 13.0000 -1.5029 -1.5015 -1.5022 0.0068 14.0000 -1.5029 -1.5022 -1.5026 0.0027 15.0000 -1.5029 -1.5026 -1.5027 0.0007 16.0000 -1.5029 -1.5027 -1.5028 -0.0003 17.0000 -1.5028 -1.5027 -1.5028 0.0002 18.0000 -1.5028 -1.5028 -1.5028 -0.0001 19.0000 -1.5028 -1.5028 -1.5028 0.0001 20.0000 -1.5028 -1.5028 -1.5028
-0.0000
牛顿迭代法
> syms x;
f=(x^5-3*x^3-2*x^2+2) [x,k]=Newtondd(f,0,1e-12) f = x^5 - 3*x^3 - 2*x^2 + 2 x = NaN k =2
实验二:解线性方程组的迭代法
1.实验目的
1.掌握雅克比迭代法和高斯-塞德尔迭代法的原理
2. 根据实验内容编写雅克比迭代法和高斯-塞德尔迭代法的算法实现 注:(可以用C 语言或者matlab 语言)
2.实验设备
Matlab
3.实验内容及步骤
1、分别用雅克比迭代法和高斯-塞德尔迭代法解方程Ax=b
其中A=[4 -1 0 -1 0 0 -1 4 -1 0 -1 0 0 -1 4 -1 0 -1 -1 0 -1 4 -1 0 0 -1 0 -1 4 -1 0 0 -1 0 -1 4]
b=[0 ;5;-2;5;-2;6] 4.实验结果及分析
(雅克比迭代法)
a=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 -1 0 -1;-1 0 -1 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4] b=[0;5;-2;5;-2;6] x=agui_jacobi(a,b)
a = 4 -1 0 -1 0 0 -1 4 -1 0 -1 0 0 -1 4 -1 0 -1 -1 0 -1 4 -1 0 0 -1 0 -1 4 -1 0 0 -1 0 -1 4 b = 0 5 -2 5 -2 6
0 1.2500 -0.5000 1.2500 -0.5000 1.5000 k = 2
0.6250 1.0000 0.5000 1.0000 0.5000 1.2500 k = 3
0.5000 1.6563 0.3125 1.6563 0.3125 1.7500 k = 4
0.8281 1.5313 0.7656 1.5313 0.7656 1.6563 k = 5
0.7656 k = 6
0.9199 k = 7
0.8906 k = 8
0.9626 k = 9
0.9490 k = 10
0.9826 k = 11
0.9762 k = 12
0.9919 k = 13
0.9889 k = 14
0.9962 k = 15
0.9948 k = 16
0.9982 k = 17
0.9976 k = 18
0.9992 k = 19
0.9989 k = 20
0.9996 k = 21
0.9995 k = 22
0.9998 1.8398 0.6797 1.7813 0.8906 1.9253 0.8506 1.8979 0.9490 1.9651 0.9303 1.9524 0.9762 1.9837 0.9675 1.9778 0.9889 1.9924 0.9848 1.9896 0.9948 1.9965 0.9929 1.9952 0.9976 1.9983 0.9967 1.9977 0.9989 1.9992 0.9985 1.9989 0.9995 1.9996 0.9993 1.9995 0.9998 1.8398 0.6797 1.7813 0.8906 1.9253 0.8506 1.8979 0.9490 1.9651 0.9303 1.9524 0.9762 1.9837 0.9675 1.9778 0.9889 1.9924 0.9848 1.9896 0.9948 1.9965 0.9929 1.9952 0.9976 1.9983 0.9967 1.9977 0.9989 1.9992 0.9985 1.9989 0.9995 1.9996 0.9993 1.9995 0.9998 1.8828 1.8398 1.9453 1.9253 1.9745 1.9651 1.9881 1.9837 1.9944 1.9924 1.9974 1.9965 1.9988 1.9983 1.9994 1.9992 1.9997 1.9996
0.9998 1.9998 0.9997 1.9998 0.9997 1.9999 k = 24
0.9999 1.9998 0.9999 1.9998 0.9999 1.9998 k = 25
0.9999 1.9999 0.9998 1.9999 0.9998 1.9999 k = 26
1.0000 1.9999 0.9999 1.9999 0.9999 1.9999 k = 27
0.9999 2.0000 0.9999 2.0000 0.9999 2.0000
x = 0.9999 2.0000 0.9999 2.0000 0.9999 2.0000
(高斯-赛德尔迭代法迭代法)
a=[4 -1 0 -1 0 0;-1 4 -1 0 -1 0;0 -1 4 -1 0 -1;-1 0 -1 4 -1 0;0 -1 0 -1 4 -1;0 0 -1 0 -1 4] b=[0;5;-2;5;-2;6] x= agui_GS(a,b)
a = 4 -1 0 -1 0 0 -1 4 -1 0 -1 0 0 -1 4 -1 0 -1 -1 0 -1 4 -1 0 0 -1 0 -1 4 -1 0 0 -1 0 -1 4 b = 0 5 -2 5 -2 6 k = 1
Columns 1 through 5
0 1.[**************] -0.[**************] 1.[**************] 0.[**************] Column 6
1.[**************] k = 2
Columns 1 through 5
0.[**************] 1.[**************] 0.[**************] 1.[**************] 0.[**************] Column 6
1.[**************]
k = 3
Columns 1 through 5
0.[**************] 0.[**************] Column 6
1.[**************]
k = 4
Columns 1 through 5
0.[**************] 0.[**************] Column 6
1.[**************]
k = 5
Columns 1 through 5
0.[**************] 0.[**************] Column 6
1.[**************]
k = 6
Columns 1 through 5
0.[**************] 0.[**************] Column 6
1.[**************]
k = 7
Columns 1 through 5
0.[**************] 0.[**************] Column 6
1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************]
1.[**************]
k = 8
Columns 1 through 5 0.[**************] 1.[**************] 0.[**************] 1.[**************]
0.[**************] Column 6
1.[**************]
k = 9
Columns 1 through 5 0.[**************] 0.[**************] Column 6
1.[**************]
k = 10
Columns 1 through 5 0.[**************] 0.[**************] Column 6
1.[**************]
k = 11
Columns 1 through 5 0.[**************] 0.[**************] Column 6
1.[**************]
k = 12
Columns 1 through 5 0.[**************] 0.[**************] Column 6
1.[**************]
k = 13
Columns 1 through 5 0.[**************] 0.[**************] Column 6
1.[**************]
1.[**************] 1.[**************] 1.[**************] 1.[**************] 1.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 0.[**************] 1.[**************]
1.[**************]
1.[**************]
1.[**************]
1.[**************]
k = 14
Columns 1 through 5 0.[**************] 0.[**************] Column 6
1.[**************]
x = 0.[**************] 1.[**************] 0.[**************] 1.[**************] 0.[**************] 1.[**************]
1.[**************] 0.[**************] 1.[**************]
实验三:插值与拟合
1.实验目的
1、掌握线性插值、抛物线插值、拉格朗日插值,三次样条插值与拟合 2、根据实验内容,编写三次样条插值(一阶导数) 的算法实现。 3、根据实验内容,编写最小二乘法的算法实现。
2.实验设备
Matlab
3.实验内容及步骤
端点边界条件为第一类边界条件(给定一阶导数):
Y 0' =0. 01087Y =100
'
7
4.实验结果及分析
结果
b1 c1 d1
0.01087 0.14489 0.368
0.17405 0.4485 -0.393
0.2878 -0.25891 2.1153
1.5294 2.8188 -69.141
-0.56548 -21.035 73.614
12.794 58.247 -512.32
-28.949 -259.9 42279
最小二乘法拟合
代码:
function p=funLSM(x,y,m)
% x,y为序列长度相等的数据向量,m 为拟合多项式次数
format short ;
A=zeros(m+1,m+1);
for i=0:m
for j=0:m
A(i+1,j+1)=sum(x.^i.*y);
end
b(i+1)=sum(x.^i.*y)
end
a=A\b';
p=fliplr(a')
f=polyval(p,x)
plot(x,y,'b*',x,f, 'r--' );
disp(' 拟合方程系数按照降幂排列如下' )
一次拟合结果:
b = 145.2270
b = 145.2270 284.8363
Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 9.978262e-17. > In funLSM at 11
p = 1 0
f = 1.3600 1.4900 1.7300 1.8100 1.9500 2.1600 2.2800 2.4800 拟合方程系数按照降幂排列如下
p = 1 0
二次拟合结果
b = 145.2270
b = 145.2270 284.8363
b = 145.2270 284.8363 577.3679
Warning: Matrix is singular to working precision. > In funLSM at 11 p = NaN NaN NaN
f = NaN NaN NaN NaN NaN NaN NaN NaN
拟合方程系数按照降幂排列如下
p = NaN NaN NaN
实验四:数值积分
1.实验目的
1、掌握牛顿-柯特斯求积公式、梯形公式、辛普生公式及误差(余项)。
2、根据实验内容,编写复合梯形公式、复合辛普生公式的算法实现。
2.实验设备
Matlab
3.实验内容及步骤
1、用复合梯形公式和辛普生公式求下面两式的积分(误差要求5e-8)
2
x xe (1)⎰
1
(2)4 2⎰1+x 0
1
4.实验结果及分析
复化梯形积分
代码:
function [t]=agui_trapz(fname,d2fname,a,b,e)
%fname为北极函数,d2fname 为函数fname 的二阶导函数,a,b 分别为上下界,e 为精度 y=abs(feval(d2fname,a:1e-5:b));
m=max(y);
h=abs(sqrt(12*e/(b-a)./m));
n=ceil((b-a)/h)
h=(b-a)/n;
fa=feval(fname,a);
fb=feval(fname,b);
f=feval(fname,a+h:h:b-h+0.001*h);
t=h*(0.5*(fa+fb)+sum(f));
结果:
一:format long
t=agui_trapz(inline('x.*exp(x)'),inline('(x+2).*exp(x)'),1,2,5e-8)
n = 7019
t = 7.[**************]
二:t=agui_trapz(inline('4./(1+x.^2)'),inline('(-8+24.*x.^2)./(1+x.^2).^3'),0,1,5e-8) n = 3652
t = 3.[**************]
复化辛普生求积公式
代码:
function [s]=agui_simpson(fname,d4fname,a,b,e)
%fname为被积函数,d4fname 为函数fname 的四阶导函数,a,b 分别为上下界,e 为精度 y=abs(feval(d4fname,a:1e-5:b));
m=max(y);
h=abs((2880*e/(b-a)./m).^(0.25));
n=ceil((b-a)/h)
h=(b-a)/n;
fa=feval(fname,a);
fb=feval(fname,b);
s=fa-fb;
x=a;
for i=1:n
x=x+h/2;s=s+4*feval(fname,x);
x=x+h/2;s=s+2*feval(fname,x);
end
s=s*h/6;
结果:
一:t=agui_simpson(inline('x.*exp(x)'),inline('(x+4).*exp(x)'),1,2,5e-8)
n = 24
t = 7.[**************]
二:t=agui_simpson(inline('4/(1+x.^2)'),inline('96.*(1-10.*x.^2+5.*x.^4)./(1+x.^2).^5'),0,1,5e-8) n = 29
t = 3.[**************]