Почему неправильно считается простое математическое выражение? - C#
Формулировка задачи:
Всем привет. Вопрос будет очень банальным: я правильно записал выражение?
. Потому-что, программа которую я пишу, выдает неправильный ответ в сравнении с онлайн калькулятором.
К примеру я задаю значения:
a= 4, b=-2, c=5, d=3; P.S. Присутствует переменная (d), она делит свое слагаемое на все заданные a, b, c, d. Калькулятор выдает ответ 1,287, а моя программа 0,474537037037037
К примеру Q - выдает правильный ответ!
double R = (2 * Math.Pow(a, 3) - 9 * a * b + 27 * c) / 54;
Сам код программы:
double fi, x, x1, x2, x3; Console.Write("Введите D "); double d = Double.Parse(Console.ReadLine()); Console.Write("Введите A "); double a = Double.Parse(Console.ReadLine()) / d; Console.Write("Введите B "); double b = Double.Parse(Console.ReadLine()) / d; Console.Write("Введите C "); double c = Double.Parse(Console.ReadLine()) / d; double i = Math.Sqrt(-1); double Q = (Math.Pow(a, 2) - 3 * b) / 9; double R = (2 * Math.Pow(a, 3) - 9 * a * b + 27 * c) / 54; double S = Math.Pow(Q, 3) - Math.Pow(R, 2); Console.WriteLine(Q); Console.WriteLine(R); Console.WriteLine(S); Console.WriteLine(); //ch = 2 / (Exp(x) – Exp(-x)) //sh = 2 / (Exp(x) + Exp(-x)) if (S > 0) { fi = 1 / 3 * Math.Acos(R / Math.Sqrt(Math.Pow(Q, 3))); x1 = -2 * Math.Sqrt(Q) * Math.Cos(fi) - a / 3; x2 = -2 * Math.Sqrt(Q) * Math.Cos(fi + (2 / 3 * Math.PI)) - a / 3; x3 = -2 * Math.Sqrt(Q) * Math.Cos(fi - (2 / 3 * Math.PI)) - a / 3; } else if (S < 0) { if (Q > 0) { x = (Math.Abs(R) / Math.Sqrt(Math.Pow(Q, 3))); // Arch = Log(x + Sqrt(x * x – 1)) fi = (1 / 3) * Math.Log(x + Math.Sqrt(x * x - 1)); x1 = -2 * Math.Sign(R) * Math.Sqrt(Q) * (2 / (Math.Exp(fi) - Math.Exp(-fi))) - a / 3; x2 = Math.Sign(R) * Math.Sqrt(Q) * (2 / (Math.Exp(fi) - Math.Exp(-fi))) - a / 3 + (i * Math.Sqrt(3) * Math.Sqrt(Q)) * (Math.Exp(fi) + Math.Exp(-fi)); } else if (Q < 0) { x = (Math.Abs(R)) / Math.Sqrt(Math.Pow(Math.Abs(Q), 3)); // Arsh = Log(x + Sqrt(x * x + 1)) fi = 1 / 3 * Math.Log(x + Math.Sqrt(x * x + 1)); x1 = -2 * Math.Sign(R) * Math.Sqrt(Math.Abs(Q)) * (Math.Exp(fi) + Math.Exp(-fi)) - a / 3; x2 = Math.Sign(R) * Math.Sqrt(Math.Abs(Q)) * (Math.Exp(fi) + Math.Exp(-fi)) - a / 3 + (i * Math.Sqrt(3) * Math.Sqrt(Math.Abs(Q))) * (Math.Exp(fi) - Math.Exp(-fi)); x3 = Math.Sign(R) * Math.Sqrt(Math.Abs(Q)) * (Math.Exp(fi) + Math.Exp(-fi)) - a / 3 - (i * Math.Sqrt(3) * Math.Sqrt(Math.Abs(Q))) * (Math.Exp(fi) - Math.Exp(-fi)); Console.WriteLine(fi); Console.WriteLine(x1); Console.WriteLine(x2); Console.WriteLine(x3); } } Console.ReadKey();
Решение задачи: «Почему неправильно считается простое математическое выражение?»
textual
Листинг программы
x1 = -2.0 * Math.Sign(R) * Math.Sqrt(Math.Abs(Q)) * (Math.Exp(fi) + Math.Exp(-fi)) - a / 3.0;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д