operation on Matrices with the elements in function form

Viewed 57

I have a set of functions which are tended to be the elements of a matrix, and I have to do some + and * and / operation on them and also between each matrix element. I am using Numpy, Sympy to do this and here is the code written on Python 2.7.

import numpy as np
import math
import cmath
import matplotlib.pyplot as pl
from cmath import*
from sympy import*
# delta, deltz and some other numbers are simple float number I changed varibles in for loop to the first value to test this section of my whole cod

f1     = Matrix([[1, 0],[ 0, 1]]) #an empty matrix from sympy
delta  = 2.0*np.pi*1.6*((1.0/1530)-(1.0/(2.0*1550))) #this is a simple float number 
deltz  = (5*(10.0**6))/50 

def apdFunc(x):
    return  np.exp(-2*np.log(2)*((x-(5/2))/5)**2)

def modFunc(x):
    return (1+np.cos((2*np.pi/1)*x))

d1        = np.linspace(-20.0, 20.0, 5000)                  
apdFunc   = apdFunc(d1)
modFunc   = modFunc(d2)
Profile   = modFunc*apdFunc
sig       = (np.pi/1530)*fbgProfile + delta
kaa       = (np.pi/1530)*fbgProfile
j         = sqrt(-1)
gammab    = np.sqrt(kaa**2.0-sig**2.0)

#Matrix elements definition
f11 = np.cosh(gammab*deltz)-1j*(sig/gammab)*np.sinh(gammab*deltz)
f22 = np.cosh(gammab*deltz)+1j*(sig/gammab)*np.sinh(gammab*deltz)
f12 = -1j*(kaa/gammab)*np.sinh(gammab*deltz)
f21 = 1j*(kaa/gammab)*np.sinh(gammab*deltz)

f1  = f1*Matrix([[f11, f12],[ f21, f22]])

PO=f1[0,0]
NO=f1[1,0]

REF=abs((NO/PO)**2)
pl.plot(d3,REF)
pl.show()
print f1[0,0]
print PO
print REF


  1. The first problem is : gammab=np.sqrt(kaa**2.0-sig**2.0) that numpy can't accept complex number I mean negative value under sqrt and if I don't use Numpy I can't do Operation on them because kaa and sig are functions.
  2. Second : I cant print the matrix elements (after reversing kaa**2.0-sig**2.0 and solving first problem), thus I can't plot the REF=abs((NO/PO)**2) and an error apears telling AttributeError: 'ImmutableDenseNDimArray' object has no attribute 'as_coeff_Mul'

Any help appreciated and if you can introduce a reference to learn how to solve the problem.

0 Answers
Related