将一个2Variable函数仅解为其中一个变量在数组上不起作用

2024-09-27 07:34:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我从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


Tags: 函数代码returndefstackoverflowpartialfuncprint
2条回答

看起来您正在为f中包含的不同值寻找R的根。你知道吗

问题是partial_func有一个值作为起始估计值,并希望返回一个与a长度相同的数组(在您的例子中是2个值)。你知道吗

换句话说,你的问题没有单一的价值根源。例如,f[0]=10的根可能与f[1]=15的根不同。在这种情况下,解决方案应该是两个值的数组。你知道吗

要解决这个问题,需要为x0(起始估计)参数fsolve提供一个数组。你知道吗

def G(r):
    partial_func = functools.partial(R, a=r)
    return fsolve(partial_func,[10,10],xtol=10**-1)

因此,对于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

相关问题 更多 >

    热门问题