int (){ int i, j,k, m = 6; double x[6] = { 0.7, 0.9, 1.1, 1.3, 1.5, 1.7 }; double z[6] = { 0.6442, 0.7833, 0.8912, 0.9636, 0.9975, 0.9917 }; double y[6][6]; double xx = 1, nx = 0,w=1,r; for (i = 0; i <= 5; i++){ y[i][i] = z[i]; } for (k = 1; k <= 5; k++){ for (i = 0; i <= 5 - k; i++) y[i][i + k] = (y[i + 1][i + k] - y[i][i + k - 1]) / (x[i + k] - x[i]); } for (i = 0; i < 6; i++){ printf("%0.1f ", x[i]); for(j = i;j>=0;j--) printf("%f ", y[j][i]); printf("n"); } for (i =0; i < 6; i++){ double temp = y[0][i]; for (j = 0; j < i; j++) temp *= (xx - x[j]); nx += temp; } for (j = 0; j < 6; j++) w*=(xx - x[j]); r=y[0][5]*w; printf("%d点Newton插值多项式计算得y(%.0f)=%fn", m, xx, nx+r); }
|
近期评论