Seite 1 von 1

Mergen von zwei Kennlinien

Verfasst: Mittwoch 1. Oktober 2008, 18:26
von george
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

Verfasst: Mittwoch 1. Oktober 2008, 22:23
von arghargh
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.

Verfasst: Donnerstag 2. Oktober 2008, 07:08
von Panke
Nimm ein Polynom vom Grade X und such dir entsprechend Kriterien um die Funktion zu finden. Zum Beispiel Werte und 1. / 3. Ableitung an den Grenzen des Mergebereiches etc.

Re: Mergen von zwei Kennlinien

Verfasst: Freitag 3. Oktober 2008, 11:37
von bords0
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.
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:

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
Beispiel zur Verwendung:

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
>>>