Übertragungsfunktion diskretisieren -> Koeffizienten (symbolisch) gesucht

OP #5240816
Lesenswert?

Grüß euch

Hat jemand eine Tabelle oder ein Tool zur Hand, mit dem ohne große 
Rechnerei die symbolischen Koeffizienten einer diskretisierten 
Übertragungsfunktion herausbekommt?

Sprich s-Bereich ->

             0.001572 s^3 + 1.22 s^2 + 28.69 s + 1.872
  ---------------------------------------------------------------
  1.603e-07 s^4 + 0.0003833 s^3 + 0.07381 s^2 + 0.3465 s + 0.0104


nach z ->
        84.94 z^3 - 79.75 z^2 + 0.1227 z - 1.224e-19
  ---------------------------------------------------------
  z^4 - 0.9786 z^3 + 0.008116 z^2 + 5.065e-20 z + 8.743e-39



Aber halt nicht irgendein numerischer Wert, sondern das entsprechende 
Symbol dafür bei Diskretisierungs-Methode XYZ...

Gibts da was?
OP #5241112
Lesenswert?

Dergute W. schrieb:
> Moin,
>
> Suchst du das da?
>
> https://de.wikipedia.org/wiki/Bilineare_Transformation_(Signalverarbeitung)
>
> Gruss
> WK

Nein. Ich kenne die Methoden zum Diskretisieren und könnte sie 
theoretisch anwenden. Bei komplexeren Ausdrücken ist das aber recht 
unlustig. Ich bin auch mit Matlab und Co vertraut, aber von denen bekomm 
ich nur numetische Werte.

Mein (recht simples) mathematisches Verständnis lässt mich aber 
vermuten, dass es zw. s- und z-Bereich einen direkten Zusammenhang gebeb 
müsste...? Ohne das man extra einsetzen und ausmultiplizieren muss.
#5241386
Lesenswert?

Moin,

Vincent H. schrieb:
> Mein (recht simples) mathematisches Verständnis lässt mich aber
> vermuten, dass es zw. s- und z-Bereich einen direkten Zusammenhang gebeb
> müsste...? Ohne das man extra einsetzen und ausmultiplizieren muss.

Hmmm - ich weiss nicht was du da vorhast...

z = exp(s * T_abtast)

waere ein Zusammenhang zwischen s und z. Aber ohne "einsetzen" und 
"ausmultiplizieren" wirst du nicht so recht weiterkommen...

Gruss
WK
Gast #5241705
Lesenswert?

Vielleicht solltest du beschreiben wozu du das vorhast und was du dann 
mit diesen symbolischen Koeffizienten machst. Und ob es dann nicht 
sinnvoller wäre, Pol- und Nullstellen, statt dieser Koeffizienten zu 
überführen
Gast #5241711
Lesenswert?

Vincent H. schrieb:
> Mein (recht simples) mathematisches Verständnis lässt mich aber
> vermuten, dass es zw. s- und z-Bereich einen direkten Zusammenhang gebeb
> müsste...?

Gibt es nicht. Dein mathematisches Verständnis sollte dir sagen, dass 
alleine die Tatsache, dass in z-Bereich die Sache zyklisch mit der 
Abtastfrequenz wird, s aber nicht, dir da einen Strich durch die 
Rechnung macht.
OP #5241932
Lesenswert?

So, habs jetzt ausmultipliziert...

Geht man von folgender Form im Bildbereich aus:
b0 * s^4 + b1 * s^3 + b2 * s^2 + b3 * s + b4
--------------------------------------------
a0 * s^4 + a1 * s^3 + a2 * s^2 + a3 * s + a4

Dann ergeben sich beim Diskretisieren nach Tustin folgende Koeffizienten 
im Z-Bereich (T ^= Abtastzeit):
b0z = (b4*T^4 + 2*b3*T^3 + 4*b2*T^2 + 8*b1*T + 16*b0);
b1z = (4*b4*T^4 + 4*b3*T^3 - 16*b1*T - 64*b0);
b2z = (6*b4*T^4 - 8*b2*T^2 + 96*b0);
b3z = (4*b4*T^4 - 4*b3*T^3 + 16*b1*T - 64*b0);
b4z = (b4*T^4 - 2*b3*T^3 + 4*b2*T^2 - 8*b1*T + 16*b0);
a0z = (a4*T^4 + 2*a3*T^3 + 4*a2*T^2 + 8*a1*T + 16*a0);
a1z = (4*a4*T^4 + 4*a3*T^3 - 16*a1*T - 64*a0);
a2z = (6*a4*T^4 - 8*a2*T^2 + 96*a0);
a3z = (4*a4*T^4 - 4*a3*T^3 + 16*a1*T - 64*a0);
a4z = (a4*T^4 - 2*a3*T^3 + 4*a2*T^2 - 8*a1*T + 16*a0);


Wozu ich das gebraucht hab?
Ganz einfach. Ich finds ziemlich grauslich ein physikalisches Modell im 
Code zu haben, dass durch externe Tools mit irgendeiner "Magic"-Number 
gefüttert wird.

Statt sinnvolle Konstante ala
R1 = 10R
C1 = 0.1uF
T = 100us

irgendwo abgelegt zu haben, steht dann nur mehr
a0 = 0.0018241;


Im schlimmsten Fall kommt dann ein Kollege daher und meint ein 100us 
Timer frisst ja viel zu viel Rechenleistung. Wir stellen den Timer auf 
200us um... Und a0? Keine Ahnung was das macht. Oder vielleicht weiß ers 
doch, aber MATLAB und Python sind Fremdwörter, usw. usf.
Gast #5241937
Lesenswert?

Und was machst du jetzt, wenn dein Kollege ein System höherer Ordnung 
betrachten will?

Natürlich kannst du die Diskretisierung auch selbst programmieren. Aber 
dann doch lieber allgemeingültig und nicht auf bestimmte Systeme 
begrenzt? Wie das in python gemacht wird ist offen für jeden den es 
interessiert
OP #5241976
Lesenswert?

Dann hoff ich für erm, dass a
a) mit Bleistift und Papier
oder
b) mit Matlab oder Python
umgehn kann.


Die obige Lösung ist für alle System bis 4.Ordnung gültig. Wie das 
gemacht wird ist auch offen für jeden... Wers nicht schafft s zu 
substituieren, der soll bitte ein Mathematik-Buch der Unterstufe 
organisieren.
Gast #5242173
Lesenswert?

Ok, etwas spaet.
Hier ist eine Loesung in maxima.
http://maxima.sourceforge.net/
1
(%i505) Hs;
2
                           4       3       2
3
                       b0 s  + b1 s  + b2 s  + b3 s + b4
4
(%o505)                ---------------------------------
5
                           4       3       2
6
                       a0 s  + a1 s  + a2 s  + a3 s + a4
7
(%i506) sz;
8
                                   2 (z - 1)
9
(%o506)                            ---------
10
                                   (z + 1) T
11
(%i507) Hs, s=sz;
12
                                   2               3                4
13
        2 b3 (z - 1)   4 b2 (z - 1)    8 b1 (z - 1)    16 b0 (z - 1)
14
        ------------ + ------------- + ------------- + -------------- + b4
15
         (z + 1) T             2  2            3  3            4  4
16
                        (z + 1)  T      (z + 1)  T      (z + 1)  T
17
(%o507) ------------------------------------------------------------------
18
                                   2               3                4
19
        2 a3 (z - 1)   4 a2 (z - 1)    8 a1 (z - 1)    16 a0 (z - 1)
20
        ------------ + ------------- + ------------- + -------------- + a4
21
         (z + 1) T             2  2            3  3            4  4
22
                        (z + 1)  T      (z + 1)  T      (z + 1)  T
23
(%i508) ratsimp(%,z);
24
          2        4         2
25
(%o508) (z  (6 b4 T  - 8 b2 T  + 96 b0)
26
    3        4         3
27
 + z  (4 b4 T  + 4 b3 T  - 16 b1 T - 64 b0)
28
            4         3
29
 + z (4 b4 T  - 4 b3 T  + 16 b1 T - 64 b0)
30
    4      4         3         2                         4         3         2
31
 + z  (b4 T  + 2 b3 T  + 4 b2 T  + 8 b1 T + 16 b0) + b4 T  - 2 b3 T  + 4 b2 T
32
                     2        4         2
33
 - 8 b1 T + 16 b0)/(z  (6 a4 T  - 8 a2 T  + 96 a0)
34
    3        4         3
35
 + z  (4 a4 T  + 4 a3 T  - 16 a1 T - 64 a0)
36
            4         3
37
 + z (4 a4 T  - 4 a3 T  + 16 a1 T - 64 a0)
38
    4      4         3         2                         4         3         2
39
 + z  (a4 T  + 2 a3 T  + 4 a2 T  + 8 a1 T + 16 a0) + a4 T  - 2 a3 T  + 4 a2 T
40
 - 8 a1 T + 16 a0)
41
(%i509) string(%);
42
(%o509) (z^2*(6*b4*T^4-8*b2*T^2+96*b0)+z^3*(4*b4*T^4+4*b3*T^3-16*b1*T-64*b0)+z\
43
*(4*b4*T^4-4*b3*T^3+16*b1*T-64*b0)+z^4*(b4*T^4+2*b3*T^3+4*b2*T^2+8*b1*T+16*b0)\
44
+b4*T^4-2*b3*T^3+4*b2*T^2-8*b1*T+16*b0)/(z^2*(6*a4*T^4-8*a2*T^2+96*a0)+z^3*(4*\
45
a4*T^4+4*a3*T^3-16*a1*T-64*a0)+z*(4*a4*T^4-4*a3*T^3+16*a1*T-64*a0)+z^4*(a4*T^4\
46
+2*a3*T^3+4*a2*T^2+8*a1*T+16*a0)+a4*T^4-2*a3*T^3+4*a2*T^2-8*a1*T+16*a0)
47
(%i510)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren