NaN при табуляции функции

162
05 мая 2019, 19:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApp5
{
    class Program
    {
        static void Main(string[] args)
        {
            string temp;
            double y,a, x, k,max,dx;
            StreamReader streamReader = new StreamReader("C:/Users/User/Documents/Visual Studio 2017/Projects/ConsoleApp5/ConsoleApp5/date.txt");
            temp = streamReader.ReadLine();
            a=Convert.ToDouble(temp);
            temp = streamReader.ReadLine();
            k=Convert.ToDouble(temp);
            temp = streamReader.ReadLine();
            x =Convert.ToDouble(temp);
            temp = streamReader.ReadLine();
            max =Convert.ToDouble(temp);
            temp = streamReader.ReadLine();
            dx = Convert.ToDouble(temp);
            StreamWriter streamWriter = new StreamWriter("./result.txt");
            for (double i = x; i < max; i+=dx,x+=dx)
            {
                if (Math.Log(a * x)>0 )
                {
                    y = (Math.Pow(Math.Cos(a * x), 1.0/3.0)) + (k * Math.Cos(a * x) / Math.Log(a * x));
                    streamWriter.Write("\t {0:N3}", y);
                }
            }
            streamWriter.Close();
            streamReader.Close();
            Console.ReadKey();
        }
    }
}

Данные в файл записаны вот так (в столбик):

2,3
15,2
11,13
22,23
0,5

Вывод в файле:

5,150 NaN NaN NaN 2,248 5,401 2,823 NaN NaN NaN 4,409 4,504 NaN NaN NaN 2,465 5,016 2,301 NaN NaN NaN 4,337 4,048

Откуда берётся NaN?

Answer 1

Cos(ax) становится отрицательным (-0.93 для данных на картинке), и Math.Pow(double x, double y); не может возвести в дробную степень

x < 0, но не NegativeInfinity; y не является целым числом, NegativeInfinity, или PositiveInfinity.

Возвращаемое значение NaN

P.S. У вас случайно не подразумеваются значения a*x в градусах?

READ ALSO
как правильно передать параметр в SqlParam

как правильно передать параметр в SqlParam

Как правильно передается параметр

157
Добавление элементов ниже других

Добавление элементов ниже других

Использую WinFormsМне необходимо добавлять динамически создаваемые панели в другую панель так, чтобы каждая новая находилась ниже ранее добавленной

121
Очистка данных о посещении сайта AngleSharp

Очистка данных о посещении сайта AngleSharp

Использую библиотеку AngleSharp для работы с сайтомНа сайте стоит защита от частых запросов

148
Создание штрих-кода и его печать C#

Создание штрих-кода и его печать C#

Я получаю из БД данные, содержащие уникальные поляМне нужно создать штрих-код для выбранного элемента по уникальному полю в формате code-128...

132