zoukankan      html  css  js  c++  java
  • [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 ] */
  • 相关阅读:
    zbb20180930 设计模式-单例模式
    zbb20180930 代理模式 -静态代理-jdk动态代理-cglib动态代理
    zbb20180929 thread java并发编程之Condition
    zbb20180929 thread 自旋锁、阻塞锁、可重入锁、悲观锁、乐观锁、读写锁、对象锁和类锁
    zbb20180929 thread notify()与notifyAll()的区别
    26、Jquery 基础
    25、Javascript 事件
    24、Javascript BOM
    23、Javascript DOM
    22、正则表达式
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/7560506.html
Copyright © 2011-2022 走看看