我从StackOverflow中发现了如何求解两个变量的函数,其中一个变量是常量/已知的。你知道吗
这是代码的一部分:
def R(gg,a):
return a-r0*g0**(1/2)*D(gg)/gg**(1/2)
def G(r):
partial_func = functools.partial(R, a=r)
return fsolve(partial_func,10,xtol=10**-1)
它是有效的,因为前两张照片的值是一样的
f=([10,15])
print(G(10))
print(G(f[0]))
print(G(f))
但是在给出完整数组时,它有以下错误:
The array returned by a function changed size between calls
看起来您正在为
f
中包含的不同值寻找R
的根。你知道吗问题是
partial_func
有一个值作为起始估计值,并希望返回一个与a
长度相同的数组(在您的例子中是2个值)。你知道吗换句话说,你的问题没有单一的价值根源。例如,
f[0]=10
的根可能与f[1]=15
的根不同。在这种情况下,解决方案应该是两个值的数组。你知道吗要解决这个问题,需要为
x0
(起始估计)参数fsolve
提供一个数组。你知道吗因此,对于
a
中的每个值,gg
有一个初始值设定项,解是一个与f
长度相同的向量。你知道吗因此,在不知道函数中使用的所有参数的情况下阅读本文,我会说在
print(G(f))
的情况下,您提供了一个标量并返回一个数组,这是行不通的。你知道吗尝试用
a=f
调用函数并查看返回值。你知道吗文档状态:
fsolve: func: A function that takes at least one (possibly vector) argument, and returns a value of the same length
相关问题 更多 >
编程相关推荐