Vektorwertige Funktionen < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Hallo zusammen,
wie definiere ich denn Funktionen mit mehreren Variablen in Matlab?
Ich habe das Problem, dass ich allgemein Funktionen definieren will, um anschließend mit einer eigenen Version des Newtonverfahrens nach Nullstellen zu suchen.
Ich habe die Funktion der Art function y=f(x1,x2) definiert, nutze aber der Einfachheit halber in dem Newtonverfahren nur Vektoren, also z.B. x=[x1,x2], und dann fx=f(x).
Dabei kommt es aber scheinbar zu dem Fehler, dass er nach weiter Variablen sucht, obwohl die ja im x drinne stehen.
Wie umschiffe ich denn dieses Problem?
thx
lg Kai
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 09:16 Mo 03.05.2010 | Autor: | Frasier |
Hallo Kai,
hier mal zwei Beispiele, wie man das machen kann
f=@(x) x(1).^2+x(2).^2
g=@(x,y) x.^2+y.^2
x=[2 3]
f(x)
g(x(1),x(2))
lg
F.
|
|
|
|
|
Erstmal vielen Dank!
Das mit dem @ war mir auch noch ein bisschen geläufig, aber wie mache ich denn damit vektorwertige Funktionen?
Ich glaube ich mach mit der f-file allgemein bei dem @ was falsch.
Wie müsste ich das denn jetzt in die f-file schreiben?
Wie gehts denn richtig, so wie ich das versuche gehts schief...
function f = @(x) [3sin(x(1)-cos(x(2)), x(1)*x(2)];
lg Kai
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 11:51 Mo 03.05.2010 | Autor: | Frasier |
Hi,
das ist jetzt ein wilder Mix.
Ich schlage entweder die Sache die dem Function Handle (@) vor:
f=@(x) [x(1).^2+x(2).^2
2*x(1)
x(2).^2]
x=[2 3]
f(x)
oder eine m-File-Function
function ret=myfun(x)
ret=[x(1).^2+x(2).^2
2*x(1)
x(2).^2];
Die Funktion kannst du dann wie oben mit
x=[2 3]
myfun(x) aufrufen.
lg
F.
|
|
|
|
|
Vielen Dank!
Jetzt läuft alles so wie es soll!
lg Kai
|
|
|
|