求解线性方程组的直接方法算法实验报告

求解线性方程组的直接方法(2学时)

一 实验目的

1.掌握求解线性方程组的高斯消元法及列主元素法;

2. 掌握求解线性方程组的克劳特法;

3. 掌握求解线性方程组的平方根法。

二 实验内容

1.用高斯消元法求解方程组(精度要求为106):

3x1x22x37x12x22x31

2x2x4x0231

2.用克劳特法求解上述方程组(精度要求为106)。

3. 用平方根法求解上述方程组(精度要求为106)。

4. 用列主元素法求解方程组(精度要求为106):

3x1x24x33x12x22x32

2x3x2x5231

三 实验步骤(算法)与结果

1. #include

main()

{ float a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3,

l21,l31,l32,

u11,u12,u13,u22,u23,u33,z1,z2,z3,x1,x2,x3;

printf("enter a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3 :"); scanf("%f%f%f%f%f%f%f%f%f%f%f%f/n",&a11,&a12,&a13,&b1,&a21,&a22, &a23,&b2,&a31,&a32,&a33,&b3 );

l21=a12/a11;

l31=a31/a11;

u22=a22-l21*a12;

l32=(a32-l31*a12)/u22;

u23=a23-l21*a13;

u33=a33-l31*a13-l32*u23;

z2=b2-l21*b1;

z3=b3-l31*b1-l32*z2;

printf("u22=%fu23=%fz2=%fu33=%fz3=%f`````",u22,u23,z2,u33,z3); x3=z3/u33;

x2=(z2-u23*x3)/u22;

x1=(b1-a13*x3-a12*x2)/a11;

printf("x1=%f x2=%f x3=%f ",x1,x2,x3);

return 0;

}

2. #include

main()

{

float a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3,

l22,l32,l33,

u11,u12,u13,u22,u23,u33,

z1,z2,z3,x1,x2,x3;

printf("enter a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3 :"); scanf("%f%f%f%f%f%f%f%f%f%f%f%f/n",&a11,&a12,&a13,&b1,&a21,&a22, &a23,&b2,&a31,&a32,&a33,&b3 );

u11=1;u22=1; u33=1;

u12=a12/a11;

u13=a13/a11;

z1=b1/a11;

l22=a22-a21*u12;

u23=(a23-a21*u13)/l22;

z2=(b2-a21*z1)/l22;

l32=a32-a31*u12;

l33=a33-a31*u13-l32*u23;

z3=(b3-a31*z1-l32*z2)/l33;

printf("u11=%f u12=%f u13=%f z1=%f u22=%f u23=%f z2=%f

u33=%f z3=%f------",u11,u12,u13,z1,u22,u23,z2,u33,z3);

x3=z3;

x2=z2-u23*x3;

x1=z1-u13*x3-u12*x2;

printf("x1=%f x2=%f x3=%f ",x1,x2,x3);

getch();

return 0;

}

3. #include

#include

{

float a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3,

l11,l12,l13,l23,l21,l22,l31,l32,l33,

z1,z2,z3,x1,x2,x3;

printf("enter a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3 :"); scanf("%f%f%f%f%f%f%f%f%f%f%f%f/n",&a11,&a12,&a13,&b1,&a21,&a22, &a23,&b2,&a31,&a32,&a33,&b3 );

l11=sqrt(a11);

l21=a21/l11; l31=a31/l11;

l22=sqrt(a22-l21*l21);

l32=(a32-l21*l31)/l22;

l33=sqrt(a33-l31*l31-l32*l32);

z1=b1/l11;

z2=(b2-l21*z1)/l22;

z3=(b3-l31*z1-l32*z2)/l33;

printf("l11=%f z1=%f l22=%f z2=%f l33=%f

z3=%f---",l11,z1,l22,z2,l33,z3);

x3=z3/l33;

x2=(z2-l32*x3)/l22;

x1=(z1-l31*x3-l21*x2)/l11;

printf("x1=%f x2=%f x3=%f ",x1,x2,x3);

getch();

return 0;}

4. #include "stdio.h"

#include "math.h"

main()

{ float a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3, l21,l31,A22,A23,d1,A32,A33,d2,l32,a,d3,

x1,x2,x3,A,B,C,D;

printf("enter a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3:"); scanf("%f%f%f%f%f%f%f%f%f%f%f%f", &a11,&a12,&a13,

&b1,&a21,&a22,&a23,&b2,&a31,&a32,&a33,&b3);

if(fabs(a11)

{ if(fabs(a11)>fabs(a31))

A=a11;a11=a31;a31=A;

B=a12;a12=a32;a32=B;

C=a13;a13=a33;a33=C;

D=b1;b1=b3;b3=D ;

}

if (fabs(a11)

{

if(fabs(a21)>fabs(a31))

{

A=a11;a11=a21;a21=A;

B=a12;a12=a22;a22=B;

C=a13;a13=a23;a23=C;

D=b1;b1=b2;b2=D ;

}

else

A=a11;a11=a31;a31=A;

B=a12;a12=a32;a32=B;

C=a13;a13=a33;a33=C;

D=b1;b1=b3;b1=D ;

}

printf("now a11=%f a12=%f a13=%f b1=%f\n",a11,a12,a13,b1); printf("now a21=%f a22=%f a23=%f b2=%f\n",a21,a22,a23,b2); printf("now a31=%f a32=%f a33=%f b3=%f\n",a31,a32,a33,b3);

l21=a21/a11; l31=a31/a11;

A22=a22-l21*a12;A23=a23-l21*a13;d1=b2-l21*b1;

A32=a32-l31*a12; A33=a33-l31*a13;d2=b3-l31*b1;

if(fabs(A22)>fabs(A32))

{ l32=A32/A22;

a=A33-l32*A23;

d3=d2-l32*d1;

x3=d3/a;

x2=(d1-A23*x3)/A22;

x1=(b1-a13*x3-a12*x2)/a11;

}

else l32=A22/A32;

a=A23-l32*A33;

d3=d1-l32*d2;

x3=d3/a;

x2=(d2-A33*x3)/A32;

x1=(b1-a13*x3-a12*x2)/a11;

printf("x1=%f x2=%f x3=%f\n",x1,x2,x3);

getch(); return 0;

}

求解线性方程组的直接方法(2学时)

一 实验目的

1.掌握求解线性方程组的高斯消元法及列主元素法;

2. 掌握求解线性方程组的克劳特法;

3. 掌握求解线性方程组的平方根法。

二 实验内容

1.用高斯消元法求解方程组(精度要求为106):

3x1x22x37x12x22x31

2x2x4x0231

2.用克劳特法求解上述方程组(精度要求为106)。

3. 用平方根法求解上述方程组(精度要求为106)。

4. 用列主元素法求解方程组(精度要求为106):

3x1x24x33x12x22x32

2x3x2x5231

三 实验步骤(算法)与结果

1. #include

main()

{ float a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3,

l21,l31,l32,

u11,u12,u13,u22,u23,u33,z1,z2,z3,x1,x2,x3;

printf("enter a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3 :"); scanf("%f%f%f%f%f%f%f%f%f%f%f%f/n",&a11,&a12,&a13,&b1,&a21,&a22, &a23,&b2,&a31,&a32,&a33,&b3 );

l21=a12/a11;

l31=a31/a11;

u22=a22-l21*a12;

l32=(a32-l31*a12)/u22;

u23=a23-l21*a13;

u33=a33-l31*a13-l32*u23;

z2=b2-l21*b1;

z3=b3-l31*b1-l32*z2;

printf("u22=%fu23=%fz2=%fu33=%fz3=%f`````",u22,u23,z2,u33,z3); x3=z3/u33;

x2=(z2-u23*x3)/u22;

x1=(b1-a13*x3-a12*x2)/a11;

printf("x1=%f x2=%f x3=%f ",x1,x2,x3);

return 0;

}

2. #include

main()

{

float a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3,

l22,l32,l33,

u11,u12,u13,u22,u23,u33,

z1,z2,z3,x1,x2,x3;

printf("enter a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3 :"); scanf("%f%f%f%f%f%f%f%f%f%f%f%f/n",&a11,&a12,&a13,&b1,&a21,&a22, &a23,&b2,&a31,&a32,&a33,&b3 );

u11=1;u22=1; u33=1;

u12=a12/a11;

u13=a13/a11;

z1=b1/a11;

l22=a22-a21*u12;

u23=(a23-a21*u13)/l22;

z2=(b2-a21*z1)/l22;

l32=a32-a31*u12;

l33=a33-a31*u13-l32*u23;

z3=(b3-a31*z1-l32*z2)/l33;

printf("u11=%f u12=%f u13=%f z1=%f u22=%f u23=%f z2=%f

u33=%f z3=%f------",u11,u12,u13,z1,u22,u23,z2,u33,z3);

x3=z3;

x2=z2-u23*x3;

x1=z1-u13*x3-u12*x2;

printf("x1=%f x2=%f x3=%f ",x1,x2,x3);

getch();

return 0;

}

3. #include

#include

{

float a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3,

l11,l12,l13,l23,l21,l22,l31,l32,l33,

z1,z2,z3,x1,x2,x3;

printf("enter a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3 :"); scanf("%f%f%f%f%f%f%f%f%f%f%f%f/n",&a11,&a12,&a13,&b1,&a21,&a22, &a23,&b2,&a31,&a32,&a33,&b3 );

l11=sqrt(a11);

l21=a21/l11; l31=a31/l11;

l22=sqrt(a22-l21*l21);

l32=(a32-l21*l31)/l22;

l33=sqrt(a33-l31*l31-l32*l32);

z1=b1/l11;

z2=(b2-l21*z1)/l22;

z3=(b3-l31*z1-l32*z2)/l33;

printf("l11=%f z1=%f l22=%f z2=%f l33=%f

z3=%f---",l11,z1,l22,z2,l33,z3);

x3=z3/l33;

x2=(z2-l32*x3)/l22;

x1=(z1-l31*x3-l21*x2)/l11;

printf("x1=%f x2=%f x3=%f ",x1,x2,x3);

getch();

return 0;}

4. #include "stdio.h"

#include "math.h"

main()

{ float a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3, l21,l31,A22,A23,d1,A32,A33,d2,l32,a,d3,

x1,x2,x3,A,B,C,D;

printf("enter a11,a12,a13,b1,a21,a22,a23,b2,a31,a32,a33,b3:"); scanf("%f%f%f%f%f%f%f%f%f%f%f%f", &a11,&a12,&a13,

&b1,&a21,&a22,&a23,&b2,&a31,&a32,&a33,&b3);

if(fabs(a11)

{ if(fabs(a11)>fabs(a31))

A=a11;a11=a31;a31=A;

B=a12;a12=a32;a32=B;

C=a13;a13=a33;a33=C;

D=b1;b1=b3;b3=D ;

}

if (fabs(a11)

{

if(fabs(a21)>fabs(a31))

{

A=a11;a11=a21;a21=A;

B=a12;a12=a22;a22=B;

C=a13;a13=a23;a23=C;

D=b1;b1=b2;b2=D ;

}

else

A=a11;a11=a31;a31=A;

B=a12;a12=a32;a32=B;

C=a13;a13=a33;a33=C;

D=b1;b1=b3;b1=D ;

}

printf("now a11=%f a12=%f a13=%f b1=%f\n",a11,a12,a13,b1); printf("now a21=%f a22=%f a23=%f b2=%f\n",a21,a22,a23,b2); printf("now a31=%f a32=%f a33=%f b3=%f\n",a31,a32,a33,b3);

l21=a21/a11; l31=a31/a11;

A22=a22-l21*a12;A23=a23-l21*a13;d1=b2-l21*b1;

A32=a32-l31*a12; A33=a33-l31*a13;d2=b3-l31*b1;

if(fabs(A22)>fabs(A32))

{ l32=A32/A22;

a=A33-l32*A23;

d3=d2-l32*d1;

x3=d3/a;

x2=(d1-A23*x3)/A22;

x1=(b1-a13*x3-a12*x2)/a11;

}

else l32=A22/A32;

a=A23-l32*A33;

d3=d1-l32*d2;

x3=d3/a;

x2=(d2-A33*x3)/A32;

x1=(b1-a13*x3-a12*x2)/a11;

printf("x1=%f x2=%f x3=%f\n",x1,x2,x3);

getch(); return 0;

}


相关文章

  • 共轭梯度法实验报告
  • 数值代数实验报告 一.实验名称:用共轭梯度法解线性方程组. 二.实验目的:进一步熟悉理解掌握共轭梯度法解法思路,提高matlab编程能力. 三.实验要求:已知线性方程矩阵,应用共轭梯度法在相关软件编程求解线性方程组的解. 四.实验原理: 1 ...查看


  • Jacobi迭代法求解线性方程组实验报告
  • 仿真平台与工具应用实践 Jacobi 迭代法求解线性方程组 院 系: 专业班级: 姓 名: 学 号: 指导老师: 实 验 报 告 一. 实验目的 熟悉Jacobi 迭代法原理: 学习使用Jacobi 迭代法求解线性方程组: 编程实现该方法: ...查看


  • 数值分析报告
  • 重庆交通大学计算机与信息学院 设计性实 验报告 班 级: 05计科(3)班 实验项目性质: 综合设计性实验 实验所属课程: 数 值 分 析 实验室(中心) : 计算机软件中心 指 导 教 师 : 程 攀 学 生 学 号 : 05060315 ...查看


  • 数值分析学习心得体会
  • 数值分析学习感想 一个学期的数值分析,在老师的带领下,让我对这门课程有了深刻的理解和感悟.这门 课程是一个十分重视算法和原理的学科,同时它能够将人的思维引入数学思考的模式,在处 理问题的时候,可以合理适当的提出方案和假设.他的内容贴近实际, ...查看


  • 数值分析作业思考题
  • 数值分析思考题1 1.讨论绝对误差(限).相对误差(限)与有效数字之间的关系. 2.相对误差在什么情况下可以用下式代替? e *x *-x e =*= x x * *r 3.查阅何谓问题的"病态性",并区分与" ...查看


  • 求解复杂非线性方程组的新方法
  • ComputerEngineeringandApplications计算机工程与应用 . 2009,45(28)41 求解复杂非线性方程组的新方法 阳万安,曾安平 YANGWan-an,ZENGAn-ping 宜宾学院计算机与信息科学系,四 ...查看


  • 一般性问题
  • 1.一般性问题 TN03 2006050001 图7表0参11 基于节点编码的区域分解算法及其在二维散射中的应用/安翔,吕志清(西安电子科技大学天线与微波技术国家重点实验室)//微波学报. ―2005,21(3). ―12-15,35. 研 ...查看


  • 关于对[数值分析]中用割线法求方程根的探讨
  • l+nX1 第1期(总第44期) 2005年2月 山西广播电视大学学报 JournalofShanxiRadio8LTVUniversity NO.1Feb.2005 摘要:在日常实际应用中,人们会经常遇到求非线性方程f(x)一0的近似根问 ...查看


  • 矩阵分解及无约束最优化方法
  • 矩阵分解及无约束最优化 方法的原理和应用简介 --最优化方法课程实验报告 学 院:数学与统计学院 班 级:硕2041班 姓 名:王彭 学 号:指导教师:阮小娥 同 组 人:陈莹 钱东东 矩阵分解及无约束最优化方法的原理和应用简介 矩阵分解及 ...查看


热门内容