Дифференцирование математической функции с C#?

Тип данных dob , который вы передаете, равен String, но в python требуется tuple. Поэтому вам нужно сначала преобразовать вашу строку в tuple, просто измените, следуя ниже

[ 110]
5
задан Wai Ha Lee 10 December 2015 в 16:18
поделиться

4 ответа

Если Вы записали функцию, она была уже получена.

И, учитывая, что это - международная функция, я предположу, что Вы не подразумеваете, что определение исчисления "происходит".

0
ответ дан 18 December 2019 в 05:19
поделиться

Вы думаете о Лямбда-выражениях?

В основном можно передать функцию в функцию.

Поэтому думайте в некотором роде на объекте. В зависимости от природы объекта помог бы определить, как объекты отсортированы.

Но можно все еще создать универсальную функцию вида, затем передают в том, как сравнить объекты.

1
ответ дан 18 December 2019 в 05:19
поделиться

При размышлении о символьном управлении формулами затем, Вы - более обеспеченное выполнение Ваших дериваций на языках как Maple или Mathematica. Они разработаны для символьного вычисления.

Править: Если Maple и Mathematica являются слишком дорогими для Вас затем существуют другие опции. Википедия имеет довольно полный список компьютерных пакетов алгебры. http://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems

7
ответ дан 18 December 2019 в 05:19
поделиться

Вы не можете вычислить точную производную функции с помощью компьютерной программы (если Вы не делаете символьную математику..., но это - другой, более сложный путь, тема).

Существует несколько подходов к вычислениям числовой производной функции. Самым простым является метод с тремя точками в центре:

  • Возьмите небольшое число h
  • Оценить [f(x+h) - f(x-h)] / 2h
  • Voilà, приближение f' (x), только с двумя функциональными оценками

Другой подход является методом с пятью точками в центре:

  • Возьмите небольшое число h
  • Оценить [f(x-2h) - 8f(x-h) + 8f(x+h) - f(x+2h)] / 12h
  • Voilà, лучшее приближение f' (x), но требуется больше функциональных оценок

Другая тема - то, как реализовать это использование C#. Во-первых, Вам нужен делегат, который представляет функцию, которая отображает подмножество вещественных чисел на другое подмножество вещественных чисел:

delegate double RealFunction(double arg);

Затем Вам нужна маршрутизация, которая оценивает производную:

public double h = 10e-6; // I'm not sure if this is valid C#, I'm used to C++

static double Derivative(RealFunction f, double arg)
{
    double h2 = h*2;
    return (f(x-h2) - 8*f(x-h) + 8*f(x+h) - f(x+h2)) / (h2*6);
}

Если Вы хотите объектно-ориентированную реализацию, необходимо создать следующие классы:

interface IFunction
{
    // Since operator () can't be overloaded, we'll use this trick.
    double this[double arg] { get; }
}

class Function : IFunction
{
    RealFunction func;

    public Function(RealFunction func)
    { this.func = func; }

    public double this[double arg]
    { get { return func(arg); } }
}

class Derivative : IFunction
{
    IFunction func;
    public static double h = 10e-6;

    public Derivative(IFunction func)
    { this.func = func; }

    public double this[double arg]
    {
        get
        {
            double h2 = h*2;
            return (
                func[arg - h2] - func[arg + h2] +
                ( func[arg + h]  - func[arg - h] ) * 8
                ) / (h2 * 6);
        }
    }
}
33
ответ дан 18 December 2019 в 05:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: