文档详情

北航数值分析第三次大作业.doc

发布:2019-01-19约3.24万字共23页下载文档
文本预览下载声明
数值分析第三次大作业 数值分析第三次大作业 数值分析第三次大作业 一、 设计方案: 运用newton迭代法,求解已给方程的根xi,yi对应的ui,tj。并根据题中所给的u,t,z的二维数表对z进行插值得到zij,并使用最小二乘法曲面拟合法对z=f(x,y)进行拟合,在所给的?条件下停止运算。将*x* i,yj带入z=f(x,y)和p(x,y)求出所求的值,并比较。 二、源程序: #define N 6 //矩阵的阶; #define M 4 //方程组未知数个数; #define EPSL 1.0e-12 //迭代的精度水平; #define MAXDIGIT 1.0e-219 #define SIGSUM 1.0e-7 #define L 500 //迭代最大次数; #define K 10 //最小二乘法拟合时的次数上限; #define X_NUM 11 #define Y_NUM 21 #define OUTPUTMODE 1 //输出格式:0--输出至屏幕,1--输出至文件 #include lt;stdio.hgt; #include lt;math.hgt; double mat_u[N] = {0, 0.4, 0.8, 1.2, 1.6, 2.0}, mat_t[N] = {0, 0.2, 0.4, 0.6, 0.8, 1.0}, mat_ztu[N][N] = { {-0.5, -0.34, 0.14, 0.94, 2.06, 3.5}, {-0.42, -0.5, -0.26, 0.3, 1.18, 2.38}, {-0.18, -0.5, -0.5, -0.18, 0.46, 1.42}, {0.22, -0.34, -0.58, -0.5, -0.1, 0.62}, {0.78, -0.02, -0.5, -0.66, -0.5, -0.02}, {1.5, 0.46, -0.26, -0.66, -0.74, -0.5}, }, mat_val_z[X_NUM][Y_NUM] = {0}, 数值分析第三次大作业 init_tuvw[4] = {1,2,1,2}, mat_crs[K][K] = {0}; FILE *p; int main() { int i, j, x, y, kmin, tmp = 0; double tmpval; int getval_z(double, double, int, int); int leasquare(); void result_out(int); if(OUTPUTMODE) { p = fopen(quot;c:\\Result.txtquot;, quot;w+quot;); fprintf(p, quot;计算结果:\nquot;); fclose(p); } for(i = 0; i lt; X_NUM; i++) for(j = 0; j lt; Y_NUM; j++) tmp+= getval_z(0.08 * i,0.5 + 0.05 * j, i, j); if(!tmp) printf(quot;迭代求解 z=f(x,y) 完毕。\nquot;); else printf(quot;迭代超过最大次数,计算结果可能不准确!\nquot;); if(kmin=leasquare()) { printf(quot;近似表达式已求出!\nquot;); for(i = 0; i lt; 8; i++) for(j = 0; j lt; 5; j++) tmp+= getval_z(0.1 * (i+1),0.5 + 0.2 * (j+1), i, j); if(!tmp) { printf(quot;迭代求解 z=
显示全部
相似文档