我想学习更多的线性代数知识,写出更简洁,更实用的程序!!!
反正我喜欢编程,也许大佬会觉得我写的很幼稚,粗糙(没错,就是幼稚,毕竟我才看到面向对象的门),也许外行人会觉得我写的太low,没有好看的界面(没办法,我不会),但是,这只是开始,当我获得更高深的知识的时候,我一定会做的比现在好。奈何知识水平有限,眼界有限,目前的我,只做到这里。
敬请批评指正,非诚勿扰。
#include<iostream>
#include<string>
using namespace std;
int main()
{
double str[3][4],str1[3],x[3],d[3],D;
int n,i,j;
cin>>n; //输入方程的元数(2/3)
if(n==2){
for(i=0;i<n;i++){ //输入未知数的系数及等号右边的常量,记住,按照顺序从左向右依次输出
for(j=0;j<=n;j++){
cin>>str[i][j];
}
}
D=str[0][0]*str[1][1]-str[0][1]*str[1][0]; //利用2阶行列式计算
d[0]=str[0][2]*str[1][1]-str[1][2]*str[0][1];
d[1]=str[0][0]*str[1][2]-str[1][0]*str[0][2];
x[0]=d[0]/D;
x[1]=d[1]/D;
cout<<"x1="<<x[0]<<'\n'<<"x2="<<x[1]<<endl;
}
if(n==3){
for(i=0;i<n;i++){
for(j=0;j<=n;j++){
cin>>str[i][j];
}
} //利用三阶行列式计算
D=str[0][0]*str[1][1]*str[2][2]+str[0][1]*str[1][2]*str[2][0]+str[0][2]*str[1][0]*str[2][1]-str[2][0]*str[1][1]*str[0][2]-str[2][1]*str[1][2]*str[0][0]-str[2][2]*str[1][0]*str[0][1];
d[0]=str[0][3]*str[1][1]*str[2][2]+str[0][1]*str[1][2]*str[2][3]+str[0][2]*str[1][3]*str[2][1]-str[2][3]*str[1][1]*str[0][2]-str[2][1]*str[1][2]*str[0][3]-str[2][2]*str[1][3]*str[0][1];
d[1]=str[0][0]*str[1][3]*str[2][2]+str[0][3]*str[1][2]*str[2][0]+str[0][2]*str[1][0]*str[2][3]-str[2][0]*str[1][3]*str[0][2]-str[2][3]*str[1][2]*str[0][0]-str[2][2]*str[1][0]*str[0][3];
d[2]=str[0][0]*str[1][1]*str[2][3]+str[0][1]*str[1][3]*str[2][0]+str[0][3]*str[1][0]*str[2][1]-str[2][0]*str[1][1]*str[0][3]-str[2][1]*str[1][3]*str[0][0]-str[2][3]*str[1][0]*str[0][1];
for(i=0;i<n;i++){
string s[3]={"x1=","x2=","x3="}; //用字符串类输出x=....
x[i]=d[i]/D;
cout<<s[i]<<x[i]<<endl;
}
}
system("pause");
return 0;
}