Страницы

Поиск по вопросам

воскресенье, 12 января 2020 г.

Решение интеграла в преобразовании Фурье

#c_sharp


Есть формула 



1-ая это собственно преобразование Фурье,а 2-ая нижняя это формула нахождения спектральной
плотности(формула на основе 1-ой),то что я пытаюсь запрограммировать и решить.

Отдельно добавлен класс комплексных чисел  чтобы не засорять главную форму.

Такой вопрос,каким методом я могу решить интеграл во 2-ой формуле?

Все поиски увенчались ссылками на alglib,но им запрещено пользоваться(антиплагиат
и запрет кафедры на пользование готовыми ресурсами и библиотеками)

Фрагмент кода написанный ниже,это мои попытки воссоздать решение задачи по шагам
и по формуле.
Но вопрос один,как описать в своей программе интеграл по 2-ой формуле и после записать
его в свою функцию.

 public double calculate1(double u)
        {
           int nmax = 512;
           int k=0,t=1;
           double [] Rex=new double[nmax/2+1];
           double [] Imx= new double[nmax/2+1];
           double[] x = new double[nmax];
           double f, w,ur=0,uit=0 ;
           Complex ct;
           int U = Convert.ToInt32(textBox1.Text);
           int T = Convert.ToInt32(textBox2.Text);
          Rex[k]=0;
          Imx[k]=0;

          for (double j = 0; j <= nmax / 2; j++)
          {
              f = 1 / T;
              w = 2 * Math.PI * f;
              u=U * Math.Exp( -j * w * t);                   
          }
          uit = U * T;//расчёт значения спектральной плотности амплитуд на нулевой
частоте
          return u;
       }

    


Ответы

Ответ 1



не буду оценивать верность приведенных формул (и применимость их к решаемой задаче). Допустим тут все норм. А дальше - любой определенный интеграл можно посчитать численным интегрированием. Т.е. интервал [0...тау] разбиваешь на много отрезков (чем больше, тем результат точнее). Далее в цикле вычисляешь значение подинтегральной функции в точке t (например первой точке каждого отрезка), умножаешь на длину отрезка, т.е. получаешь площадь соответствующего прямоугольника, и накапливаешь эти значения. По окончании цикла эта сумма и будет результатом. Ну и для производительности - все значения, которые не зависят от переменной цикла, т.е. от t - вычислять вне цикла, один раз (например в приведенном автором вопроса примере это f и w )

Комментариев нет:

Отправить комментарий