1、0.625732, 1.05423)【实验方法与步骤】利用Lagrange插值公式,用C语言编写出插值多项式程序如下:#include #define N 5 float x=0.4,0.55,0.65,0.80,0.95,1.05;float y=0.41075,0.57815,0.69675,0.90,1.00,1.25382;float p(float xx) int i,k; float pp=0,m1,m2; for(i=0;i=N;i+) m1=1;m2=1; for(k=0;kk+) if(k!=i) m1*=xx-xk; m2*=xi-xk; pp+=yi*m1/m2; ret
2、urn pp; main() printf(f(0.596)=%lfn,p(0.596);f(0.99)=%lfn,p(0.99);【实验结果】【思考】1、给出的程序求行不行,精度高不高?2、五次Lagrange多项式与Newton插值多项式是同一个多项式吗?五次Lagrange多项式与Newton插值多项式是同一个多项式。3、为什么高次插值不能令人满意?一般来说,节点个数越多,插值函数和被插值函数就有越多的地方相等。但是随着插值节点个数的增加,两个插值节点之间插值函数并不一定能够很好地逼近被插值函数。再次,从舍入误差看,高次插值由于计算量大,可能会产生更严重的误差积累,所以,稳定性得不到保证
3、。此时就会出现龙格现象。实验二 函数逼近与曲线拟合1、编写出Legendre、Chebyshev多项式的程序;2、从随机的数据中找出其规律性,给出其近似表达式,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。例如在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量与时间的拟合曲线。(分)5101520253035404550551.72.162.863.443.874.154.374.514.584.024.6411、用C编写语言出Legendre多项式的程序如下:double p(int n, double x) if(n=0) return 1; else if
4、(n=1) return x; return (2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x)/n;int main() int n; double x; double y; printf(input n, x:n); scanf(%d%lf,&n,&x); y=p(n,x);%lfn,y); return 0;2、给出表格数据的近似解析表达式为;,选取基函数,则得到于是得方程组,用C语言编写曲线拟合的程序如下:#includeMax_N) printf(n please re_input n value: while(nMax_N|n#define epsilon 0.00
5、01 /*求基函数*/float f(float x) return (sqrt(4-sin(x)*sin(x); /*梯形公式 */float Romberg(float a,float b) int k=1; float S,x,T1,T2,S1,S2,C1,C2,R1,R2,h=b-a; T1=h/2*(f(a)+f(b); while(1) S=0;x=a+h/2; do S+=f(x); x+=h; while(xb); T2=(T1+h*S)/2.0; if(fabs(T2-T1)epsilon) return(T2); S2=T2+(T2-T1)/3.0; if(k=1) T1=
6、T2;S1=S2;h/=2;k+=1; continue; if(fabs(S2-S1)epsilon) return(S2); C2=S2+(S2-S1)/15.0; if(k=2) C1=C2;T1=T2; if(fabs(C2-C1) return(C2); R2=C2+(C2-C1)/63.0; if(k=3) R1=R2;C1=C2; if(fabs(R2-R1)#define N 5 float aN=0,0,-1,-2,-2; float bN=0,2,3,4,5; float cN=0,-1,-2,-2,0; float dN=0,3,1,0,-5; float xN=0,0,
7、0,0; float rN=0,0,0,0; float yN=0,0,0,0; float q; int k; r1=c1/b1; y1=d1/b1; for(k=2;=N-1; q=bk-rk-1*ak; rk=ck/q; yk=(dk-yk-1*ak)/q; yN-1=(dN-1-yN-2*aN-1)/(bN-1-rN-2*aN-1); xN-1=yN-1; for(k=N-2;k=1;k-) xk=yk-rk*xk+1;N; printf(x%d=%lfn,k,xk);2、将结果与精确值进行比较;3、分析数值解误差的原因。1、追赶法求解结果:2、追赶法求解结果与精确值进行比较: 因为此
8、方程组的精确解为;与追赶法求解结果一样。3、分析数值解误差的原因: 此方程组用追赶法求解时没有出现误差,但如果出现误差,我觉得就是在计算过程中的舍入误差逐步累积导致的。1、列主元消去法为什么选主元?由高斯消去法知道,小主元可能产生麻烦,应避免采用绝对值小的主元素,最好每一步选取隶属矩阵中绝对值最大的元素作为主元素,以使高斯消去法具有较好的数值稳定性。2、全主元消去法与列主元消去法各自的优缺点是什么?全主元素消去法就是找所有元素的最大值放在顺序主子阵左上角,它的优点是计算值的误差较小,缺点是计算量太大;列主元素消去法就是找一列中元素的最大值放在顺序主子阵左上角,它的优点是计算量较全主元素消去法来说要小很多,缺点是计算值的误差比用全主元素消去法计算出来的值得误差要大。3、什么样的线性方程组可用追赶法求解?线性方程组的系数矩阵为对角占优三对角线矩阵。4、什么是矩阵的条件数,在算法的误差分析中起什么作用?为非奇异矩阵,称为矩阵的条件数。的条件数越大,方程组的病态越严重,也就越难用一般的计算方法求得比较准确的解。5、矩阵的三角分解是什么?将高斯消去法改写为紧凑形式,可以直接从矩阵的元素得到计算元素的递推公式,而不需要任何中间步骤,即将的问题等价于求解两个三角形方程组:,求
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1