Hallo,
ich stehe gerade vor dem Problem, dass ich zwei Kennlinien (Geradenfunktion) zu einer gemeinsamen zusammenführen muss. Die beiden Kennlinien haben einen geringen x-y-Bereich(Mergebereich), wo diese mathematisch verknüpft werden soll. Ergebnis ist dann eine gesamte Kennlinie, wo der Übergang möglichst nicht zu erkennen ist.
nachfolgend meine Vorgehensweise:
- unterhalb des Mergebereichs wird die Geradengleichung von Kennlinie 1 genommen
- innerhalb des Mergebereichs muss über eine mathematische Formel der Übergang erfolgen
- oberhalb des Mergebereichs wird die Geradengleichung von Kennlinie 2 genommen.
Ich hoffe, dass mein Problem verständlich ist.
Meine Frage ist jetzt, welchen mathematischen Ansatz nehme ich zum mergen? Habt ihr hier eine Idee(möglichst abstrakt, nicht sprachspezifisch)?
Danke für eure Hilfe.
Gruss george
Mergen von zwei Kennlinien
Wenn du zwei lineare Funktionen hast, hast du auch die Steigung.
Du musst im Übergangsbereich eine Funktion finden, die tangential zu beiden Geraden ist (Kreis!?).
Weiter kann ich dir leider nicht helfen.
PS: je nach Steigung passt der Kreis allerdings nicht unbedingt in den Übergangsbereich.
Du musst im Übergangsbereich eine Funktion finden, die tangential zu beiden Geraden ist (Kreis!?).
Weiter kann ich dir leider nicht helfen.
PS: je nach Steigung passt der Kreis allerdings nicht unbedingt in den Übergangsbereich.
Man kann im Mergebereich einfach interpolieren, z.B. mit cos^2. Um die Funktionen f und g im Berech a und b zu mischen, kann man folgendes tun:george hat geschrieben:- unterhalb des Mergebereichs wird die Geradengleichung von Kennlinie 1 genommen
- innerhalb des Mergebereichs muss über eine mathematische Formel der Übergang erfolgen
- oberhalb des Mergebereichs wird die Geradengleichung von Kennlinie 2 genommen.
Code: Alles auswählen
>>> def merge(f, g, a, b):
from math import cos, pi
def merged(x):
if x < a: return f(x)
if x > b: return g(x)
w = cos((x-a)/(b-a)*pi/2)**2
return w * f(x) + (1 - w) * g(x)
return merged
Code: Alles auswählen
>>> def f(x): return 0
>>> def g(x): return 1
>>> h = merge(f, g, 0, 1)
>>> h(0.0)
0.0
>>> h(1.0)
1.0
>>> h(0.5)
0.49999999999999989
>>> h(0.25)
0.14644660940672627
>>> h(0.75)
0.85355339059327373
>>>