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

Undefined function or variable x, Sekantenmethode

 

ichLiebeSommer
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 29.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2016, 22:43     Titel: Undefined function or variable x, Sekantenmethode
  Antworten mit Zitat      
Hallo Rolling Eyes

Crying or Very sad Crying or Very sad Crying or Very sad
bin Matlab- Neuling und sitze seit 3 stunden an dem Beispiel:

ich soll eine Sekantenmethode programmieren, um Nullstellen einer Funktion zu finden.

Hierzu meine Methode (SekantenMeth.m):

Code:
function [ x ] = SekantenMeth( phi, x0, x1 )
%Aufgabe17
%Sekantenmethode zum Auffinden von Nullstellen als
%Funktions-M-Datei.
%x(n-1) = xalt
%x(n+1) = xneu
%x(n) = x
%phi...Funktion deren Fixpunkt gesucht ist

errlim = 1.*10.^(-9);   %Fehlerschranke
x0 = x(0);
x1 = x(1);

 n=2;

   
    x(n+1) = x(n) - (((x(n)-x(n-1))*f(x(n)))/((f(x(n))-f(x(n-1)))));
    n = n + 1;
 if abs((x(n)-x(n-1))) < errlim
        return
    end
y = x(n);
end



und meine Funktion, bei der ich die Nullstellen suchen soll:
Code:
function [ y ] = sekantensinus( x )
%UNTITLED2 Summary of this function goes here
%   Detailed explanation goes here

sin(x) = x/2


end



wenn ich nun:

SekantenMeth(@sekantensinus, 1, 1)
eingebe kommt das...:



Undefined function or variable 'x'.





Bitte um einfache (!) Erklärung was ich falsch mache, wie gesagt, ich programmiere noch nicht lange mit Matlab...

Lg. Martin
edit winkow: bitte code umgebung benutzen
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: 29.03.2016, 23:11     Titel:
  Antworten mit Zitat      
die fehlermeldung ist recht eindeutig. er kennt die funktion x nicht.
Code:
x0 = x(0);
x1 = x(1);

an der stelle versuchst du die funktion x mit dem argument 0 aufzurufen. x ist aber nicht bekannt anscheinend.
Code:
ist übrigens auch keine gülrige matlab syntax. außer sin ist ein array das die matlab funktion sin überlagert ^^ und x ein positiver integer wert.
der code sollte noch so einige fehler aufwerfen. am besten du gehst schritt für schritt mit dem debugger durch und guckst dir das an. f ist zb bei der verwendung auch unbekannt. und in der 2. funktion wird y garnicht zugewisen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
ichLiebeSommer
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 29.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.03.2016, 10:03     Titel:
  Antworten mit Zitat      
Also müsste ich hier die Funktion y aufrufen (sekantensinus)?
Code:
%
y(0) = x0
y(1) = x1
 

bzw., wenn ich dann beim eigentlichen Sekanten-Verfahren die x(n+1) bzw x(n-1) und x(n) verwende, sollte ich das dann nicht gleich als:

y(0) = x (n-1)
y(1) = x (n+1)

anschreiben?



Wäre:
Code:
%
function [ y ] = sekantensinus( x )
%UNTITLED2 Summary of this function goes here
%   Detailed explanation goes here

y = sin(x) - x./2;


end

 


richtig Smile?

bzw. edit zu 1: wäre
phi (0) =x0;
phi (1) = x1;

richtig?
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: 30.03.2016, 10:36     Titel:
  Antworten mit Zitat      
entweder ist die syntax falsch oder die indizierung. eins von beiden.
ich kann das getting started oder matlab onramp empfehlen wenn du neu in matlab bist. das sollte 90% der fragen beantworten die man als anfänger hat.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
ichLiebeSommer
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 29.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.03.2016, 10:43     Titel:
  Antworten mit Zitat      
vielen Dank erstmal. Werde mir das zulegen!
inzwischen gibt mir Matlab keine direkten compiler-Fehlermeldungen mehr.

Wenn ich nun aber die Funktion aufrufe kommt ein neuer Fehler...
Subscript indices must either be real positive integers or
logicals.

Error in SekantenMeth (line 17)


Code:
%
function [ xstern ] = SekantenMeth(f , x0, x1 )
%Aufgabe17
%Sekantenmethode zum Auffinden von Nullstellen als
%Funktions-M-Datei.
%x(n-1) = xalt
%x(n+1) = xneu
%x(n) = x
%f...Funktion deren Fixpunkt gesucht ist

errlim = 1*10^(-9);   %Fehlerschranke

x(1) = x0;
x(2) = x1;

n=1;
   
Zeile 17  x(n+1) = x(n) - (((x(n)-x(n-1))*f(x(n)))/((f(x(n))-f(x(n-1)))));
    n = n + 1;
   
 if abs((x(n)-x(n-1))) >= errlim
       return
 end
   
xstern = x(n);
end
 


:/ würde mir viel bringen wenn ich zumindest die Sekantenmethode hätte, um anhand der dann die anderen zu verstehen...
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: 30.03.2016, 10:51     Titel:
  Antworten mit Zitat      
hallo
die fehlermeldung ist eindeutig. indizes müssen logisch oder positive integer werte sein.
x(n-1) ist das für n=1 nicht.
ich empfehle wirklich dringed das getting startet oder matlab onramp zu lesen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
ichLiebeSommer
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 29.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.03.2016, 11:58     Titel:
  Antworten mit Zitat      
Vielen Dank Winkow, werd das nochmal korrigieren und testen Arrow Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.03.2016, 13:20     Titel:
  Antworten mit Zitat      
Hallo ichLiebeSommer
Zitat:
Werde mir das zulegen!

Die "Getting Started" Kapitel sind in der Dokumentation Deiner lokalen Matlab-Installation zu finden. Zum Glück muss man sich das nicht erst kaufen.

Gruß, Jan
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.