return0;
}
调试过程,实验结果及分析:
1、分段线性插值程序运行结果如下:
2、分段抛物线插值程序运行结果如下:
3、由运行结果可以看出:
分段抛物线插值比分段线性插值更准确,这是因为抛物线插值在所求点的附近选取的点,并且线性插值和抛物线插值在所考虑区间内插值得到的数值精确度比在考虑区间外所得到的数值的精确度要高,这说明了内插比外推插值效果要好。
第二次实验小结及体会
1、插值法是数值分析中的一类重要方法,有着广泛的应用。
本次试验中几种数值方法及有关概念和理论是数值分析最基本的内容
2、拉格朗日插值多项式是研究数值微积分与微分方程数值解的重要工具,但该方法计算量很大,且误差估计很困难,理论上还是比较重要。
3、牛顿插值多项式是拉格朗日插值多项式的变形,具有继承性,比拉格朗日插值多项式节省计算量,试验中用到了均差的概念,当节点数增加或减少时,只需将原有的计算结果增加或减少一项,着也是牛顿插值比拉格朗日插值方便的地方,应当注意。
4、分段低次多项式插值由于具有良好的稳定性与收敛性,且算法简单,可根据节点处函数值的具体情况,采用不同的插值公式,解决了曲线平滑性的问题,更便于应用。
第三次试验
(一)复化梯形求算法积流程图
(三)变步长梯形求积算法流程图
(二)复化Simpson求积算法流程图
(四)Romberg公式求积流程图
编程计算积分
(一)复化梯形:
复化梯形求积程序
#include
#include
doublef(doublet)
{
return1/(1+t*t);
}
usingnamespacestd;
intmain()
{
inti,n;
doubleh,a,b,T,temp,Tn;
cout<<"请输入求积区间:
"<cin>>a>>b;
cout<<"请输入区间等分数:
"<cin>>n;
h=(b-a)/n;
temp=0;
T=0;
for(i=1;i{
temp=f(a+i*h);
T=T+2*temp;
}
Tn=(f(a)+f(b)+T)*h/2;
cout<<"经过复化梯形求积所得积分值T"<"<return0;
}
调试过程,实验结果及分析:
1/(x*x)在区间[0,1]上8等分后,程序运行结果如下:
对区间等分后求每个子区间上的积分值,然后将每个子区间的积分值相加,就得到整个积分区间上的积分值,梯形公式具有一次代数精度。
(二)复化Simpson:
复化Simpson算法程序源代码
#include
#include
doublef(doublet)
{
return1/(1+t*t);
}
usingnamespacestd;
intmain()
{
inti,n;
doubleh,a,b,S1,S2,temp1,temp2,Sn;
cout<<"请输入求积区间:
"<cin>>a>>b;
cout<<"请输入区间等分数:
"<cin>>n;
h=(b-a)/n;
temp1=0;
temp2=0;
S1=0;
S2=0;
for(i=0;i{
temp1=f(a+i*h);
temp2=f(a+(i+0.5)*h);
S1=S1+2*temp1;
S2=S2+4*temp2;
}
Sn=(f(b)-f(a)+S1+S2)*h/6;
cout<<"经过复化Simpson求积所得积分值S"<"<return0;
}
调试过程,实验结果及分析:
1/(x*x)在区间[0,1]上8等分后,程序运行结果如下:
复化Simpson求积公式具有三次代数精度,因此在区间和区间等分数相同时,所取得的积分值结果比梯形公式更加精确。
和梯形公式一样都是利用线性组合来计算积分的近似值。
(三)变步长梯形求积:
变步长梯形求积程序源代码
#include
#include
doubl