2013-10-27 3 views
7

Решить систему двух уравнений с двумя неизвестными ниже:Решить систему двух уравнений с двумя неизвестными

enter image description here

a1, b1, c1, a2, b2, c2, вводятся самим пользователем.

Я пытался найти математическое решение задачи первой, и я не могу пойти далеко ..

То, что я пытался до сих пор:

  1. От первого уравнение для нахождения y. (b1y = c1-a1x, y = (c1-a1x)/b1)
  2. Затем я заменяю 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; 
} 
+2

'C++' код, пожалуйста, – P0W

+2

в вашем кода, во-первых, вы должны проверить, имеет ли ваша система из двух неизвестных одно, бесконечность или нет решения (вычислите детерминант) – lolando

+2

Решение прямо задано как обратное к матрице 2x2 (a1, b1; a2, b2), если матрица обратима (т. е. det! = 0). –

ответ

10

мы решаем линейную систему с помощью 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

Крамер уравнений системы: результат, x = 1.000000, y = 2.000000

 Смежные вопросы

  • Нет связанных вопросов^_^