Forum: Mikrocontroller und Digitale Elektronik Algorithmus gesucht: Einschwingvorgang


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Michael H. (overthere)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe eine Funktion die sieht wie folgt aus:
1
x=0
2
do
3
x=f1(x)
4
x=f2(x)
5
x=f3(x)
6
x=f4(x)
7
loop until eingeschwungen

f1 und f3 sind in etwa ein Sinus
f2 und f4 sind ein arc-sin mit Klimbim-vornedran.
Alle mit unterschiedlichen Koeffizenten dran

Und nein, x=0 ist nicht die Lösung, falls das jetzt einer meint.

Jetzt suche ich einen Algorythmus/Technik mit dem ich mir das blöde 
iterieren sparen kann. Ideen?
Am liebsten wäre mir eine Funktion xstabil=f(parametern,ohnex).

Vielen Dank schon mal fürs Brainstormen und die Ideen.
-Michael

von TrollHunter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Laplace-Transformation und Grenzwertsatz?

von Joe F. (easylife)


Bewertung
0 lesenswert
nicht lesenswert
Mathematisch läuft es auf eine Limes-Berechnung des Integrals von 
f4(f3(f2(f1(x)))) für x gegen unendlich heraus.
Um genaueres zu sagen müsste man natürlich wissen, wie f1, f2, f3 und f4 
genau aussehen.
1. Ansprechpartner könnte wolframalpha sein (Limes = "limit" im 
Englischen).

: Bearbeitet durch User
von Der Andere (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Soweit mich meine völlig eingerosteten Mathekenntnisse nicht völlig im 
Stich lassen:

Das ist eine Differenzengleichung:
x(n) = f4(f3(f2(f1(x(n-1)))))

TrollHunter schrieb:
> Laplace-Transformation und Grenzwertsatz?

Laplace ist für kontinuierliche Signale. Hier eher die Z-Transformation

Ob man da aber zu einer geschlossenen Lösung kommt weiss ich nicht, 
hängt wohl auch von den Funktionen ab.
Seit man Computer hat freut man sich doch eher, daß man das nicht mehr 
trocken durchrechnen muss, sondern schnell mal durchiterieren kann.

von Michael H. (overthere)


Bewertung
0 lesenswert
nicht lesenswert
Erstmal vielen Dank für die Antworten.
Wie gewünscht die Formeln.
F1:
F2:
F3:
F4:

Edit: Ich weis, dass es eine stabile Lösung gibt. Durchiteriert habe ich 
es schon.

: Bearbeitet durch User
von Daniel -. (root)


Bewertung
0 lesenswert
nicht lesenswert
x=f(x)
Schnittpunke der Funktion mit der Gerade y=x sind die Lösungen
Graphisch lösen?

von David P. (chavotronic)


Bewertung
0 lesenswert
nicht lesenswert
Ja , das sollte mit der Z-Transformation gehen.
Da gibt es doch auch ein Theorem was besagt dass k->unendlich das 
Äquivalente zu z=0 ist (Endwerttheorem)

von Michael H. (overthere)


Bewertung
0 lesenswert
nicht lesenswert
Wie mache ich das genau? Könnt ihr mir ein paar Hinweise geben?
Einfach alles in die Z-Domäne transformieren? (Und wie transformiere ich 
asin?)
Und wie gehts dann weiter?
(An das mit 0 setzten kann ich mich noch erinnern.)

von Yalu X. (yalu) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
Ist I_ind und I_Ind in deinen Formeln dasselbe?

Wenn ja: Meinst du mit "stabile Lösung" der Wert, gegen den I_ind bei
wiederholter Anwendung der Formeln F1 bis F4 konvergiert?

Wenn ja: Haben, nachdem das Verfahren konvergiert ist, das I_Ind in F2
und das I_Ind in F4 den gleichen Wert?

Wenn ja: Würde es dann nicht genügen, die Iteration nur mit den Formeln
F1 und F2 oder alternativ nur mit F3 und F4 durchzuführen?

Wenn ja: Dann müsste ja für beide Alternativen das gleiche Ergebnis
herauskommen. Das kann aber nur sein, wenn die Parameter L, C, k1, k2,
k3, k4, t_on und t_off voneinander abhängig sind, d.h. einer der 8
Parameter als Funktion der anderen 7 Parameter ausgedrückt werden kann.
Ist das der Fall?

Wenn ja: Dann musst du zur Bestimmung von I_Ind nur eines der
Gleichungssysteme (F1,F2) order (F3,F4) lösen.

Falls du irgendeine der Fragen mit nein beantwortet hast, habe ich dein
Problem noch nicht verstanden :)

Es wäre dann besser, du würdest den Hintergrund des Problems erläutern,
das ja wohl aus einer Schaltung mit einer Spule und einem Kondensator
entstammt, bei der irgendetwas ein- und ausgeschaltet wird. Damit wird
das Ganze wahrscheinlich sehr viel leichter verständlich.

von Michael H. (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das ganze Verfahren beschreibt einen resonanten Converter. Die 
entsprechende Waveform ist im Anhang aufgemalt.

Yalu X. schrieb:
> Ist I_ind und I_Ind in deinen Formeln dasselbe?
Jein. Iind ist der selbe Strom, aber ein anderer Wert.

Das Ergebnis von F4 ist das gleiche wie in F1 genutzt wird,

> Wenn ja: Meinst du mit "stabile Lösung" der Wert, gegen den I_ind bei
> wiederholter Anwendung der Formeln F1 bis F4 konvergiert?
Unter anderem, aber t1 und t3 würden mir aber schon reichen.


> Wenn ja: Haben, nachdem das Verfahren konvergiert ist, das I_Ind in F2
> und das I_Ind in F4 den gleichen Wert?
Nein, das haben sie nicht. Ich habe mal eine Grafik zur Illustration 
gemacht.

> Wenn ja: Würde es dann nicht genügen, die Iteration nur mit den Formeln
> F1 und F2 oder alternativ nur mit F3 und F4 durchzuführen?
Hatte ich als Sonderfall schon gemacht, das geht.



> Es wäre dann besser, du würdest den Hintergrund des Problems erläutern,
> das ja wohl aus einer Schaltung mit einer Spule und einem Kondensator
> entstammt, bei der irgendetwas ein- und ausgeschaltet wird. Damit wird
> das Ganze wahrscheinlich sehr viel leichter verständlich.
Topolgie im Anhang. Hoffe das hilft.

von vorticon (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Von welchen Gleichungen bist du ausgegangen, um auf diese 
Iterationsvorschrift zu kommen?
Formuliere das Problem einfach als (nichtlineares) Gleichungssystem und 
loese es numerisch mit Matlab bzw. Octave (bspw. mit lsqnonlin), das ist 
am einfachsten. Loesungsverfahren muss man nicht neu erfinden, wenn es 
sie schon gibt...

vorticon

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Michael H. schrieb:
> Das ganze Verfahren beschreibt einen resonanten Converter. Die
> entsprechende Waveform ist im Anhang aufgemalt.

Ja, damit kommt ein wenig Licht ins Dunkel.

> Jein. Iind ist der selbe Strom, aber ein anderer Wert.

Wenn ich das richtig verstehe, gibt es zwei Ströme, die hier relevant
sind, nämlich derjenige an der Knickstellen zwischen Phase IV und I und
derjenige zwischen Phase II und III in deinem Diagramm. Ich bezeichne
die Ströme im Folgenden mit I₄₁ und I₂₃.

Diese Bezeichnungen habe ich in deine Formeln übernommen und diese ein
wenig umgestellt, so dass keine arcsin-Funktionen mehr darin vorkommen:

Das ist ein Gleichungssystem mit den Unbekannten t₁, t₃, I₄₁ und I₂₃.
Die beiden Ströme kann man sofort eliminieren, so dass sich folgendes
Gleichungssystem ergibt:

Mit Hilfe der Additionstheoreme der Sinus-Funktion kann man die
Gleichungen so umformen und zusammenfassen, dass schließlich zwei
biquadratische Gleichungen in sin(t₁/√LC) und sin(t₃/√LC) übrig bleiben.
Durch Einsetzen der Lösungen in die erste und dritte Ursprungsgleichung
erhält man auch I₄₁ und I₂₃.

Dummerweise sind die Formeln für die Lösungen riesig, so dass sie nicht
als Ganzes sinnvoll darstellbar sind. Ich habe deswegen versucht, sie so
umzuschreiben, dass möglichst viel gemeinsame Teilausdrücke enstehen,
und für diese dann Variablen definiert:

1
  r   = sqrt(L*C)
2
  s   = cos(ton / r)
3
  t   = cos(toff / r)
4
  u   = k1 / k4
5
  v   = k3 / k2
6
  uv  = u * v
7
  gu  = 1 - u**2
8
  gv  = 1 - v**2
9
  guv = 1 - uv**2
10
  p   = u*s - v*t
11
  f   = p*t*s + v*s - u*t
12
  b1  = 2 * v * (s - uv*t)
13
  b3  = 2 * u * (t - uv*s)
14
  a1  = guv * (gv + (v*t)**2 - s**2) + f*b1
15
  a3  = guv * (gu + (u*s)**2 - t**2) - f*b3
16
  q   = (1 - t**2) * (1 - s**2)
17
  d   = sqrt(q * (p**2 + gu*gv))
18
  e   = guv**2 - b1 * b3
19
  g1  = sqrt((a1 + b1*d) / e)
20
  g3  = sqrt((a3 + b3*d) / e)
21
22
  t1  = r * asin(g1)
23
  t3  = r * asin(g3)
24
  I41 = g1 * k1
25
  I23 = g3 * k3

In den letzten vier Zeilen stehen die gesuchten Lösungen. Von den vier
Lösungen der biquadratischen Gleichung habe ich eine so ausgewählt, dass
sie für ein paar Testbeispiele mit der iterativen Lösung übereinstimmt.

Da ich aber nicht weiß, in welchen Wertebereich die Verhältnisse k₁/k₄
und k₃/k₂ liegen, kann es sein, dass diese Auswahl falsch ist und bei
dir die Ergebnisse deswegen nicht stimmen. Melde dich dann einfach noch
einmal mit ein paar typischen Zahlenbeispielen, dann werde ich das
entsprechend korrigieren.

Das Python-Programm im Anhang stellt für vorgegebene Parameter die
direkt berechneten Ergebnisse den iterativ berechneten gegenüber.

von JB (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Krasser Scheiss man! :D

von Michael H. (overthere)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Yalo,

erstmal vielen Dank für deinen Lösungsansatz.

Ich hatte so eine ähnliche Lösungsformel schon mal benötigt, und 
daraufhin folgende Lösungsformel gefunden:

Problem:

Lösungsformel für x:

Wie das Rechenaufwandstechnisch im vergleich zu deiner Lösung zu sehen 
ist, das weiß ich nicht.

Ich poste das jetzt mal, und versuche dann deinen Lösungsweg 
nachzuvollziehen.

*EDIT:* Also mir ist nicht klar, wie Du das durch die Additonstheoreme 
umformst. Könnstest Du mir deinen Rechenweg einscannen?

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Bewertung
0 lesenswert
nicht lesenswert
Michael H. schrieb:
> Also mir ist nicht klar, wie Du das durch die Additonstheoreme
> umformst.

Die dienen einfach nur dazu, Terme wie sin((t_on-t₁)/√LC) so zu
zerlegen, dass die störende Summe bzw. Differenz im Argument
verschwindet. Etwas anderes hast du ja in deinem Beispiel mit
sin(x)=a·sin(b-x) auch nicht gemacht.

von Michael H. (overthere)


Bewertung
0 lesenswert
nicht lesenswert
Ja, aber wie kommst Du auf eine biquadratische Gleichung? Könntest Du 
deinen Lösungsweg einscannen? Ich würde den gerne nachvollziehen. Das 
würde mir echt sehr viel helfen.

Ich habe das ganze ja über einen Tanges gelöst, das ist ja nicht so 
schön wie Du über eine Wurzel. Irgendwie fehlt noch etwas, dass es bei 
mir "klick" macht.

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Michael H. schrieb:
> Ja, aber wie kommst Du auf eine biquadratische Gleichung? Könntest Du
> deinen Lösungsweg einscannen?

Ich habe Teile von dem CAS-Programm Maxima rechnen lassen. Allerdings
konnte ich das Programm nicht dazu bewegen, die Lösung komplett
selbstständig zu finden, weswegen ich die ersten paar Umformungen der
Gleichungen teilweise selber vorgegeben habe. Den arbeitsintensivsten
Teil, nämlich die Lösung von zwei Gleichungen 4. Grades, hat Maxima dann
aber zum Glück doch noch hinbekommen :)

Im Anhang findest du das Skript für wxMaxima, das ich noch mit ein paar
Erläuterungen versehen habe. Anders als in meiner ursprünglichen
Rechnung habe ich schon frühzeitig ein paar Substitutionen gemacht, so
dass das Ganze nicht allzu unübersichtlich wird. Für den Fall, dass du
wxMaxima nicht auf deinem Rechner hast, habe ich auch den HTML-Output
angehängt, den du (hoffentlich) in deinem Web-Browser anschauen kannst.

> Ich habe das ganze ja über einen Tanges gelöst,

Der Trick, eine Gleichung mit sin(x) und cos(x) durch cos(x) zu
dividieren, so dass danach x nur noch als tan(x) auftritt, ist nur dann
möglich, wenn die Gleichung als Linearkombination von sin(x) und cos(x)
dargestellt werden kann. Das ist in dem Beispiel in deinem vorletzten
Beitrag der Fall, nicht aber im ursprünglichen Problem.

Stattdessen muss man, um nur mit einer Winkelfunktion von x kämpfen zu
müssen, cos(x) durch √(1-sin²(x) ersetzen, wodurch ein System aus zwei
Wurzelgleichungen entsteht, das durch Quadrieren in ein System aus zwei
quadratischen Gleichungen überführt werden kann. Die Elimination einer
der beiden Unbekannten führt aber zu einer Gleichung 4. Grades, was die
Lösung des Problems ziemlich aufwendig macht.

> das ist ja nicht so schön wie Du über eine Wurzel.

Meine Lösung ist auch nicht schöner, da am Schluss anstelle der arctan-
die arcsin-Funktion angewandt werden muss. Das Zeug mit den Wurzeln
kommt nur noch erschwerend hinzu. Wirklich schöner wäre eine Lösung, die
komplett auf Winkel- und deren Umkehrfunktionen verzichtet.

Vielleicht findet ja doch noch jemand einen einfacheren Lösungsweg (ich
denke da bspw. an unseren Mathematiker Johann, der oft gute Ideen hat,
wie man ein Problem von einer ganz anderen Seite anpacken kann ;-))

von Michael H. (overthere)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Yalu,
das hilft echt viel weiter. Es ist echt interessant, wieviele Tricks 
hier angewendet werden. Trigonemtrische Funktionen überraschen einem 
echt immer wieder...

Frage: Denkst Du/Ihr, dass es möglich ist, den übertragenen Strom 
vorzugeben (neg. Strom in der Spule ist an der Last auch positiv), und 
daraus die Schaltfrequenz zu berechnen?

Also so in der Art?

Dann könnte man statt einem Regler für den Converter eine Steuerung 
bauen. Wäre halt sehr viel schneller in der Ausregelung.

-Michael

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.