logo资料库

计算方法上机实验报告-C语言.docx

第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
资料共19页,剩余部分请下载后查看
原理:
程序:
结果:
二、题目
原理:
程序:
结果:
三、题目
原理:
程序:
结果:
四、题目
原理:
程序:
结果:
五、题目
原理:
程序:
结果:
六、题目
原理:
程序:
结果:
《计算方法》实验报告 指导教师: 学 院: 班 级: 团队成员: 1
一、题目 例 2.7 应用 Newton 迭代法求方程 2 x kx ,并使其满足 x  1 k 10 x k  8  原理: x   在 1x  附近的数值解 1 0 f x  解的隔离区间 在方程    f x  0 的点  x f x, 0 0  y    引切线 ,a b 上选取合适的迭代初值 0x , 过曲线 l 1 : y   f x 0   f  ' x 0  x   x 0 其与 x 轴相交于点: x 1  x 0  点   x f x 1 1 ,   引切线  f x 0  ' f x 0   ,进一步,过曲线 y    f x 的 l 2 : y   f x 1   f  '  x 1 x   x 1 其与 x 轴相交于点: x 2  x 1   f x 1  ' x f 1   如 此 循 环 往 复 , 可 得 一 列 逼 近 方 程  x x 0 1 , , , , ,其一般表达式为: x  k f x  精 确 解 *x 的 点  0 x k  x k 1    f x k  ' x f 1  k 1    该公式所表述的求解方法称为 Newton迭代法或切线法。 程序: #include #include /*输入精度 eps*/ double eps = 1.0e-8; 2
/*定义原函数*/ double f(double x) { double y; y = x*x*x-x-1; return y; } /*求导数*/ double f1(double x) { double y; y = 3 * x*x - 1; return y; } /*主函数*/ int main(void) { double x0, x1; int k; /*输入初始迭代值*/ printf("请输入初始迭代值 x0:"); scanf("%lf", &x0); /*Newton 迭代法*/ x1 = x0 - f(x0) / f1(x0); k = 1; while (fabs(x1 - x0) >= eps) { x0 = x1; x1 = x0 - f(x0) / f1(x0); k = k + 1; } /*输出结果*/ printf("迭代%d 次后得到满足精度要求的数值解 x(%d)=%.15lf\n", k, k, x1); return 0; } 结果: 3
二、题目 例 3.7 试利用 Jacobi 迭代公式求解方程组 x  1  x  2  x 3  x  4 1 1       1 1       5 1    1 10    5 1  1 10  1 1   1 1          4    12   8  34        要求数值解 ( )kX 满足 X X  ( k ) 2 4   10 ,其中 X (1,2,3,4) T 为方程 组的精确解。 原理: n n 分解为       nn 22 a 11 a 21  a ,    a a 12 1 a a 22 2    a a 2 1 n n , )nn , a  0 a  12  0 0      0 0   0 0  = n n , U   a a 1 13 a a 23 2    0 a  1, n 0 0 AX b 可等价地写成  1 D L U X D b ,      1          n   A D   将线性方程组的系数矩阵       = , diag a a 0 0 0 0 0 a 32    a a  , 1 n n 当对角阵 D 可逆时,方程组  A L D U ,其中    0 a 21 a 31  a 11         ( 0 0 0  0          L = 1 n 2 n X   据此可得 Jacobi 迭代公式为  T 其中  X x , , X     k x 2  x 1  k n =  1   , 1  k k k      量形式 D L U X   k   1  D b, k  0,1, , ,该迭代公式也可以写成如下的分  n R 4
k 1 )  ( ix  1 a ii    b i 程序: n   j 1 ,  j  k 1 )  a x ij ( j i    , i  1,2,  , n #include #include /*输入矩阵 A、b、精确解 X、精度 esp*/ #define N 4 double A[N][N]={{5,-1,-1,-1},{-1,10,-1,-1},{-1,-1,5,-1},{-1,-1,-1,10}},b[N]= {-4,12,8,34},X[N]={1,2,3,4},esp=1.0e-4; /*求 2 范数*/ double norm2(double x[N]) { int i; double n,sum=0.0; for(i=0;i
int i,c=1,k=0; double X0[N]={0.0},X1[N]={0.0},X2[N],X3[N]; Jacobi(X0,X1,X2); k++; while(norm2(X2)>=esp) { Jacobi(X0,X1,X3); /*收敛性判断*/ if(norm2(X3)>norm2(X2)) {c=0;break;} else { for(i=0;i
三、题目 迭代公式求解方程组  例 3.8 试利用Gauss Seidel 1 1       1 1       5 1    1 10    4 10        )kX 满足 1 5  1 10  1 1   1 1   要求数值解 ( X X   k ( ) 2 x 1 x 2 x 3 x 4              ,其中 4  12 8 34       X (1,2,3,4) T 为方程 组的精确解。 原理:  22 n n nn D A       , a 11 a 21  a 将线性方程组的系数矩阵 分解为       a a 1 12 a a 22 2    a a 2 1 n n , )nn , a  0 a  12  0 0      0 0   0 0  A L D U ,其中          = , diag a a 0 0 0 0 0 a 32    a a  , 1 n n 当对角阵 D 可逆时,方程组 LX UX b , DX  由此可构造迭代格式, ( LX UX DX   据此可得Gauss Seidel 迭代公式为  1  a a 13 1 a a 23 2    0 a  1, n 0 0 AX b 可等价地写成   1) k  0 a 21 a 31  a 11         k  0,1,  , D L UX ( 0 0 0  0 1 D L b ) ,                   1)  L =  ( U =  b  ( k 1 )  X 1 n n 2 ( k   ( k 1 )  , ( ) k n n         n  该公式也可以写成如下的分量形式 7
( k 1 )  x i  1 a ii ( b i  程序: i 1   j 1  k )1  a x ij ( j  n  j 1 i   a x ij ( ) k j ), i  , 1,2  , n #include #include /*输入矩阵 A、b、精确解 X、精度 esp*/ #define N 4 double A[N][N]={{5,-1,-1,-1},{-1,10,-1,-1},{-1,-1,5,-1},{-1,-1,-1,10}},b[N]= {-4,12,8,34},X[N]={1,2,3,4},esp=1.0e-4; /*求 2 范数*/ double norm2(double x[N]) { int i; double norm2,sum=0.0; for(i=0;i
分享到:
收藏