Здравствуйте, у меня проблемы с написанием кода решения для моей домашней работы. Я должен попросить пользователя ввести 6 переменных для двух уравнений. После успешного извлечения только чисел мне нужно найти наклон каждой линии, y-точку пересечения для каждой линии, две точки на каждой линии (упорядоченная пара, такая как (2,1)), если есть решение. Также, каковы отношения. Я искал и искал в основном проверку чисел и уравнений. У меня проблемы с поиском точек и решений уравнений.
#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;
}
Что-то еще, о чем вы должны подумать, это использование матриц для решения линейных уравнений.
Многие компютеры используют расчеты по эшелонированной форме расширенной матрицы.
то есть.
2x + 3y = 36
х + 9у = 8
Так что это ваша расширенная матрица, а затем вы работаете над ней, чтобы преобразовать ее в эшелонированную форму. Мой профессор по линейной алгебре говорит мне, что это самый распространенный метод, который программисты используют для написания вычислений в системах уравнений.
Я не совсем квалифицирован, чтобы преподавать это, поэтому вот отличная статья.
Увидеть Решение систем уравнений с использованием детерминантов
Пользователь должен войти A, B, C, and D, E, F
и принять это с помощью cin
как вы уже делаете. (Сделайте код проще!) (Предложение: используйте массив из 3 элементов для каждого уравнения.)
Получив это, вы можете использовать формулу на основе детерминанта для непосредственного вычисления решения.