[C++]求解三元一次方程组

/**
 * author:johnny zen
 * date:2017-09-20 11:19 
 * function:Calculate Ternary system of equations
 * notice:时间仓促,仅仅实现功能,方便使用,代码质量不可参考!!! 
 */
#include<iostream>
using namespace std;

template<class T>
void input(T matrix[4][5]){
    cout<<"please input matrix element's data"<<endl;
    for(int i = 1;i<4;i++){
        for(int j=1;j<5;j++){
            cin>>matrix[i][j];
        }
    }
    cout<<"input ok";
}

template<class T>
void calc(T matrix[4][5]){
    T     base_D = matrix[1][1]*matrix[2][2]*matrix[3][3] + matrix[2][1]*matrix[3][2]*matrix[1][3] + matrix[3][1]*matrix[1][2]*matrix[2][3];//计算行列式 
        base_D = base_D-(matrix[1][3]*matrix[2][2]*matrix[3][1] + matrix[1][1]*matrix[2][3]*matrix[3][2] + matrix[1][2]*matrix[2][1]*matrix[3][3]);

    if(base_D != 0){
        T     x_D = matrix[1][4]*matrix[2][2]*matrix[3][3] + matrix[2][4]*matrix[3][2]*matrix[1][3] + matrix[3][4]*matrix[1][2]*matrix[2][3];
            x_D = x_D-(matrix[1][3]*matrix[2][2]*matrix[3][4] + matrix[1][4]*matrix[2][3]*matrix[3][2] + matrix[1][2]*matrix[2][4]*matrix[3][3]);
        T     y_D = matrix[1][1]*matrix[2][4]*matrix[3][3] + matrix[2][1]*matrix[3][4]*matrix[1][3] + matrix[3][1]*matrix[1][4]*matrix[2][3];
            y_D = y_D-(matrix[1][3]*matrix[2][4]*matrix[3][1] + matrix[1][1]*matrix[2][3]*matrix[3][4] + matrix[1][4]*matrix[2][1]*matrix[3][3]);
        T     z_D = matrix[1][1]*matrix[2][2]*matrix[3][4] + matrix[2][1]*matrix[3][2]*matrix[1][4] + matrix[3][1]*matrix[1][2]*matrix[2][4];
            z_D = z_D-(matrix[1][4]*matrix[2][2]*matrix[3][1] + matrix[1][1]*matrix[2][4]*matrix[3][2] + matrix[1][2]*matrix[2][1]*matrix[3][4]);

        T x =  x_D/base_D;
        T y =  y_D/base_D;
        T z =  z_D/base_D;
        cout<<"[ x:"<<x<<"; y:"<<y<<"; z:"<<z<<" ]"<<endl;
    }else{
        cout<<"【无解】";
//        return DBL_MIN;
    }
}
//计算原理:行列式
int main(){
    double matrix[4][5] ; //三元一次方程组

    input<double>(matrix);
    calc<double>(matrix);
    system("pause");
    return 0;
}
/*demo
2x-y+z=10;
3x+2y-z=16;
x+6y-z=28;

2 -1 1 10
3 2 -1 16
1 6 -1 28

output:input ok[ x:4.18182; y:5.09091; z:6.72727 ] 
*/

原文链接: https://www.cnblogs.com/johnnyzen/p/7560506.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/260136

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 下午1:15
下一篇 2023年2月14日 下午1:15

相关推荐