文档介绍:克莱姆法则的C语言计算程序杨唐桂(井冈山师范学院数学与应用数学系江西吉安 343009)指导老师:王新长摘要:本文以高等数学中的克莱姆法则为依据,讨论其计算程序的设计方法,并给出在微机上运行的模拟人工解题的计算程序和应用示例,及其优缺点。关键词:克莱姆法则C语言程序一、引言在复习高等代数时,我们常常为纷烦复杂的n元线性方程组的计算而感到头痛,就算费尽心机计算得出结果,也不敢确定结果是不是一定正确,于是我就想,能不能用计算机来计算呢?利用计算机计算,不是简单地用计算器来加、减、乘、除,而是要设计一个计算程序。我们知道,在代数课的教学中无论是工科院校的线性代数还是数学专业的高等代数都离不开克莱姆法则。由于该法则涉及到行列式的计算,在教学中只是挑选一些简单的例子进行教学,作业也比较少,致使学生练习不够充分。现在计算机已普及,但线性代数的教学并没有与算法语言的教学联系起来,而现有文献所研究的都是一些数值解法,从来不涉及象克莱姆法则这样的概念。现在根据按照行列式的定义计算行列式的计算程序,本文将在该程序的基础上进行扩展,编写出与克莱姆法则相对应的程序。二、克莱姆法则简述设A=(aij)是一个n×n矩阵,设D=detA≠0那么方程组有唯一解这里Dj是用方程组右边的常数项代替矩阵A中第j列所构成的矩阵的行列式。三、程序设计步骤从克莱姆法则知,首先要把方程组的系数aij及bi(i,j=1,…,n)输入计算机,计算出Dj(j=1,2,…,n)最后算出xj(j=1,2,…,n),具体方法述于下。1.      方程的个数N及方程组的系数与数组间的关系简述由于克莱姆法则的计算工作量是很大的,方程组的个数n也不可能取的很大,又由于C编译程序中二维数组的行是从0行开始,每行元素编号也从0开始,这样用二维数组a来代表数学中的(aij),其对应关系为a[i-1][j-1]对应aij(i,j=1,…,n)。2.      计算D和Dj(j=1,…,n).由⑴和⑵式看出,对行列式的计算程序要使用n+1次,将该部分程序写在主程序中程序显得很长,不便于阅读和维护。为此,将计算行列式的程序段写成一个函数并命名为intdet(intn),以便计算D与Dj(j=1,…,n)时调用,在调用该函数计算出A的行列式D后再用一偱环来调用该函数计算Dj(j=1,…,n)。调用函数det()计算出A的行列式D。在计算Dj之前,先把A中的第j列元素存入数组c中,然后用常数bi(i=1,…,n)代替a中的第j列元素,调用函数det(),计算出Dj,当j≠n时恢复A数组,重复这一过程直到算出全部Dj,(j=1,…,n)为止。(j=1,…,n)按⑵式进行。()函数在该函数中j0,j1,j2,j3,j4,j5,j6是循环变量,每个循环确定一个行列式定义中元素的列下标,并将这个下标存在数组k中,以便计算行列式的项时使用,当各下标均确定好后调用term()函数计算出行列式的一个项。四、计算程序#defineN7staticinta[N][N],b[N];intdi[N],c[N];doublex[N];intterm(intn,intk[]){intp,q,t=1;for(p=1;p<n;p++)for(q=0;q<p;q++)if(k[q]>k[p])t=-t;for(p=0;p<n;p++)t