?? 列主元高斯消去法.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 + -