DMUG-Archiv 2000
Re: AW: Antwort: Funktionen mit variabler Anzahl von Argumenten f[x__]
- From: mathemas <info@XXXXXXX.de>
- Subject: Re: AW: Antwort: Funktionen mit variabler Anzahl von Argumenten f[x__]
- Date: Mon, 18 Sep 2000 12:22:35 +0100
- To: Klamser@XXXXXXX.de (Klamser)
- Cc: dmug@XXXXXXX.ch
Hallo:
ich weiss nicht , ob es hilft (am Ende der Mail die folgenden Mathematica-Statements als Cell Expression)):
ich habe in meinem Buch von 95 (Mathematica. Beispiele, Probleme, Loesungen] mit der Definition einer beliebig langen Sequenz von Argumenten
folge[m_, x_] := Apply[Sequence, Table[x[i], {i, 1, m}]]
gearbeitet.
Um die Wirkung zu studieren:
Evaluiere zum Beispiel
folge[5, u]
Plus[folge[6, x]]
Allgemeine Definition einer Funktion mit beliebiger Anzahl Argumente
Funktion[f_, m_, x_] := f[folge[m, x]]
Defin ition einer Sequenz von gleich parametrisierten Argumenten
folge[3, u[a, b, #] &]
Gruss
Carsten
> Hallo, vielen Dank für den ersten Tip. Vielleicht habe ich ja missverständlich ausgedrück.... Ich will eine Funktion mit einer variablen Anzahl von Argumenten haben, bei der ich aus mehreren Schallpegeln den Summenschallpegel berchene kann. Aus dem Schallpegel muß man erst die Schallleistung oder dein Schalldruck berechnen: Wenn man die Definition für den Schallpegel L=n 10 Log[10,p/p0] nimmt, kann man diese Gleichung nach p auflösen =>
>
>p0 10^(L/(19 n)) Wenn man mehere L hat bildet man die Summe von p => psum=Sum[p0 10^(Li/(19 n)),{i,1,m}] Also hätte ich gerner eine Funktion mit einer variablen Anzahl von Li, die das für mich in einem Rutsch erledigt: p[Li___,p0_,n_]=????? Noch eleganter: L[Li___,p0_,n_]=L[p[Li,p0,n],p0,n] Das Problem ist für mich, wie sage ich MMA wie es die einzelnen L (eigentlich Li) umgehen soll. Rasmus hat in seiner dankensweten Antwort gezeit, wie man mit einem Plus Pattern im Argument umgeht. Lieber Rasmus: Wie definiere ich L, damit es mit P[Plus[a_, b__], p0_, n_] umgehen kann? Weiß jemnad weiter? Gruß, >Peter Klamser -----Ursprüngliche Nachricht-----
>Von: Klamser@XXXXXXX.de [mailto:Klamser@XXXXXXX.de]
>Gesendet: Freitag, 15. September 2000 09:49
>An: Klamser@XXXXXXX.DE
>Betreff: WG: Antwort: Funktionen mit variabler Anzahl von Argumenten f[x__]
>
>
>
>
>
>
>
>-----Ursprüngliche Nachricht-----
>Von: Rasmus Debitsch [mailto:debitsch@XXXXXXX.de]
>Gesendet: Freitag, 15. September 2000 08:25
>An: Klamser
>Betreff: Antwort: Funktionen mit variabler Anzahl von Argumenten f[x__]
>
>
>
>
>Hallo,
>
>
>
>so ganz klar ist mir nicht, was Sie wollen. Ich hab mal geraten und Ihr Notebook entsprechend erweitert.
>
>
>
>
>
>Mit freundlichen Grüßen
> size=2>
> Rasmus Debitsch
> HL-MT
> Carl Zeiss
> Carl Zeiss Strasse
> D-73447 Oberkochen
>
> Tel. ++49 (7364) 20-3966
> Fax. ++49 (7364) 20-2109
>
{
Cell[BoxData[
RowBox[{
RowBox[{"folge", "[",
RowBox[{"m_", ",", " ", "x_"}], "]"}], ":=",
RowBox[{"Apply", "[",
RowBox[{"Sequence", ",", " ",
RowBox[{"Table", "[",
RowBox[{
RowBox[{"x", "[", "i", "]"}], ",", " ",
RowBox[{"{",
RowBox[{"i", ",", " ", "1", ",", " ", "m"}], "}"}]}], "]"}]}],
"]"}]}]], "Input",
CellLabel->"In[1]:="],
Cell[BoxData[
RowBox[{"folge", "[",
RowBox[{"5", ",", "u"}], "]"}]], "Input",
CellLabel->"In[2]:="],
Cell[BoxData[
RowBox[{"Plus", "[",
RowBox[{"folge", "[",
RowBox[{"6", ",", "x"}], "]"}], "]"}]], "Input",
CellLabel->"In[10]:="],
Cell[BoxData[
RowBox[{
RowBox[{"Funktion", "[",
RowBox[{"f_", ",", " ", "m_", ",", " ", "x_"}], "]"}], ":=",
RowBox[{"f", "[",
RowBox[{"folge", "[",
RowBox[{"m", ",", "x"}], "]"}], "]"}]}]], "Input",
CellLabel->"In[7]:="],
Cell[BoxData[
RowBox[{"folge", "[",
RowBox[{"3", ",",
RowBox[{
RowBox[{"u", "[",
RowBox[{"a", ",", "b", ",", " ", "#"}], "]"}], "&"}]}],
"]"}]], "Input",
CellLabel->"In[11]:="]
}
Carsten Herrmann
Drachenbahn 20, ap. 1101
24159 Kiel
Tel 0431 32 888 10 oder 0431 37 40 448 oder 030 312 8557 oder 0177 3128557
Fax 0431 342 888 12 oder 0177 99 312 8557
email: carsten@XXXXXXX.de
- Verweise:
-
DMUG-Archiv, http://www.mathematica.ch/archiv.html