列主元素消去法实验报告

列主元素消去法 一、实验要求

1、编程实现用列主元素消去法求解方程组

二、实验目的

1、进一步了解如何求解方程组

2、熟悉关于C语言的一些基本编程操作

三、实验内容

1、用列主元素消去法求解线性方程:

#include

#include

#define N 20

using namespace std;

void load();

float a[N][N];

int m;

int main(){

int i,j;

int c,k,n,p,r;

float x[N],l[N][N],s,d;

cout

cin>>m;

cout

cout

load();

for(i=0;i

{

for(j=i;j

c=(fabs(a[j][i])>fabs(a[i][i]))?j:i; /*找列最大元素*/ for(n=0;n

{s=a[i][n]; a[i][n]=a[c][n]; a[c][n]=s;} /*将列最大数防在对角线上*/ for(p=0;p

coutcout

for(k=i+1;k

{

l[k][i]=a[k][i]/a[i][i];

for(r=i;r

a[k][r]=a[k][r]-l[k][i]*a[i][r];

}

}

x[m-1]=a[m-1][m]/a[m-1][m-1];

for(i=m-2;i>=0;i--)

{

d=0;

for(j=i+1;j

d=d+a[i][j]*x[j];

x[i]=(a[i][m]-d)/a[i][i];

}

cout

for(i=0;i

cout

//system("pause");

return 0;

}

void load()

{

int i,j;

for(i=0;i

for(j=0;j

cin>>a[i][j];

} /*求解*/

2、LU分解法

#include

void solve(float l[][100],float u[][100],float b[],float x[],int n)

{int i,j;

float t,s1,s2;

float y[100];

for(i=1;i

{s1=0;

for(j=1;j

{

t=-l[i][j];

s1=s1+t*y[j];

}

y[i]=(b[i]+s1)/l[i][i]; }

for(i=n;i>=1;i--) /* 第二次回代过程开始 */

{

s2=0;

for(j=n;j>i;j--)

{

t=-u[i][j];

s2=s2+t*x[j];

}

x[i]=(y[i]+s2)/u[i][i];

}

}

void main()

{float a[100][100],l[100][100],u[100][100],x[100],b[100];

int i,j,n,r,k;

float s1,s2;

for(i=1;i

{

l[i][j]=0,u[i][j]=0;

if(j==i) l[i][j]=1;

}

printf ("input n:\n");/*输入方程组的个数*/

scanf("%d",&n);

printf ("input array A:\n");/*读取原矩阵A*/

for(i=1;i

for(j=1;j

scanf("%f",&a[i][j]);

printf ("input array B:\n");/*读取列矩阵B*/

for(i=1;i

scanf("%f",&b[i]);

for(r=1;r

{

for(i=r;i

{

s1=0;

for(k=1;k

s1=s1+l[r][k]*u[k][i];

u[r][i]=a[r][i]-s1;

}

for(i=r+1;i

{s2=0;

for(k=1;k

s2=s2+l[i][k]*u[k][r];

l[i][r]=(a[i][r]-s2)/u[r][r];

} }

列主元素消去法 一、实验要求

1、编程实现用列主元素消去法求解方程组

二、实验目的

1、进一步了解如何求解方程组

2、熟悉关于C语言的一些基本编程操作

三、实验内容

1、用列主元素消去法求解线性方程:

#include

#include

#define N 20

using namespace std;

void load();

float a[N][N];

int m;

int main(){

int i,j;

int c,k,n,p,r;

float x[N],l[N][N],s,d;

cout

cin>>m;

cout

cout

load();

for(i=0;i

{

for(j=i;j

c=(fabs(a[j][i])>fabs(a[i][i]))?j:i; /*找列最大元素*/ for(n=0;n

{s=a[i][n]; a[i][n]=a[c][n]; a[c][n]=s;} /*将列最大数防在对角线上*/ for(p=0;p

coutcout

for(k=i+1;k

{

l[k][i]=a[k][i]/a[i][i];

for(r=i;r

a[k][r]=a[k][r]-l[k][i]*a[i][r];

}

}

x[m-1]=a[m-1][m]/a[m-1][m-1];

for(i=m-2;i>=0;i--)

{

d=0;

for(j=i+1;j

d=d+a[i][j]*x[j];

x[i]=(a[i][m]-d)/a[i][i];

}

cout

for(i=0;i

cout

//system("pause");

return 0;

}

void load()

{

int i,j;

for(i=0;i

for(j=0;j

cin>>a[i][j];

} /*求解*/

2、LU分解法

#include

void solve(float l[][100],float u[][100],float b[],float x[],int n)

{int i,j;

float t,s1,s2;

float y[100];

for(i=1;i

{s1=0;

for(j=1;j

{

t=-l[i][j];

s1=s1+t*y[j];

}

y[i]=(b[i]+s1)/l[i][i]; }

for(i=n;i>=1;i--) /* 第二次回代过程开始 */

{

s2=0;

for(j=n;j>i;j--)

{

t=-u[i][j];

s2=s2+t*x[j];

}

x[i]=(y[i]+s2)/u[i][i];

}

}

void main()

{float a[100][100],l[100][100],u[100][100],x[100],b[100];

int i,j,n,r,k;

float s1,s2;

for(i=1;i

{

l[i][j]=0,u[i][j]=0;

if(j==i) l[i][j]=1;

}

printf ("input n:\n");/*输入方程组的个数*/

scanf("%d",&n);

printf ("input array A:\n");/*读取原矩阵A*/

for(i=1;i

for(j=1;j

scanf("%f",&a[i][j]);

printf ("input array B:\n");/*读取列矩阵B*/

for(i=1;i

scanf("%f",&b[i]);

for(r=1;r

{

for(i=r;i

{

s1=0;

for(k=1;k

s1=s1+l[r][k]*u[k][i];

u[r][i]=a[r][i]-s1;

}

for(i=r+1;i

{s2=0;

for(k=1;k

s2=s2+l[i][k]*u[k][r];

l[i][r]=(a[i][r]-s2)/u[r][r];

} }


相关内容

  • 列主元消去法解方程组实验报告
  • 实验名称: 列主元消去法解方程组 1 引言 我们知道,高斯消去法是一个古老的解线性方程组的方法.而在用高斯消去法解Ax=b k) 时,其中设A为非奇异矩阵,可能出现a(0的情况,这时必须进行带行交换的高斯消去kkk)k)法.但在实际计算中即使a(用a(作除数,会导致中间结果矩阵A(k)0但其绝对 ...

  • 计算方法实验报告_列主元高斯消去法
  • 计 算 方 法 实 验 报 告 动力与机械学院 08级自动化3班 唐禹 [1**********]78 2010.11.08 实验一 :使用列主元消去法求解线性方程组 列主元消去法是在Gauss消去法的基础上改进而得的一种比较快速和合理的求解线性方程组的方法.它的主要思路是通过对每次消元过程中主元的 ...

  • 迭代法实验
  • 实验五 线性方程组的迭代法实验 一. 实验目的 (1)深入理解线性方程组的迭代法的设计思想,学会利用系数矩阵的性质以保证迭 代过程的收敛性,以及解决某些实际的线性方程组求解问题. (2)熟悉Matlab编程环境,利用Matlab解决具体的方程求根问题. 二. 实验要求 建立Jacobi迭代公式.Ga ...

  • 数值计算基础
  • 数值计算基础 实验指导书 2010年 目录 实验一 直接法解线性方程组的 ................................ 1 实验二 插值方法 ........................................... 10 实验三 数值积分 ............. ...

  • Gauss顺序消去法解线性方程组报告
  • Gauss 顺序消去法解线性方程组 制作人:陈静 Gauss 消去法是解线性方程组的一种直接方法,有时也称为精确法,这种算法只包含有限四次运算,并且在每一步运算过程都不会发生舍入误差的假设下,计算的结果就是方程组的精确解.但实际计算中不可避免舍入误差的存在和影响,所以这种方法只能求得线性方程组的近似 ...

  • [数值分析]上机实验报告
  • 数值分析上机实验报告 <数值分析>上机实验报告 1. 用Newton 法求方程 X 7-X 4+14=0 在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001). 1.1 理论依据: 设函数在有限区间[a,b]上二阶导数存在,且满足条件 1. f (x ...

  • 河南省罗山高中2016届高三化学二轮复习 考点突破88 醇.酚(含解析)
  • 醇.酚 1.分子式为C 5H 12O 2的二元醇有多种同分异构体,其中能氧化成主链上碳原子数为3的二元 醛有x 种,能氧化成主链碳原子数为4的二元醛有y 种,则x,y 的值是 ( ) A.x=2,y=6 B.x=1,y=7 C.x=1,y=1 D.x=2,y=1 [答案]D [解析]醇氧化为醛时,醇 ...

  • 化学计量学
  • 南京工业大学 化学计量学 试题(A )卷(闭) 2012-2013学年第二学期 使用班级班级 学号 姓名 一.单项选择题(每小题2分,共30分) 1. 相对于迭代法或牛顿切线等算法,二分法解一元方程的最大优点是( ) A. 程序最简单 B. 运算速度一定最快 C. 初值可随意设置 D. 最可靠,一定 ...

  • 2018版高中化学第2章官能团与有机化学反应烃的衍生物第1节有机化学反应类型第2课时学业分层测评
  • 第2章 官能团与有机化学反应 烃的衍生物 第1节 第2课时 (建议用时:45分钟) [学业达标] 1.欲除去溴乙烷中含有的HCl ,下列操作方法正确的是( ) A .加氢氧化钠水溶液,加热煮沸 B .加氢氧化钠醇溶液,加热煮沸 C .加水振荡,静置后分液 D .加入AgNO 3溶液,过滤 [解析] ...