我正在解决多层板的色散方程。根据层数,我必须生成一个矩阵的处方,其中有两个变量 - 频率和速度。因此,在第一步中,我将生成一个矩阵,在第二步中,矩阵将用于循环中的进一步计算,这将与这些变量相关。
我将粗略地演示一个函数的问题:
def function(a,b):
y=a*f+b*c
return y
(a和b将在输入中定义,但f和c仍然是变量)
function(a,b)
会返回一个包含两个变量的函数的处方 - f
和c
。
然后,我将使用函数的处方来计算不同f和c值的值。
在我的情况下,我必须使用这种方法,因为矩阵的形状将与当前层的数量相关。我想,我可以使用符号工具箱,但我认为这不是解决问题的正确方法。
答案 0 :(得分:0)
据我所知,你需要一个工厂 - 一个返回另一个功能的函数:
def prescription_factory(a,b):
return lambda f,c: a*f+b*c
# Create a function:
prescription = prescription_factory(10,20)
# Use the new function
prescription(1,2)
# 50
答案 1 :(得分:0)
我做了以下代码:
import numpy as np
import cmath as cmh
import pylab as pl
import matplotlib.pyplot as plt
import time
import sympy as sp
x = sp.Symbol('x')
def function2(a,b,x):
G=np.zeros([1,1],dtype=np.ndenumerate)
G[0,0]=a*x+b
return G
K=function2(1,2,x)
g=K.evalf(subs={x:3})
print(g)
但我获得了以下错误
File "C:\WinPython-64bit-3.5.1.3\python-3.5.1.amd64\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 841, in runfile
execfile(filename, namespace)
File "C:\WinPython-64bit-3.5.1.3\python-3.5.1.amd64\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 103, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/MS/Desktop/symbol.py", line 40, in <module>
g=K.evalf(subs={x:3})
**AttributeError: 'numpy.ndarray' object has no attribute 'evalf'**
我是否必须以某种方式修改数组?