Page MenuHomec4science

heaviside_manipulation.py
No OneTemporary

File Metadata

Created
Wed, May 1, 18:27

heaviside_manipulation.py

# Copyright (C) 2018 by the RROMPy authors
#
# This file is part of RROMPy.
#
# RROMPy is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# RROMPy is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with RROMPy. If not, see <http://www.gnu.org/licenses/>.
#
import numpy as np
from rrompy.utilities.base.types import Np1D, Np2D, List, Tuple
__all__ = ['heavisideUniformShape']
def heavisideUniformShape(poles:List[Np1D], residues:List[Np2D]) \
-> Tuple[List[Np1D], List[Np2D]]:
"""Add fictitious poles at inf to make rational functions of same size."""
NEff = max([len(pls) for pls in poles])
for j in range(len(poles)):
dN = NEff - len(poles[j])
if dN > 0:
residues[j] = np.vstack((residues[j][: len(poles[j])],
np.zeros((dN, residues[j].shape[1])),
residues[j][len(poles[j]) :]))
poles[j] = np.append(poles[j], [np.inf] * dN)
cEff = max([len(cfs) for cfs in residues])
for j in range(len(residues)):
dc = cEff - len(residues[j])
if dc > 0:
residues[j] = np.vstack((residues[j],
np.zeros((dc, residues[j].shape[1]))))
return poles, residues

Event Timeline