资源描述:
《数值分析B第二次大作业.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、算法设计方案1.解非线性方程使用valuez(>进行牛顿迭代,对,,(>的11行21列数组分别求出原题中方程组的一组解,得到一组与一一对应的。b5E2RGbCAP2.分片法插值应用Sharding(>函数<包括inv(>,kchoose(>等函数)对于已求出的,使用分片二次代数插值法对原题中关于的数表进行插值得到与每个对应的。于是产生了z=f(x,y>的11*21个数值解。p1EanqFDPw3.最小二乘法曲面拟合应用preprocess(>,LUbreakdown(>,LUsolving(>函数从k=1开始逐渐增大k的值,并使用最小二乘法曲面拟合法对z=f(x,
2、y>进行拟合,得到每次的。当时结束计算,输出拟合结果。DXDiTa9E3d4.计算误差调用函数fvalue(>,shuchu(>计算的值并输出结果,对逼近的效果进行观察。其中。5.主函数Main<)主要进行子函数的调用,放于程序尾部。包括kchoose(>、fvalue(>、shuchu(>用于计算,以及近似值和数表。RTCrpUDGiT二、全部源程序如下:#include#include#definess1.0e-12//精度水平ss;5PCzVD7HxA#definesss1.0e-219#defineL500//迭代最大次数;j
3、LBHrnAILg#defineK10//确定最小二乘法拟合时的最多次数;doubleaaa_u[6]={0,0.4,0.8,1.2,1.6,2.0},//输入矩阵数据表在z
4、9{0.78,-0.02,-0.5,-0.66,-0.5,-0.02},{1.5,0.46,-0.26,-0.66,-0.74,-0.5},},aaa_val_z[11][21]={0},init_tuvw[4]={1,2,1,2},aaa_crs[K][K]={0}。intvaluez(doublex,doubley,inti,intj>//用牛顿迭代法计算x(i>,y(i>对应的函数值zLDAYtRyKfE{doublevtuvw[4],det[4],ff[4][4],f[4],mo_k,mo_delta_k,shang,t,u。Zzz6ZB2Ltkintn=0,
5、k,flag_max,flag_stat。voidsolve(doubleff[4][4],doubledet[4],doublef[4]>。dvzfvkwMI1doubleSharding(double,double>。flag_stat=1。for(k=0。kvtuvw[k]=init_tuvw[k]。do{f[0]=-1.0*(0.5*cos(vtuvw[0]>+vtuvw[1]+vtuvw[2]+vtuvw[3]-x-2.67>。//输入非线性方程组rqyn14ZNXIf[1]=-1.0*(vtuvw[0]+0.5*sin(vtuvw[1]>+v
6、tuvw[2]+vtuvw[3]-y-1.07>。EmxvxOtOcof[2]=-1.0*(0.5*vtuvw[0]+vtuvw[1]+cos(vtuvw[2]>+vtuvw[3]-x-3.74>。SixE2yXPq5f[3]=-1.0*(vtuvw[0]+0.5*vtuvw[1]+vtuvw[2]+sin(vtuvw[3]>-y-0.79>。6ewMyirQFLff[0][0]=-0.5*sin(vtuvw[0]>。ff[0][1]=1。ff[0][2]=1。ff[0][3]=1。//对非线性方程组计算关于t,u,v,w的偏导数kavU42VRUsff[1][0]=
7、1。ff[1][1]=0.5*cos(vtuvw[1]>。ff[1][2]=1。ff[1][3]=1。y6v3ALoS89ff[2][0]=0.5。ff[2][1]=1。ff[2][2]=-1*sin(vtuvw[2]>。ff[2][3]=1。M2ub6vSTnPff[3][0]=1。ff[3][1]=0.5。ff[3][2]=1。ff[3][3]=cos(vtuvw[3]>。0YujCfmUCwsolve(ff,det,f>。flag_max=0。for(k=1。kif(fabs(det[k]>>fabs(det[flag_max]>