首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >变量中导数D()的uniroot() (或如何将对象编写为函数)

变量中导数D()的uniroot() (或如何将对象编写为函数)
EN

Stack Overflow用户
提问于 2021-09-22 09:10:28
回答 1查看 23关注 0票数 0

我有一个简短的问题,希望有人能帮我解决。我找不到解决办法。

我想使用uniroot()来查找函数的零点,或者更准确地说,是从函数的导数得到的。如果我把函数写成function(x)..这没有问题,但如果我想通过变量将派生函数带到uniroot,就不会有问题。

代码语言:javascript
运行
复制
#This will not work:
deriv1 <- D(expression(x^2-2*x),"x")
uniroot(deriv1, c(0,5))

# This will work:
func <- function(x) 2 * x - 2
uniroot(func, c(0,5))

首先要感谢大家!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-22 09:14:07

您可以使用派生表达式作为主体来构造函数:

代码语言:javascript
运行
复制
deriv1 <- D(expression(x^2-2*x),"x")
f <- function(x){}
body(f) <- deriv1
uniroot(f, c(0,5))

你也可以用符号演算代替uniroot

代码语言:javascript
运行
复制
library(Ryacas)
fun <- yac_symbol("x^2-2*x")
dfun <- deriv(fun, "x")
solve(dfun, "x")
# {x==1} 

并提取解决方案:

代码语言:javascript
运行
复制
yac_solution <- solve(dfun, "x")
solution <- yac_symbol(paste0("x Where ", solution))
yac(solution)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69281268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档