使用包 Roots 及其函数 find_zero ,我正在尝试解决一个函数的单变量rootfinding问题,该函数需要多个参数。当我是Julia入门者时,我检查了文档并在Internet上进行了搜索,但无法真正弄清楚。
说,例如在x中找到零的函数是: f(x)= exp(x)-x ^ y 。
如何将y参数传递给find_zero函数?唯一的解决方案是将参数定义为全局(出于效率原因我想避免这种情况)?
提前谢谢!
答案 0 :(得分:3)
对于要解决函数参数子集的所有优化问题(以及许多编程语言),此问题的解决方案通常是相同的:请使用anonymous functions。例如:
using Roots
f1(x,y) = exp(x) - (x^y)
f1a = (x -> f1(x, 2.0))
find_zero(f1a, 0.0)
,我们使用匿名函数f1a
将y
的值固定在2.0
处。
请注意,Julia背后的(AFAIK)实际上是使用全局变量来构建匿名函数,但是如果您对全局变量的唯一关注是效率,那么这就不成问题了,因为Julia的匿名函数经过精心设计以使其速度一样快作为具体功能。核心开发人员致力于这种范例,以至于您会注意到许多核心功能的主要方法是围绕创建许多快速,临时,匿名功能而构建的,例如findall
,findfirst
等