Mehrdim. Funktion auswerten < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Hallo,
ich habe folgendes Problem: Ich habe eine Funktion $F: [mm] \IR^{n} \rightarrow \IR^{n}$. [/mm] Die Funktion ist mit inline in eine auswertbare Funktion umgewandelt worden. Wie bekomme ich Matlab dazu, jetzt F(x) auszurechnen für einen gegebenen Vektor x?
Vielen Dank
|
|
|
|
Hallo blascowitz,
> Hallo,
>
> ich habe folgendes Problem: Ich habe eine Funktion [mm]F: \IR^{n} \rightarrow \IR^{n}[/mm].
> Die Funktion ist mit inline in eine auswertbare Funktion
> umgewandelt worden. Wie bekomme ich Matlab dazu, jetzt F(x)
> auszurechnen für einen gegebenen Vektor x?
Beispiel:
f=inline('2*x')
r=[1 2]
f(r)
Das liefert die Ausgabe:
ans =
2 4
>
> Vielen Dank
>
Gruss
MathePower
|
|
|
|
|
Hallo, nach langer Zeit mal wieder
die Frage beschäftigt mich immer noch(hatte zwischendurch Prüfungen)
Ich verdeutliche das Problem mal am Beispiel:
Angenommen ich habe die Funktion $f: [mm] \IR^2 \to \IR^2 \vektor{x \\y} \rightarrow \vektor{x+y\cdot x^2 \\ y^2+3\cdot x } [/mm] $. Dann kann ich ja die Funktion in Matlab eintippen als
$ [mm] f=inline('[x+y\cdot x^2, y^2+3\cdot [/mm] x]','x','y')$
Dann mit einem Startwert anfangen und erhalte als Ergebnis einen Vektor $erg$. Nun kann ich ja die Funktion erneut aufrufen mit $f(erg(1),erg(2))$ und so weiter.
Das Problem ist nun, das die Dimension variabel sein soll, das heißt, es wäre gut, wenn Matlab f(erg) ausgeben könnte, wobei dann erg(1) die erste Koordinate ist, erg(2) die zweite Koordinate und so weiter. Ist das in Matlab möglich?
Viele Grüße
Blascowitz
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:41 Sa 19.03.2011 | Autor: | felixf |
Moin,
> Ich verdeutliche das Problem mal am Beispiel:
>
> Angenommen ich habe die Funktion [mm]f: \IR^2 \to \IR^2 \vektor{x \\y} \rightarrow \vektor{x+y\cdot x^2 \\ y^2+3\cdot x } [/mm].
> Dann kann ich ja die Funktion in Matlab eintippen als
> [mm]f=inline('[x+y\cdot x^2, y^2+3\cdot x]','x','y')[/mm]
> Dann mit einem Startwert anfangen und erhalte als Ergebnis
> einen Vektor [mm]erg[/mm]. Nun kann ich ja die Funktion erneut
> aufrufen mit [mm]f(erg(1),erg(2))[/mm] und so weiter.
>
> Das Problem ist nun, das die Dimension variabel sein soll,
> das heißt, es wäre gut, wenn Matlab f(erg) ausgeben
> könnte, wobei dann erg(1) die erste Koordinate ist, erg(2)
> die zweite Koordinate und so weiter. Ist das in Matlab
> möglich?
ich denke, das ist so nicht moeglich. Allerdings kannst du dir mit einem "Trick" behelfen: du schreibst eine Funktion fevalv(f, v), die eine Funktion (als function_handle/inline/...) und einen Vektor v uebergeben bekommt.
Die Funktion macht dann ein switch nach numel(v) und ruft je nach Fall f(v(1), v(2), ..., v(n)) auf. Damit es auch fuer groessere n geht musst du viel tippen (bzw. dich in copy'n'paste ueben), aber zumindest kannst du dann nachher fevalv(f, v) schreiben. Das ist zwar laenger als f(v), aber dafuer "relativ" variabel.
LG Felix
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:20 So 17.04.2011 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|