result = ZerosAndPoles.Analysis.evaluate(zp, p, den_min=0)
Function Analysis.evaluate evaluates the ZerosAndPoles transfer function at a given (complex) value of p and returns the value G(p)=N(p)/D(p). The optional argument den_min with default 0 is used to guard against a division by zero.
if |(D(p))| >= den_min then G(p) = N(p) / D(p); elseif D(p).re >= 0.0 then G(p) = N(p) / den_min else G(p) = -N(p) / den_min end if;
Complex j = Modelica_LinearSystems2.Math.Complex.j(); ZerosAndPoles p = Modelica_LinearSystems2.ZerosAndPoles.p(); Modelica_LinearSystems2.ZerosAndPoles zp=(p+1)/(p^2+p+1); Complex result; algorithm result := Modelica_LinearSystems2.ZerosAndPoles.Analysis.evaluate(zp, j+1); // result = 0.538462 - 0.307692j
Math.Polynomial.evaluateComplex
encapsulated function ZerosAndPolesEvaluate import Modelica.Utilities.Streams.print; import Modelica; import Modelica_LinearSystems2; import Modelica_LinearSystems2.ZerosAndPoles; import Modelica_LinearSystems2.ZerosAndPoles.Internal; import Modelica_LinearSystems2.Math.Complex; input ZerosAndPoles zp "ZerosAndPoles transfer function of a system"; input Complex p = Complex(0) "Complex value p where zp is evaluated"; input Real den_min(min = 0) = 0 "|denominator(p)| is limited by den_min"; output Complex y "= zp(p)"; end ZerosAndPolesEvaluate;
Date | Author | Comment |
---|---|---|
2010-05-31 | Marcus Baur, DLR-RM | Realization |