2016-11-26 66 views
0

我正在求解多层板的色散方程。根据层数,我必须生成一个矩阵的处方,其中有两个变量 - 频率和速度。所以,第一步,我将生成一个矩阵,在第二步中,矩阵将被用于循环中的进一步计算,这将与这些变量相关。如何生成一个矩阵变量,然后将用于进一步计算

我大致会证明上的功能的问题:

def function(a,b): 
    y=a*f+b*c 
    return y 

(a和b将在输入上定义,但f和c将仍存变数)

function(a,b)将返回我的处方函数有两个变量 - fc

然后,我将使用函数的处方来计算其值f和c的值。

在我的情况下,我不得不使用这种方法,因为矩阵的形状将与当前图层的数量有关。我想,我可以使用符号工具箱,但我认为这不是解决问题的正确方法。

回答

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 
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'** 

我是否必须以某种方式修改数组?