📄 solver.c
字号:
//solver.c
//used to solve A*X=b,
//where A=[-1.5 1 2;3 -1 1;-1 3 5], b=[2.5;5;8].
#include "stdio.h"
void main()
{
double A[3][3]={{-1.5,1,2},{3,-1,1},{-1,3,5}};
double b[3]={2.5,5,8};
double invA[3][3],X[3];
int i;
// the determinant of A
double deltaA=A[0][0]*A[1][1]*A[2][2]+A[1][0]*A[2][1]*A[0][2]+A[2][0]*A[1][2]*A[0][1]-
(A[0][2]*A[1][1]*A[2][0]+A[0][0]*A[2][1]*A[1][2]+A[0][1]*A[1][0]*A[2][2]);
//the inversion of A
invA[0][0]=1/deltaA*(A[1][1]*A[2][2]-A[1][2]*A[2][1]);
invA[1][0]=-1/deltaA*(A[1][0]*A[2][2]-A[1][2]*A[2][0]);
invA[2][0]=1/deltaA*(A[1][0]*A[2][1]-A[1][1]*A[2][0]);
invA[0][1]=-1/deltaA*(A[0][1]*A[2][2]-A[2][1]*A[0][2]);
invA[1][1]=1/deltaA*(A[0][0]*A[2][2]-A[2][0]*A[0][2]);
invA[2][1]=-1/deltaA*(A[0][0]*A[2][1]-A[0][1]*A[2][0]);
invA[0][2]=1/deltaA*(A[0][1]*A[1][2]-A[0][2]*A[1][1]);
invA[1][2]=-1/deltaA*(A[0][0]*A[1][2]-A[0][2]*A[1][0]);
invA[2][2]=1/deltaA*(A[0][0]*A[1][1]-A[0][1]*A[1][0]);
printf("The solution X is\n");
for(i=0;i<3;i++)
{
X[i]=invA[i][0]*b[0]+invA[i][1]*b[1]+invA[i][2]*b[2];
printf("%f\n",X[i]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -