首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用字典和lambdify

如何使用字典和lambdify
EN

Stack Overflow用户
提问于 2021-11-22 15:45:52
回答 1查看 91关注 0票数 0

我写了带参数的交感函数。例如,

代码语言:javascript
复制
ampl, freq, phase, cte, t =sp.symbols('ampl freq phase cte t')
func=sp.Function("Func")(t)
func=ampl*sp.cos(freq*t+phase)+cte

为了绘制这个函数,我以这样的方式使用lambdify:

代码语言:javascript
复制
funclamb=sp.lambdify([(ampl, freq, phase, cte) ,t],func)
xline=np.linspace(0,10,11)
yValues=funclamb((5, 4, 1.5, 12) ,xline)
plt.plot(xline,yValues)

但是,我必须小心元组中的元素顺序:(ampl,freq,相位,cte)。我想知道在字典中是否有使用这些参数的意思:

代码语言:javascript
复制
myParamDict={ampl: 5, freq: 4, phase: 1.5, cte: 12}

我试过不同的东西,但不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-22 16:47:07

代码语言:javascript
复制
# Help on function _lambdifygenerated:
    
_lambdifygenerated(_Dummy_23, t)

# Created with lambdify. Signature:
        
func(arg_0, t)
        
# Expression:

ampl*cos(freq*t + phase) + cte

# Source code:

def _lambdifygenerated(_Dummy_23, t):
    [ampl, freq, phase, cte] = _Dummy_23
    return ampl*cos(freq*t + phase) + cte

您必须提供两个参数,其中一个参数将对这4个变量进行“解压”。

具有如下功能:

代码语言:javascript
复制
In [5]: def foo(a,b,c):
   ...:     print(a,b,c)
   ...:     return None
   ...: 

输入可以按位置,但也可以按名称或解压的切块。

代码语言:javascript
复制
In [6]: foo(1,2,3)
1 2 3

In [7]: foo(b=3,c=1,a=1)
1 3 1
In [8]: d={'b':1,'c':2,'a':3}

In [9]: foo(**d)
3 1 2

这意味着可以使用以下方法调用您的函数:

代码语言:javascript
复制
In [10]: funclamb(t=np.array([1,2,3]),_Dummy_23=[1,2,3,4])
Out[10]: array([4.28366219, 4.75390225, 3.08886974])

正如lambdify表达式所定义的那样,(ampl, freq, phase, cte)变量必须以列表/元组的形式提供。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70068510

复制
相关文章

相似问题

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