许虎虎 开发者工具集
  

一元函数自动求解在线计算工具

牛顿法是解决方案的核心。 这是维基百科的定义: 牛顿法是一种逼近真实和复杂领域中方程的方法。 该方法使用函数 f (x) 的泰勒级数的前几项来求方程 f (x) = 0 的根。 所以牛顿法就是迭代x直到x收敛到一个小范围

因此,对于任何一元函数,都可以用牛顿法求出它的近似解。 如果误差小于 10^-9 或迭代步数超过 10^5,则终止迭代。

在构建求解器时,有一些重要问题需要解决。 输入表达式解析、函数表达式、函数方程推导、函数代入和求值。 其中,当务之急是:如何存储(表示)函数?

为什么选择这种二叉表达式树呢?主要是因为它是一种方便节点递归的树结构。 后面我们会用递归的思想推导一个包含代入和求值思想的函数。

表达式预处理:首先,我们需要对输入的表达式字符串进行预处理。 因为这里有一些简单或冗长的数学描述需要标准化,当一个自然输入的字符串经过预处理后,就变成了一个中缀字符串,人类可以自然理解的表示增加。 但是,要将表达式保存为二叉树,还需要将中缀表达式转换为后缀表达式

调度场算法:度场算法基本上类似于 Stack Recursive Hanoi 如何使用堆栈来计算公式。 用队列表示输出后缀表达式,用栈存储运算符和函数

构建二叉树:假设输入表达式为(a + b) * (c * (d + e))。 经过调度域算法,得到a b + c d e + * *的后缀公式。 此时,可以使用后缀表达式特征快速构建二叉表达式树。

评估:分配和评估二叉树的算法应该很容易想出。 利用二叉树的递归特性,根是一个运算符或函数,递归定义左右子树。 它只是递归地计算左右子树的值并进行算子运算。

构建导数函数树:只剩下求解导数函数的步骤。 由于微分函数规则较多,这一步也是比较复杂的操作。 首先,表达式推导函数应该用二叉表达式树来表示。 这是因为它们可以直接求值和赋值,而且二叉表达式树具有递归的特性。 二、二叉表达式树的根节点永远是函数的一个属性,左右子树也是表达式,可以用递归的思想来求解微分函数