【问题标题】:Non numeric argument to mathematical function Deriv数学函数 Deriv 的非数字参数
【发布时间】:2021-04-19 11:38:24
【问题描述】:
sqrt(Deriv(x^2,"x"))

$ 数学函数的非数字参数。

如何解决?

【问题讨论】:

  • 你想用 R 来做符号代数吗?因为这不是 R 像 Maple 或 Mathematica 那样擅长的东西。它更像是一种数值计算工具。 Deriv 来自什么包,因为它不是基础 R 函数。

标签: r


【解决方案1】:

如果这是 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()
  • R 将无法随后取平方根

你可以(相当笨拙地)用数值计算这个表达式的平方根......

eval(substitute(sqrt(y),list(y=dd)),list(x=4))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多