📄 gasi.txt
字号:
高斯积分
程序说明及结果分析:
本程序使用MATLAD为编程软件,总共编写了五个M文件,分别利用高斯积分公式和改进的高斯积分公式对试验函数在区间上分段求积分的近似值。
1,f.m将试验函数定义成M文件,内容如下:
function y=f(x)
y=x^5;
2,gauss.m在给定区间端点和分段数量n时,在每一小段上利用高斯求积公式对试验函数求积。
程序如下:
function z=gauss(a,b,n)
z=0;
h=(b-a)/n;
b=a+h;
for i=1:n
z=z+(b-a)/2*(f((a+b)/2)*0.8888888889+f((a+b)/2+(b-a)/2*0.7745966692)*0.5555555556+f((a+b)/2+(a-b)/2*0.7745966692)*0.5555555556);
a=a+h;
b=b+h;
end
3,main.m利用以上函数对试验函数分别分一段,两段,十段求积。
程序如下:
m1=gauss(0,1,1)
m2=gauss(0,1,2)
m3=gauss(0,1,10)
运行结果如下:
m1 =0.16666666666121
m2 =0.16666666667113
m3 =0.16666666667484
分的越多精度反而降低,这是因为我们在用高斯节点时使用了近似值,分得越多误差就被放的越大。
3,gausslob.m在给定区间端点和分段数量n时,在每一小段上利用改进的高斯求积公式对试验函数求积。
程序如下:
function z=gausslob(a,b,n)
z=0;
h=(b-a)/n;
b=a+h;
for i=1:n
z=z+(b-a)/2*(f((a+b)/2)*4/3+f(b)/3+f(a)/3);
a=a+h;
b=b+h;
end
5,main2.m利用以上函数对试验函数分别分1,2,10,40,160,640,2560段求积。
程序如下:
k=gausslob(0,1,1)
k=gausslob(0,1,2)
k=gausslob(0,1,10)
k=gausslob(0,1,40)
k=gausslob(0,1,160)
k=gausslob(0,1,640)
k=gausslob(0,1,2560)
运行结果如下:
k =0.18750000000000
k =0.16796875000000
k =0.16666875000000
k =0.16666667480469
k =0.16666666669845
k =0.16666666666680
k =0.16666666666663
在此公式下分的越多越精确是因为节点的选取是精确的。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -