⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 solver.c

📁 从MatlabSimulink模型到代码实现
💻 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 + -