WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Vektorwertige variable Funktion mit variabler Eingangsgröß

 

Earl
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2013, 11:51     Titel: Vektorwertige variable Funktion mit variabler Eingangsgröß
  Antworten mit Zitat      
Hallo zusammen!
Vorweg: Ich bin ein Neuling im Umgang mit Matlab.

Ausgangslage:
Ich soll eine Funktion schreiben, dessen Aufgabe an dieser Stelle vielleicht noch keine Rolle spielt.
Eingangsparameter: unter anderem: Zeiger auf eine beliebige stetige Funktion f:  \mathbb R^n ->  \mathbb R^n und einen Startvektor x0 aus  \mathbb R^n. Wichtig dabei: n ist variabel.

x0 ist wie gesagt nur ein Startvektor, der später ständig verändert wird.

Das Problem:
innerhalb der zu Programmierenden Funktion muss f(x0) ständig ausgewertet werden und genau das bekomme ich nicht in den Griff. Ich kann ja leider nicht einfach schreiben f(x0(1,1), x0(2,1),..) weil die Dimension von x0 ja variabel ist.

Ich Bitte um Hilfe!

Gruß Earl
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 17.05.2013, 11:55     Titel:
  Antworten mit Zitat      
versteh ich nicht. was hast du denn bis jetzt programmiert und was klappt nicht so wie du gerne hättest?
Private Nachricht senden Benutzer-Profile anzeigen
 
Earl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2013, 12:01     Titel:
  Antworten mit Zitat      
es ist ganz simpel: ich möchte f(x0) auswerten. In Matlab kann man aber nicht ohne weiteres einen Vektor in eine Funktion einsetzen.

In dem Programm geht es um die Methode der sukzessiven Approximation um eine Nullstelle z von f zu berechnen. Ist aber unwichtig, mein Problem beschränkt sich ja nur auf die auswertung von f(x0), was innerhalb einer Schleife ständig gemacht werden muss.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 17.05.2013, 12:07     Titel:
  Antworten mit Zitat      
Earl hat Folgendes geschrieben:
In Matlab kann man aber nicht ohne weiteres einen Vektor in eine Funktion einsetzen.

kann man schon wenn mans richtrig programmiert hat. darum war meine frage was du programmiert hast und was damit nicht funktioniert.
Private Nachricht senden Benutzer-Profile anzeigen
 
Earl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2013, 12:17     Titel:
  Antworten mit Zitat      
Das man das irgendwie kann ist schon klar, und genau das will ich ja wissen Laughing Jetzt mal losgelöst von dem eigentlichen Programm was ich schreiben möchte: Eine Funtion "Beispiel" soll mit den Eingabeparametern f und x0 f(x0) berechnen und ausgeben. Z.B.:

Code:
% ich definiere vorher irgend ein f und x0

f=@(x1,x2)[x1^2+x2^2; x1-x2]
x0=[1;1]

function z = Beispeil(f,x0)
z=f(x0)
 


Wie stellt man das an?
Private Nachricht senden Benutzer-Profile anzeigen
 
Earl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2013, 12:23     Titel:
  Antworten mit Zitat      
Um das nochmal klar zu stellen: f soll nicht immer nur x1 und x2 als Argumente haben, sondern beliebig viele. Ich möchte auch andere Funtionen auswerten können und will das Programm nicht ständig umschreiben müssen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 17.05.2013, 12:28     Titel:
  Antworten mit Zitat      
dann musst du es auch so schreiben ^^
zb oben
Code:
f=@(x)[sum(x.^2); diff(x)] ;
x0=[1;1] ;
z=f(x0) ;

du musst dann deine operationen so gestallten das sie das machen was du willst unabhängig von der länge des vektors. vieleicht musst du dann f nicht als anonyme funktion schreiben sondern als mfile mit überprüfung der länge und so weiter. und funktion handles an funktionen zu übergeben is auch kein problem aber wie gesagt du must die funktionen schon so gestalten das sie mit den argumenten klarkommen die du ihnen gibst
Private Nachricht senden Benutzer-Profile anzeigen
 
Earl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2013, 12:38     Titel:
  Antworten mit Zitat      
ok das ist schon mal elegant gelöst! Genau sowas meinte ich. Aber kann man das ähnlich auch für folgende Funktion machen?

f=@(x1,x2)[x1^2-2*x2; x2]
Private Nachricht senden Benutzer-Profile anzeigen
 
Earl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2013, 12:41     Titel:
  Antworten mit Zitat      
oder müsste ich f dann wie du sagtest extra als m-file schreiben?
Private Nachricht senden Benutzer-Profile anzeigen
 
Earl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 17.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2013, 12:59     Titel:
  Antworten mit Zitat      
hat sich erledigt Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.