Почему неправильно считается простое математическое выражение? - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Вопрос будет очень банальным: я правильно записал выражение?
Листинг программы
  1. double R = (2 * Math.Pow(a, 3) - 9 * a * b + 27 * c) / 54;
. Потому-что, программа которую я пишу, выдает неправильный ответ в сравнении с онлайн калькулятором. К примеру я задаю значения: a= 4, b=-2, c=5, d=3; P.S. Присутствует переменная (d), она делит свое слагаемое на все заданные a, b, c, d. Калькулятор выдает ответ 1,287, а моя программа 0,474537037037037 К примеру Q - выдает правильный ответ!

Сам код программы:

Листинг программы
  1. double fi, x, x1, x2, x3;
  2. Console.Write("Введите D ");
  3. double d = Double.Parse(Console.ReadLine());
  4. Console.Write("Введите A ");
  5. double a = Double.Parse(Console.ReadLine()) / d;
  6. Console.Write("Введите B ");
  7. double b = Double.Parse(Console.ReadLine()) / d;
  8. Console.Write("Введите C ");
  9. double c = Double.Parse(Console.ReadLine()) / d;
  10. double i = Math.Sqrt(-1);
  11. double Q = (Math.Pow(a, 2) - 3 * b) / 9;
  12. double R = (2 * Math.Pow(a, 3) - 9 * a * b + 27 * c) / 54;
  13. double S = Math.Pow(Q, 3) - Math.Pow(R, 2);
  14. Console.WriteLine(Q);
  15. Console.WriteLine(R);
  16. Console.WriteLine(S);
  17. Console.WriteLine();
  18. //ch = 2 / (Exp(x) – Exp(-x))
  19. //sh = 2 / (Exp(x) + Exp(-x))
  20. if (S > 0)
  21. {
  22. fi = 1 / 3 * Math.Acos(R / Math.Sqrt(Math.Pow(Q, 3)));
  23. x1 = -2 * Math.Sqrt(Q) * Math.Cos(fi) - a / 3;
  24. x2 = -2 * Math.Sqrt(Q) * Math.Cos(fi + (2 / 3 * Math.PI)) - a / 3;
  25. x3 = -2 * Math.Sqrt(Q) * Math.Cos(fi - (2 / 3 * Math.PI)) - a / 3;
  26. }
  27. else if (S < 0)
  28. {
  29. if (Q > 0)
  30. {
  31. x = (Math.Abs(R) / Math.Sqrt(Math.Pow(Q, 3)));
  32. // Arch = Log(x + Sqrt(x * x – 1))
  33. fi = (1 / 3) * Math.Log(x + Math.Sqrt(x * x - 1));
  34. x1 = -2 * Math.Sign(R) * Math.Sqrt(Q) * (2 / (Math.Exp(fi) - Math.Exp(-fi))) - a / 3;
  35. 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));
  36. }
  37. else if (Q < 0)
  38. {
  39. x = (Math.Abs(R)) / Math.Sqrt(Math.Pow(Math.Abs(Q), 3));
  40. // Arsh = Log(x + Sqrt(x * x + 1))
  41. fi = 1 / 3 * Math.Log(x + Math.Sqrt(x * x + 1));
  42. x1 = -2 * Math.Sign(R) * Math.Sqrt(Math.Abs(Q)) * (Math.Exp(fi) + Math.Exp(-fi)) - a / 3;
  43. 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));
  44. 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));
  45. Console.WriteLine(fi);
  46. Console.WriteLine(x1);
  47. Console.WriteLine(x2);
  48. Console.WriteLine(x3);
  49. }
  50. }
  51. Console.ReadKey();

Решение задачи: «Почему неправильно считается простое математическое выражение?»

textual
Листинг программы
  1. x1 = -2.0 * Math.Sign(R) * Math.Sqrt(Math.Abs(Q)) * (Math.Exp(fi) + Math.Exp(-fi)) - a / 3.0;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы