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

Sekante in Funktionsgraphen plotten

 

pinkyOhneBrain
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2017, 12:06     Titel: Sekante in Funktionsgraphen plotten
  Antworten mit Zitat      
Hallo zusammen, ich bin Neuling hier im Forum und absoluter Anfänger mit Matlab.
Ich habe zu Übungszwecken ein kleines Programm geschrieben, das eine Sekante in einen Funnktionsgraphen plotten soll, aber ich bekomme folgende Fehlermeldung:
Subscript indices must either be real positive integers or logicals.
Hier der Programmcode:
Code:

%Berechnet die Sekantensteigung von zwei Punkten auf einer Funktion
function [o,p] = sek(a,b)
intervall = -3:0.1:3;
plot(intervall,f(intervall))
hold on
o = (f(b) - f(a))/(b - a);
p = f(a) - o*a;
z = a:0.1:b;
g = o.*z+p;
plot(z,g(z))

end
function [y] = f(x)
y = x.^3 - 3.*x - 3;
end
 

Mir ist bewusst, dass noch keine Abfrage dafür drin ist, ob a größer ist als b, damit gegebenenfalls die Werte beim berechnen der Steigung vertauscht werden, ich will es erst einmal schlank halten und nach und nach erweitern, ich kann lediglich nicht nachvollziehen, warum dieser Fehler kommt. Vermutlich irgendwo im Syntax was verkehrt, aber ich habe leider noch nicht genug Durchblick. Ich bin für jede Hilfe dankbar.
Private Nachricht senden Benutzer-Profile anzeigen


SigiSorglos
Forum-Century

Forum-Century


Beiträge: 147
Anmeldedatum: 24.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2017, 15:45     Titel:
  Antworten mit Zitat      
Da ist nur ein kleiner Fehler drin:

In der Zeile

Code:


muss es heißen:

Code:


weil du sonst das z-te Element in g suchst. Aber z hat ja nicht nur ganze Zahlen sondern auch Kommazahlen. Deshalb der Fehler.
Private Nachricht senden Benutzer-Profile anzeigen
 
pinkyOhneBrain
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2017, 08:55     Titel:
  Antworten mit Zitat      
Super, danke! Ich habe das einfach wegen dem ersten plot so übernommen, aber das war ja eine, wie soll ich es nennen, ausgelagerte Funktion? Dann wird es wohl damit zusammenhängen, dass ich beim ersten plot (intervall,f(intervall) scripten musste. Aber g ist ja in meiner Funktion enthalten und deshalb wird es ohne die Klammern geschrieben. <-- So nehme ich das mal als Laienerklärung, kommt das in etwa hin? Auf jeden Fall noch mal ein dickes Dankeschön!
Private Nachricht senden Benutzer-Profile anzeigen
 
SigiSorglos
Forum-Century

Forum-Century


Beiträge: 147
Anmeldedatum: 24.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2017, 10:23     Titel:
  Antworten mit Zitat      
Bei g handelt es sich um keine externe Funktion sondern um einen Vektor. Wenn du in der untenstehenden Zeile das Semikolon weglässt, kannst du im Command-Window auch sehen, dass es sich einfach nur um ein Vektor handelt.

Code:
g = o.*z+p;


Und wie bereits gesagt ist es nicht möglich das 0.1-te Element eines Vektors zu addressieren. Das funktioniert logischerweise nur mit ganzen Zahlen an der Stelle.

Bei der Funktion f rufst du einfach nur die Funktion mit einem beliebigen Eingabewert (oder auch Eingabewerten) auf und lässt dir einmalig die Ausgabe dafür berechnen. Bei dieser handelt es sich dann auch wieder um ein Vektor. Die Schreibweise f(intervall) ist nur notwendig, da "intervall" der Eingabewert für die Funktion ist.

ich hoffe das ist dir jetzt klar Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
pinkyOhneBrain
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 12.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2017, 10:35     Titel:
  Antworten mit Zitat      
Ja, jetzt habe ich es verstanden, danke für die Erläuterung.
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 - 2024 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.