Нахождение корней кубического уравнения - C#

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

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

Всем, привет. Столкнулся с проблемой написания формулы решения кубического уравнения, а точнее нахождения их корней. Ниже есть код, который я писал. Как оказалось, формула, которую я писал по видимому не находит корней. Ссылка на сайт с формулой. Это глупый вопрос, но формула указанная на сайте находить корни? Если не составит труда, не могли бы вы оставить готовый код, для нахождения корней в кубическом уравнении, если он у вас есть!)) Сам код, который я писал(читайте комментарии):
Листинг программы
  1. // Эта формула взята с сайта "http://planetcalc.ru/1122/" В плане конвертирования математического вида теоремы в программный, вроде все нормально написал, но есть проблемки!
  2. Console.Write("Введите А ");
  3. int a = Int32.Parse(Console.ReadLine());
  4. Console.Write("Введите В ");
  5. int b = Int32.Parse(Console.ReadLine());
  6. Console.Write("Введите C ");
  7. int c = Int32.Parse(Console.ReadLine());
  8. double Q = (Math.Pow(a, 2) - 3 * b) / 9;
  9. double R = (2 * Math.Pow(a, 3) - 9 * a * b + 27 * c) / 54;
  10. double S = Math.Pow(Q, 3) - Math.Pow(R, 2);
  11. double fi = 1 / 3 * Math.Acos(R / Math.Sqrt(Math.Pow(Q, 3)));
  12. double x1;
  13. double x2;
  14. double x3;
  15. double x23;
  16. double i; // С этой переменной возникают проблемы. У нее нету значения, но по формуле ее нужно писать.
  17. {if (S > 0)
  18. {
  19. x1 = -2 * Math.Sqrt(Q) * Math.Cos(fi) - a / 3;
  20. x2 = -2 * Math.Sqrt(Q) * Math.Cos(fi + 2 / 3 * Math.PI) - a / 3;
  21. x3 = -2 * Math.Sqrt(Q) * Math.Cos(fi - 2 / 3 * Math.PI) - a / 3;
  22. }
  23. else
  24. {
  25. if (Q > 0)
  26. {
  27. fi = 1 / 3 * Math.Log(Math.Abs(R) / Math.Sqrt(Math.Pow(Q, 3))) + Math.Sqrt(Math.Pow(Math.Abs(R) / Math.Sqrt(Math.Pow(Q, 3)), 2) - 1);
  28. x1 = -2 * Math.Sign(R) * Math.Sqrt(Q) * 2 / (Math.Exp(fi) - Math.Exp(-fi)) - a / 3;
  29. x23 = Math.Sign(R) * Math.Sqrt(Q) * 2 / (Math.Exp(fi) - Math.Exp(-fi)) - a / 3 +- i * Math.Sqrt(3) * Math.Sqrt(Q) * 2 / (Math.Exp(fi) + Math.Exp(-fi));
  30. }
  31. else
  32. {
  33. fi = 1 / 3 * Math.Log(Math.Abs(R) / Math.Sqrt(Math.Abs(Q)), 3);
  34. x1 = -2 * Math.Sign(R) * Math.Sqrt(Math.Abs(Q)) * ((Math.Exp(fi) - Math.Exp(-fi)) / 2) - a / 3;
  35. x23 = Math.Sign(R) * Math.Sqrt(Math.Abs(Q)) * ((Math.Exp(fi) - Math.Exp(-fi)) / 2) - a / 3 +- i * Math.Sqrt(3) * Math.Sqrt(Math.Abs(Q)) * 2 / (Math.Exp(fi) - Math.Exp(-fi);
  36. }
  37. }
  38. }
  39. if (S == 0)
  40. {
  41. x1 = (-2 * Math.Sign(R) * Math.Sqrt(Q) - a / 3) = (-2 * Math.Sqrt(R) - a / 3); // Возникла проблема в написании самого вырожения. Я код не правильно написал?(Взгляните на сайт. Вроде все правильно написал)
  42. }
  43. // Я код не закончил, т.к. возникли вышеперечисленные проблемы

Решение задачи: «Нахождение корней кубического уравнения»

textual
Листинг программы
  1. x23 = Math.Sign(R) * Math.Sqrt(Q) * 2 / (Math.Exp(fi) - Math.Exp(-fi)) - a / 3 - i * Math.Sqrt(3) * Math.Sqrt(Q) * 2 / (Math.Exp(fi) + Math.Exp(-fi)); // x2 = x3: -

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


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

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

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

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

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

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