我想知道是否有办法实现像
这样的东西-->80923=myCoolFunction(p,56,7)
p=24
在Scilab中?当我输入时,这是当前的结果:
-->8761.7635 = tauxcompose(p, 4, 25)
Warning: obsolete use of '=' instead of '=='.
!
!--error 4
Undefined variable: p
感谢您的回答。
答案 0 :(得分:0)
您必须使用 fsolve
,如@https://help.scilab.org/docs/6.1.0/en_US/fsolve.html 所记录的
示例:
function r = myCoolFunction(p,a)
r = p .^2 .* exp(-a*p)
endfunction
p
是变量。 a
是一个额外的参数(如您的示例中的 a=56 等)。
现在我们搜索 p 使得例如 myCoolFunction(p,1) == 100
,假设至少有一个解决方案。我们构建
deff("out = gap(p,a,c)","out = myCoolFunction(p,a) - c")
初始猜测 p0:显示 myCoolFunction(p,1)
的图,看看它在 100 附近的位置
p0 = -3;
然后我们调用 fsolve
:
[p,v,status] = fsolve(p0, list(gap,1,100))
结果:
--> [p,v,status] = fsolve(p0, list(gap,1,100))
p =
-2.6534493
v =
0. means: the found solution p is exact (up to the default relative tolerance 1e-10)
status =
1. means: fsolve() has well converged to a solution
独立检查:
--> myCoolFunction(p,1)
ans =
100.
现在,什么是 p
获得 myCoolFunction(p, 2) == 1e4
?
p = fsolve(-4, list(gap, 2, 1e4))
myCoolFunction(p, 2)
结果和检查:
--> p = fsolve(-4, list(gap, 2, 1e4))
p =
-3.3856301
--> myCoolFunction(p, 2)
ans =
10000.000