如何显示导数

Der*_*yBK 1 .net c# math console mathnet-numerics

不确定这是本网站的正确部分,但我有一个问题。

所以,我使用 MathNet.Numerics 来计算导数。我想在控制台中显示它们。

代码示例

using System;
using MathNet.Numerics;

namespace math
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Func<double,double> f = x => 3 * Math.Pow(x, 3) + 2 * x - 6;
            var test = Differentiate.DerivativeFunc(f, 1);
            Console.WriteLine(test.ToString());
            Console.ReadKey();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Gui*_*sdy 6

问题

\n\n

让我重新表述您的问题,以确保我理解并正确回答您:给定功能3x\xc2\xb3 + 2x - 6您想要在控制台中打印的函数,导数方程9x\xc2\xb2 + 2

\n\n

Math.NET Numerics 库无法做到这一点

\n\n

这个库做计算。它不会尝试构建导数方程。

\n\n

看:Differentiate.DerivativeFunc方法返回一个 C# 方法,Func<double, double>该方法采用 double 作为参数,并返回 double 作为结果。此签名使得无法检索f\'的方程。深入研究代码,您会发现该库主要用于计算近似值。

\n\n

然而 Math.NET 符号可以

\n\n

https://symbolics.mathdotnet.com/就是您正在寻找的内容。我写了以下代码:

\n\n
// using System;\n// using MathNet.Symbolics;\n// using Expr = MathNet.Symbolics.SymbolicExpression;\n\nvar x = Expr.Variable("x");\nvar func = 3 * (x * x * x) + 2 * x - 6;\nConsole.WriteLine("f(x) = " + func.ToString());\n\nvar derivative = func.Differentiate(x);\nConsole.WriteLine("f\'(x) = " + derivative.ToString());\n
Run Code Online (Sandbox Code Playgroud)\n\n

在控制台中打印:

\n\n
\n

f(x) = -6 + 2*x + 3*x^3

\n\n

f\'(x) = 2 + 9*x^2

\n
\n