2013-01-29 5 views
-1

Здравствуйте, у меня возникли проблемы с написанием кода решения для моей домашней работы. Я должен попросить пользователя ввести 6 переменных для двух уравнений. После успешного извлечения чисел мне нужно найти наклон каждой линии, y-перехват для каждой строки, две точки на каждой строке (упорядоченная пара, такая как (2,1)), если есть решение. Также, что такое отношения. Я искал и искал, главным образом, проверку количества и уравнения. У меня возникают проблемы с нахождением точек и решений уравнений.Решение системы из 2 линейных уравнений с использованием C++

#include <iostream> 
#include <limits> 

int main() 
{ 
std::cout<<"This program is designed to test two linear equations. \n"; 
std::cout<<"In order to best solve the system, \n"; 
std::cout<<"equations will be in the form of a*x + b*y = c. \n"; 
std::cout<<"and d*x + e*y =f. \n"; 
std::cout<<"Please enter an integer for a, b, and c. \n"; 
double a, b, c, d, e, f; 

while ((std::cout << "Enter a.") 
    && !(std::cin >> a)) 
{ 
    std::cout << "That's not a number "; 
    std::cin.clear(); 
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
} 
while ((std::cout << "Enter b.") 
      && !(std::cin >> b)) 
{ 
    std::cout << "That's not a number "; 
    std::cin.clear(); 
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
} 
while ((std::cout << "Enter c.") 
      && !(std::cin >> c)) 
{ 
    std::cout << "That's not a number "; 
    std::cin.clear(); 
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
} 
std::cout<<"Equation 1 is "<<a<<"x +"<<b<<"y ="<<c; 

std::cout<<"Please enter an integer for d, e, and f. \n"; 

while ((std::cout << "Enter d.") 
     && !(std::cin >> d)) 
{ 
    std::cout << "That's not a number "; 
    std::cin.clear(); 
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
} 
while ((std::cout << "Enter e.") 
      && !(std::cin >> e)) 
{ 
    std::cout << "That's not a number "; 
    std::cin.clear(); 
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
} 
while ((std::cout << "Enter f.") 
      && !(std::cin >> f)) 
{ 
    std::cout << "That's not a number "; 
    std::cin.clear(); 
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
    } 
    std::cout<<"Equation 2 is "<<d<<"x +"<<e<<"y ="<<f; 

    double slope1, slope2; 
    double x1, x2, y1, y2; 
    slope1 = (b/a); 
    slope2 = (e/d); 
    std::cout<<" Slope of Equation 1 is "<<slope1<<"\n"; 
    std::cout<<" Slope of Equation 2 is "<<slope2<<"\n"; 

    x1 = ((c*e)-(b*f))/ ((a*e)-(b*d)); 
    y1 = ((a*f)-(c*d))/ ((a*e)-(b*d)); 

    return 0; 
} 
+0

Можете уточнить, в чем конкретный вопрос? –

+0

Мой конкретный вопрос: как найти 2 точки на каждой линии уравнения и как решить уравнение. –

ответ

1

Что-то еще, о чем вы должны думать, это использование матриц для решения линейных уравнений.

Множество вычислителей используют вычисления в форме эшелона расширенной матрицы.

ie.

2x + 3y = 36 х + 9y = 8

[2 3 36] [1 9 8]

Так что это ваша расширенная матрица, а затем вы работаете на нее, чтобы превратить его в эшелон. Мой профессор линейной алгебры говорит мне, что это самый распространенный метод, который программисты используют для написания расчетов по системам уравнений.

Я не совсем квалифицирован, чтобы учить его, поэтому здесь отличная статья.

http://stattrek.com/matrix-algebra/echelon-form.aspx

+0

Я не работал с матрицами в этом семестре в C++. –

0

См Solving Systems of Equations Using Determinants

enter image description here

Have пользователь вводит A, B, C, and D, E, F и признать, что с помощью cin как вы уже делаете. (Сделайте код проще!) (Предложение: используйте 3-элементный массив для каждого уравнения.)

После этого вы можете использовать формулу, основанную на определителе, для непосредственного вычисления решения.

+2

Эта страница помечена как охраняемая авторским правом (см. Заголовок). Хотя формулы общеизвестны, вы, вероятно, не имеете права снимать эту картинку со своего веб-сайта. – us2012

+0

Хорошо, я начну работать над этим. –

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