當前位置:編程學習大全網 - 編程軟體 - 求解方程組Ax=b; 用C語言編程算法:

求解方程組Ax=b; 用C語言編程算法:

#include<stdio.h>

float A[3][3]={{0.10,0.07,-0.06},

{0.07,0.05,-0.03},

{-0.06,-0.03,0.06}} ; //三元壹次方程組的系數矩陣

float B[3]={-0.05,-0.04,0.02}; //三元壹次方程組的常數項

float X[3]; //三元壹次方程組的解:X1=-0.750,X2=0.000,X3=-0.417

float DETA ( ) //行列式計算

{

return (A[0][0]*A[1][1]*A[2][2]+A[1][0]*A[2][1]*A[0][2]+A[2][0]*A[0]

[1]*A[1][2]

-A[2][0]*A[1][1]*A[0][2]-A[0][0]*A[2][1]*A[1][2]-A[1][0]*A[0][1]*A

[2][2]);

}

void swap (int k)//常數項與k列系數交換

{

int i;

float t;

for (i=0;i<3;i++) {

t=B[i];

B[i]=A[i][k];

A[i][k]=t;

}

}

void XYZ ( ) //求解三元壹次方程組

{

float d;

d=DETA( ); //求系數行列式的值

swap (0) ; //將x1的系數與常數項交換

X[0]=DETA()/d; //解出x1

swap (0) ; //恢復原來的系數與常數項

swap (1) ; //將x2的系數與常數項交換

X[1]=DETA()/d; //解出x2

swap (1) ; //恢復原來的系數與常數項

swap (2) ; //將x3的系數與常數項交換

X[2]=DETA()/d; //解出x3

swap (2) ; //恢復原來的系數與常數項

}

void main()

{

int i;

XYZ () ;

for (i=0;i<3;i++)

printf("%.3f\n",X[i]);

}

  • 上一篇:vs4000p編程器使用方法
  • 下一篇:浙江德孚力汽車變速箱有限公司的公司簡介
  • copyright 2024編程學習大全網