Seite 1 von 1
(mathematische) Funktionen definieren und verknüpfen
Verfasst: Montag 16. April 2007, 15:46
von kommando_pimperlepim
Hallo.
In Python lassen sich Funktionen definieren, was ich recht schick finde.
Folgendes Funktioniert aber nicht:
Kennt jemand Möglichkeiten, Funktionen derart algebraisch zu verknüpfen?
Verfasst: Montag 16. April 2007, 15:49
von mq
Wie waer's, wenn du einfach 'ne neue Funktion definierst?
Code: Alles auswählen
def h(n):
return cos(n) + sin(n)
# oder kuerzer, als inline-Funktion:
h = lambda n: cos(n) + sin(n)
Re: (mathematische) Funktionen definieren und verknüpfen
Verfasst: Montag 16. April 2007, 15:51
von gerold
kommando_pimperlepim hat geschrieben:Kennt jemand Möglichkeiten, Funktionen derart algebraisch zu verknüpfen?
Hi!
Nicht so wirklich...
Code: Alles auswählen
>>> import numpy
>>> f = numpy.cos
>>> g = numpy.sin
>>> h = lambda val: f(val) + g(val)
>>> print h(0)
1.0
>>>
mfg
Gerold

Verfasst: Montag 16. April 2007, 16:05
von kommando_pimperlepim
Danke für eure Hilfe.
Dieses lambda hab ich als Anfänger noch nicht so durchschaut, aber wenn ich dieses Rezept verwende, gewöhne ich mich vielleicht langsam daran.
Verfasst: Montag 16. April 2007, 16:08
von BlackJack
Nur für den Fall das eigentlich Funktionskomposition gemeint war:
Code: Alles auswählen
from math import sin, cos
def compose(fun_a, fun_b):
def composed(*args, **kwargs):
return fun_a(fun_b(*args, **kwargs))
return composed
sin_cos = compose(sin, cos)
print sin_cos(0) # == sin(cos(0))
Edit: ``lambda`` ist nichts besonderes:
Code: Alles auswählen
def h(n):
return sin(n) + cos(n)
# äquivalent zu
h = lambda n: sin(n) + cos(n)
Insbesondere in diesem Fall würde ich ``def`` bevorzugen weil ``lamda`` eigentlich für kleine Funktionen gedacht ist, die man nicht extra an einen Namen binden will.