我正在尝试用C#编写一个方程组程序。我知道如何在纸上解决问题,但我很难将其放入代码中。我对此非常陌生(不到一个月前开始编程,几天前就开始编程),所以我知道这不是正确的,但这是我能想到的最好的。我试着在这里和其他网站上寻找能够向我发送正确方向的东西,但却无法找到任何东西。我不希望你为我编写整个程序,只是为了给我一个正确的想法。这是我到目前为止所做的,我意识到它中的错误以及为什么它不起作用,我只是无法找到解决方法。
Console.WriteLine("Enter first equation A: ");
string str1A = Console.ReadLine();
Console.WriteLine("Enter first equation B: ");
string str1B = Console.ReadLine();
Console.WriteLine("Enter first equation C: ");
string str1C = Console.ReadLine();
Console.WriteLine("Enter the second equation A: ");
string str2A = Console.ReadLine();
Console.WriteLine("Enter the second equation B: ");
string str2B = Console.ReadLine();
Console.WriteLine("Enter the second equation C: ");
string str2C = Console.ReadLine();
double dbl1A = Convert.ToDouble(str1A);
double dbl1B = Convert.ToDouble(str1B);
double dbl1C = Convert.ToDouble(str1C);
double dbl2A = Convert.ToDouble(str2A);
double dbl2B = Convert.ToDouble(str2B);
double dbl2C = Convert.ToDouble(str2C);
double dbl2AN = dbl2A * -1;
double dbl2BN = dbl2B * -1;
double dbl2CN = dbl2C * -1;
double dbl3A = dbl1A + dbl2AN;
double dbl3B = dbl1B + dbl2BN;
double dbl3C = dbl1C + dbl2CN;
Console.WriteLine(dbl3A + "+" + dbl3B + "+" + dbl3C);
Console.ReadLine();
答案 0 :(得分:2)
我假设您正在以Ax + By = C
的形式获取两个方程的系数,如果情况如此,则该过程将与纸上的相同。将每个第二个等式乘以'系数乘以A1/A2
,然后从第一个等式中的相应系数中减去它们(A
的结果应为0)。这为您提供了B*y = C*
(其中B*
和C*
是值)的等式,您可以轻松地为y求解。然后将y
重新插入原始等式并求解x
。
答案 1 :(得分:0)
我建议您退后一步,考虑一下您希望计算表达式的变量以及要传递给程序的数字。
“第一个等式A”应该是“3x”还是“3x = 2”或其他表达式?方程将具有相同的符号,因此必须被解析为我怀疑的左侧和右侧。虽然矩阵求逆是编码解法的一种途径,但您首先必须让用户输入矩阵的值。例如,考虑是否有2个等式:x + y = 4和x-y = 2。请注意,要解决这些问题,您可以添加它们并获得x = 3,而减法会为使用基本行操作的解决方案提供y = 1。
如果你有一个矩阵,其中第一行是:(1,1),第二行是:(1,-1)那么你可以使用公式来反转它并为我的想法生成解决方案处理一个2 x 2的情况,可能会推广到3 x 3,这对计算来说可能有点难看。