资源描述:
《数值分析课程作业》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、数值分析课程作业(1)解答如下:不稳定的数值计算公式往往会出现“差之毫厘,失之千里”的错误结果。因此,在计算过程中要选用稳定的计算公式。在本题的迭代计算中,由人往后递推的求解7;会使误差快速増大,而先近似计算Z,然后回代计算人-r-A会使误差逐渐减小,因此使用此计算方法较为稳定。用C语言实现的代码如下:#include/*计算k的阶乘*/intk_factorial(intk){if(0==k)return1;elsereturnk*k_factorial(k-1);}/*计算1/e,k控制计算
2、精度*/doublegct_e_l(intk){if(0==k)return1;elsereturn1.0*((k%2)?-1:l)/k_factorial(k)+get_e_l(k-1):}*该函数用于计算公式的近似位。对于给定的nffl,首先汁算(n+k)位对应的*公式的近似值,然后回代计算n值对应的近似值。*/doubleget_value(intn,intk){doubleres;res=(l+get_e__l(7))/((n+k)+l)/2;while(k>0){res=(1-res)/(n+k):k—
3、;}returnres;intmain(intargc,char*argv口){intn;printf("请输入一个n值:");scanf&n);if(n<0)return0;printf("对于给定的n=%d,公式的近似值为:n,get_value(n,9));return0;}(2)解答如下:考虑拟合函数:=¥。⑺+将数据表XXxx2……X。f(x)7ix2……ya中的数据代入,得超定方程“()爪(七)+axq,(X,)+a2q2(%,)+•••+anqn(,x^=y,⑽(x2)+仏%(x2)+呀2(%2)+
4、…+anqn(x2)=y2其系数矩阵为?o(xi)(^1)%(%,)…Qn(-^1)^0(-^2)ACx2)^2(X2)…^(^2)…由于多项式%(又),Q(^),Q2(^),,仏(T)在点集{及,及,,X}上的正交,所以超定方程组的系数矩阵中不同列的列向量是相互正交的向量组。于是用这一矩阵的转置矩阵去左乘超定方程组左、右两端得正规方程组“0=0?o,yWo,^))(仏,=(9i,y)"J是一元一次方程可以直接写出原超方程组的最小二乘解,所以拟合函数为Mq°M+^q>M+祥的,只是形式上不同、算法这一结果与用次
5、多项式拟合所得结果在理论是完全实现上避免了解病态方程组。用c语言实现的代码如下:#include#include#include#includeconstdoubleEPS=1E-1O;//运算粘度/★★*读入节点数组x、蚋数值数组y、权值数组G)及节点数N*/voidreadFile(double*&x,double*&yzdouble*&omiga,int&N){FILE*fp;fp=fopen(11.WZXSCF.txtn,HrH);i
6、f(fp==NULL){printf("指定位置的文件不存在,请检査!!”);getch();exit(0);for(N=l;;N++){//计算节点个数Nfscanf(fp,n%*lf%*lf%*lff,);if(feof(fp))break;}x=newdouble[N];y=newdouble[N];omiga=newdouble[N];rewind(fp);for(inti=0;i7、*X数组存放节点的x[i]位,y数组存放节点的y[i],omiga数组各节点对应权值*a数组为拟和的结果多项式的各系数,m为V点个数,n为多项式K岛次数*/voidcurveFitting(double*x,double*y,double*omigazdouble*a,intm,intn)double*alpha,*beta,*Q*t,*s,*d,*q;inti,j,k;doublesuml,sum2;alpha=newdouble[n+1];//cc数组beta=newdouble[n+1];//p数组b=ne
8、wdouble[n+1];//多项式Q(j-l)[X]的系数t=newdouble[n+1];//多项式Q