首页 文章

求解具有两个未知数的两个方程的系统

提问于
浏览
9

求解下面两个未知数的两个方程组的系统:

enter image description here

a1,b1,c1,a2,b2和c2由用户自己输入 .

我一直试图找到问题的数学解决方案,我似乎无法走远...

到目前为止我尝试过的是:

  • 从第一个方程找到y . (b1y = c1-a1x,y =(c1-a1x)/ b1)

  • 然后我在第二个等式中替换y,得到一个方程式,其中1个未知数,在这种情况下为x . 但是,我无法解决这个等式,我得到了一些奇数/方程并停在这里 .

这是正确的还是有更简单的方法来做到这一点?

当前代码:

#include <iostream>

using namespace std;

int main()
{
    int a1, b1, c1, a2, b2, c2;
    cout << "Enter the values for the first equation." << endl;
    cout << "Enter the value for a1" << endl;
    cin >> a1;
    cout << "Enter the value for b1" << endl;
    cin >> b1;
    cout << "Enter the value for c1" << endl;
    cin >> c1;
    cout << "Enter the values for the second equation." << endl;
    cout << "Enter the value for a2" << endl;
    cin >> a2;
    cout << "Enter the value for b2" << endl;
    cin >> b2;
    cout << "Enter the value for c2" << endl;
    cin >> c2;
    cout << "Your system of equations is the following:" << endl;
    cout << a1 << "x+" << b1 << "y=" << c1 << endl;
    cout << a2 << "x+" << b2 << "y=" << c2 << endl;

if ((a1 * b2) - (b1 * a2) == 0){
    cout << "The system has no solution." << endl;
}
else{
    res_x = ((c1*b2) - (b1*c2))/((a1*b2)-(b1*a2));
    res_y = ((a1*c2) - (c1*a2)) / ((a1*b2) - (b1*a2));
    cout << "x=" << res_x << " y=" << res_y << endl;
}

    return 0;
}

1 回答

  • 11

    我们使用Cramer's rule求解线性系统:

    int main(int argc, char** argv) {
        /* we solve the linear system
         * ax+by=e
         * cx+dy=f
         */
        if(argc != 7) {
            cerr<<"Cramer equations system: error,"
                                 " we need a,b,c,d,e,f parameters.\n";
            return -1;
        }
    
        double a,b,e;
        double c,d,f;
        sscanf(argv[1],"%lf",&a);
        sscanf(argv[2],"%lf",&b);
        sscanf(argv[3],"%lf",&e);
        sscanf(argv[4],"%lf",&c);
        sscanf(argv[5],"%lf",&d);
        sscanf(argv[6],"%lf",&f);
    
        double determinant = a*d - b*c;
        if(determinant != 0) {
            double x = (e*d - b*f)/determinant;
            double y = (a*f - e*c)/determinant;
            printf("Cramer equations system: result, x = %f, y = %f\n", x, y);
        } else {
            printf("Cramer equations system: determinant is zero\n"
                    "there are either no solutions or many solutions exist.\n"); 
        }
        return 0;
    }
    

    ./cramer_equation_system 1 2 5 1 -1 -1

    Cramer方程组:结果,x = 1.000000,y = 2.000000

相关问题