Как записать комплексное число в C#?
Формулировка задачи:
Ребята, всем привет. Подскажите как записать комплексное число в C#. Часто в выражениях его подписывают i и по умолчанию, равняется sqrt(-1), но мне говорили, что нужно писать через Complex. Как это записать?
Вот мой код:
static void Main(string[] args)
{
Console.Write("Введите А ");
int a = Int32.Parse(Console.ReadLine());
Console.Write("Введите В ");
int b = Int32.Parse(Console.ReadLine());
Console.Write("Введите C ");
int c = Int32.Parse(Console.ReadLine());
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);
double fi;
double x1;
double x2;
double x3;
//double x23;
double i = Math.Sqrt(-1);
double v1 = -2 * Math.Sign(R) * Math.Sqrt(Q) - a / 3;
double v2 = Math.Sign(R) * Math.Sqrt(Q) - a / 3;
{
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;
Console.WriteLine(x1);
Console.WriteLine(x2);
Console.WriteLine(x3);
}
else if (S < 0)
{
if (Q > 0)
{
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);
x1 = -2 * Math.Sign(R) * Math.Sqrt(Q) * 2 / (Math.Exp(fi) - Math.Exp(-fi)) - a / 3;
//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));
Console.WriteLine("Действительный корень x1= " + x1);
//Console.WriteLine("Пара комплексных корней (x2,3)" + x23);
}
else if (Q < 0)
{
fi = 1 / 3 * Math.Log(Math.Abs(R) / Math.Sqrt(Math.Abs(Q)), 3);
x1 = -2 * Math.Sign(R) * Math.Sqrt(Math.Abs(Q)) * 2 / (Math.Exp(fi) + Math.Exp(-fi)) - a / 3;
//x23 = Math.Sign(R) * Math.Sqrt(Math.Abs(Q)) * 2 / (Math.Exp(fi) + Math.Exp(-fi)) - a / 3 + -i * Math.Sqrt(3) * Math.Sqrt(Math.Abs(Q)) * 2 / (Math.Exp(fi) - Math.Exp(-fi));
Console.WriteLine("Действительный корень x1=" + x1);
//Console.WriteLine("Пара комплексных корней (x2,3)" + x23);
}
}
}
if (S == 0)
{
x1 = v1 = -2 * Math.Pow(Math.Sqrt(R), 3) - a / 3;
x2 = v2 = Math.Pow(Math.Sqrt(R), 3) - a / 3;
Console.WriteLine(x1);
Console.WriteLine(x2);
}
//else
//{ Console.Write("Система не имеет решений"); }
Console.ReadKey();
}Решение задачи: «Как записать комплексное число в C#?»
textual
Листинг программы
using System.Numerics;