Есть метод нахождения интегралов методами трапеций
| Код | class TrapezoidalRule : NumericalIntegrationRule { public double Calculate(Func<double, double> func, double min, double max, double subintervalsCount) { double result = 0; double step = (max - min) / subintervalsCount; for (double i = min; i < max; i += step) result += ((func(i) + func(i + step)) / 2) * step; return result; } }
|
На его основе создано ещё один метод Этот метод был создан на основе полученной теории математики и физики,он должен решать обратное преобразование Фурье.
| Код | public static Complex reverstrans(double U, double anguarFrequency, double T) { NumericalIntegration integration = new NumericalIntegration(); double u1 = U * integration.Calculate(t => Math.Cos(anguarFrequency), 0, T);//U'(w) double u2 = U * integration.Calculate(t => Math.Sin(anguarFrequency), 0, T);//U''(w) double ValFurieTrans = u1 - Complex.ImaginaryOne * u2;//U'(w) - U''(w) = U(w)e^-j*fi(w)-----Ошибка неявное преобразования return (1 / (2 * Math.PI)) * integration.Calculate(w => Math.Cos(ValFurieTrans), 0, T) + Complex.ImaginaryOne * (1 / (2 * Math.PI)) * integration.Calculate(w => Math.Sin(ValFurieTrans), 0, T); }
|
В итоге указанной строке он просто остановился на Неявном преобразовании Самое интересное что изменить ничего нельзя,пытался присвоить вместо Complex double но ничего не выходило.
По математическим основам я делаю правильно,просто есть какая-то мелкая деталь,которая упущена.
Как обойти и избавиться от этого неявного преобразования? |