"Не число" NaN при вычислении кубического корня через Math.Pow
using System;
namespace дом_работа
{
class Program
{
static void Main(string[] args)
{
Console.Write(" Введите значение x = ");
double x = Convert.ToDouble(Console.ReadLine());
Console.Write(" Введите значение y = ");
double y = Convert.ToDouble(Console.ReadLine());
double Sum = Math.Pow(Math.Sin(Math.Pow(x * y - Math.Pow(x, y), 2)), 2) - Math.Pow(1 - (Math.Pow(x, 2)), 1.0 / 3.0);
Console.WriteLine($"sin^2(x*y-x^y)^2-√^3(1-x^2)= {Sum:F3}");
Console.ReadKey();
}
}
}
почему-то из за кубического корня возникают проблемы, так как если x будет больше 1 то программа выводит в консоль не число, в чем может быть проблема ?
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Насколько я в курсе, Math.Pow(x, y) для не целого y реализован так exp(y * ln(x)), где ln(x) при x <= 0 вычислить нельзя, потому что математически результат - комплексное число. У вас x = -3, y = 1/3.
Попробуйте так
double z = 1 - Math.Pow(x, 2);
double Sum = Math.Pow(Math.Sin(Math.Pow(x * y - Math.Pow(x, y), 2)), 2) - Math.Pow(Math.Abs(z), 1.0 / 3.0) * (z < 0 ? -1 : 1);
Введите значение x = 2
Введите значение y = 3
sin^2(x*y-x^y)^2-√^3(1-x^2)= 2,015
