📄 列主元高斯消去法.txt
字号:
列主元高斯消去法
1、功 能
根据列主元高斯消去法,求解给定线性代数方程组的解.
2、程 序
#include "stdio.h"
#include "conio.h"
#include "alloc.h"
#include "math.h"
float *ColPivot(float *c,int n)
{
int i,j,t,k;
float *x, p;
x=(float *)malloc(n*sizeof(float));
for(i=0;i<=n-2;i++)
{
k=i;
for(j=i+1;j<=n-1;j++)
if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i)))) k=j;
if(k!=i)
for(j=i;j<=n;j++)
{
p=*(c+i*(n+1)+j);
*(c+i*(n+1)+j)=*(c+k*(n+1)+j);
*(c+k*(n+1)+j)=p;
}
for(j=i+1;j<=n-1;j++)
{
p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));
for(t=0;t<=n;t++)
*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));
}
}
for(i=n-1;i>=0;i--)
{
for(j=n-1;j>=i+1;j--)
(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));
x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));
}
return x;
}
main()
{
int i;
float *x;
float c[3][4]={10,-13,13,0,
11,-5,0 ,5,
0,1,-6,0 };
float *ColPivot(float *,int );
x=ColPivot(c[0],3);
clrscr();
printf("The Root Is:\n");
for(i=0;i<3;i++)
printf("x[%d]=%f\n",i,x[i]);
getch();
}
3、使用说明
(1)参数说明
输入参数:n--整型变量,方程组的阶数;m--整型变量,m=n+1;min--实型变量,消元计算中主元的最小允许值。
输入兼输出参数:(*a)[ ][ ]--实型数组指针,此数组在调用程序时存放方程组的增广矩阵,返回时在第M列存放方程组的解。
(2)调用说明:
本程序调用格式:rtn=gs(&a,n,m,min)。
其中,rtn为整型变量。程序在其中返回一个整数代码,代码的意义如下:
0--程序正常返回;-1--程序异常返回。异常的原因是:主元的最小值小于min。
4、应用:
求解下述方程组:
10x1-13x2+13x3=0 x1=0.783
11x1-5x2 =5 x2=0.723
x2-6x3 =0 x3=0.120
小结:运行成功.运行结果:x[0]=0.783133;x[1]=0.722892;x[3]=0.120482
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -