【发布时间】:2021-04-19 11:38:24
【问题描述】:
sqrt(Deriv(x^2,"x"))
$ 数学函数的非数字参数。
如何解决?
【问题讨论】:
-
你想用 R 来做符号代数吗?因为这不是 R 像 Maple 或 Mathematica 那样擅长的东西。它更像是一种数值计算工具。
Deriv来自什么包,因为它不是基础 R 函数。
标签: r
sqrt(Deriv(x^2,"x"))
$ 数学函数的非数字参数。
如何解决?
【问题讨论】:
Deriv 来自什么包,因为它不是基础 R 函数。
标签: r
如果这是 Deriv 包中的 Deriv 函数,那么将参数作为字符串传递应该适用于第一部分:
library(Deriv)
Deriv("x^2","x")
## [1] "2 * x"
(但是,根据您上面报告的错误消息猜测,您已经这样做了......)
求平方根会更难。 如果您已安装 rSymPy(这需要 Python 和 sympy Python 库),则此方法有效:
library(rSymPy)
sympy("var('x')")
sympy("sqrt(diff(x**2, x))")
## [1] "2**(1/2)*x**(1/2)"
正如@MrFlick 所说,除非您使用计算机代数系统的 R 接口(例如 Ryacas),否则您将无法在 R 中进行大量符号计算。您可以使用 Maple、Mathematica 或开源替代品,例如 sympy(用于 Python)或 SageMath。
在 R 中,您可以使用 D():
(dd <- D(expression(x^2),"x"))
## 2 * x
expression()中
你可以(相当笨拙地)用数值计算这个表达式的平方根......
eval(substitute(sqrt(y),list(y=dd)),list(x=4))
【讨论】: