==> kalu...@bbs.iljhs.il.edu.tw (阿信) 在 oop 版提到:
: 有那為大姐大爺會寫高斯消去法的請寫給我吧!!!!
: 不然我`要讀六年呀!!!!!!!!!
/* 高斯-裘登消去法求線性聯立方程式之解:EX3-8.C */
#include <stdio.h>
#include <math.h>
#include <conio.h>
main()/* 主程式 */
{
int i, j, k, n, max,l,m;
float a[20][5],b[10];
float temp;
clrscr();
/* 輸入欲求聯立方程式化簡為矩陣的階數(即待求的未知數) */
printf("\n\n Please input matrix order = ");scanf("%d",&n);
/* 設定一陣列資料為 0 */
for (i=1;i<=n;i++)
b[i]=0.0;
/* 輸入欲求聯立方程式化簡為矩陣的各個元素 */
printf("\n\n Please input matrix =\n\n ");
for (i=1;i<=n;i++)
for (j=1;j<=n+1;j++)
{
printf(" a[%d,%d]= ",i,j);scanf("%f",&a[i][j]);
}
clrscr();
/* 以矩陣方式列印欲求線性聯立方程式 */
printf("\n\n The linear simultaneous equation matrix is \n");
for (i=1;i<=n;i++)
{
for (j=1;j<=n+1;j++)
printf(" %3.4f ",a[i][j]);
printf("\n");
}
/* 高斯-裘登消去法求線性聯立方程式之解 */
for (i = 1; i <= n ; i++)
{
/* 判斷列是否需調換 */
max = i;
for (j=i+1; j <=n; j++)
if (fabs(a[j][i]) > fabs(a[max][i]) ) max =j;
/* 執行兩列所有元素調換的工作 */
for (k=i; k <= n+1; k++)
{
temp = a[i][k];
a[i][k] = a[max][k];
a[max][k] = temp;
}
/* 依序乘以一常數值加到各列 */
if (i==1)
for (j=i+1;j<=n;j++)
for (k=n+1; k>=i ; k--)
a[j][k] -= a[i][k] * a[j][i]/a[i][i];
else
for (l=1;l<=n;l++)
for (m=n+1; m>=1 ; m--)
if(l!=i)
a[l][m] -= a[i][m] * a[l][i]/a[i][i];
}
/* 列印計算後為對角矩陣型的線性聯立方程式 */
printf("\n The final Gauss-Jordan simultaneous equation matrix is \n");
for (i=1;i<=n;i++)
{
for (j=1;j<=n+1;j++)
printf(" %3.4f ",a[i][j]);
printf("\n");
}
/* 列印線性聯立方程式之解 */
printf("\n *** The solution is *** \n");
for (k = 1; k <= n ; k++)
printf(" x%d = %3.4f \n",k,a[k][n+1]/a[k][k]);
}/* End main */
--
難道你沒看到我對你一往情深嗎?我知道妳的心
也和我一樣 只因妳太年輕我卻歷盡滄桑在你臨走前
再和我跳支舞吧!!而我只看見妳一抹淡笑和美麗的倩影
那是剎那間永恆煦爛的雲彩
有那為大姐大爺會寫高斯消去法的請寫給我吧!!!!
不然我`要讀六年呀!!!!!!!!!
--
[m [1;35m※ 來源:‧山水蘭陽資訊站 bbs.iljhs.il.edu.tw‧[FROM: 203.68.50.68] [m