如何生成带变量的矩阵,然后将其用于进一步的计算

时间:2016-11-26 18:00:11

标签: python arrays matrix

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

我将粗略地演示一个函数的问题:

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

(a和b将在输入中定义,但f和c仍然是变量)

function(a,b)会返回一个包含两个变量的函数的处方 - fc

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

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

2 个答案:

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

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