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

Eigene Funktion definieren!!!

 

Medion
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 02.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2014, 14:54     Titel: Eigene Funktion definieren!!!
  Antworten mit Zitat      
Hallo zusammen,

komme bei folgenden Aufgaben einfach nicht weiter!

Aufgabe 1: Wie würden Sie die Funktion y=x^4-x^2+5x-1 auf möglichst einfache Weise in MATLAB definieren? Wie würden Sie dann zum Beispiel y(12,52) berechnen?

Aufgabe 2: Wie definieren Sie allgemein in MATLAB eine Polynomfunktion y=f(x) vierter Ordnung? Wie würden Sie dann zum Beispiel y(x0) für eine bestimmte Zahl x0 z.B. x0=3,37 berechnen?
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: 02.02.2014, 14:56     Titel:
  Antworten mit Zitat      
Zitat:
komme bei folgenden Aufgaben einfach nicht weiter!

was hast du denn schon versucht ?
so kompliziert klingt das ja nicht. schonmal function in der doc gesucht?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Medion
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 02.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2014, 15:02     Titel:
  Antworten mit Zitat      
Ja ich hab folgendes versucht (für Aufgabe 2)

x=[0:0.1:10];
function y=f(x);
y=x.^4+2*x.^3+3*x.^2+4*x.^1+5;
x(3.37)

Kommt immer error?!
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: 02.02.2014, 15:07     Titel:
  Antworten mit Zitat      
wenn fehler kommen solltest du die fehlermeldungen auch posten. die sind meinst nicht zufällig generiert sondern sagen dir was du fallsch machst ^^
1.es siht nicht so aus als währe deine function in einem extra function file. hast du dir die doc zu function durchgelesen?
alternativ kann man anonyme funktionen benutzen.
2
Code:
. x=[0:0.1:10];
x(3.37)

kann nicht funktionieren da ein index immer ein positiver natürlicher wert sein muss.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Medion
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 02.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2014, 15:18     Titel:
  Antworten mit Zitat      
x=[0:0.1:10];
function y=f(x);
y=x.^4+2*x.^3+3*x.^2+4*x.^1+5;
x(3.37)

??? Error: File: asd.m Line: 2 Column: 1
Function definitions are not permitted
in this context.

Könntest du mir vllt einfach kurz die Lösung sagen?

Ich schreib morgen eine Klausur und bräuchte die Lösung echt dringend...
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: 02.02.2014, 15:22     Titel:
  Antworten mit Zitat      
Medion hat Folgendes geschrieben:

??? Error: File: asd.m Line: 2 Column: 1
Function definitions are not permitted
in this context.

Könntest du mir vllt einfach kurz die Lösung sagen?

Ich schreib morgen eine Klausur und bräuchte die Lösung echt dringend...

morgen klausur und heute die grundlagen lernen ist recht knapp ^^
zur lösung des problems:

winkow hat Folgendes geschrieben:
1.es siht nicht so aus als währe deine function in einem extra function file. hast du dir die doc zu function durchgelesen?
alternativ kann man anonyme funktionen benutzen.

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Medion
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 02.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2014, 15:35     Titel:
  Antworten mit Zitat      
Ja den Funktion Befehl habe ich nicht in der Vorlesung gehabt...
Anfangs habe ich es probiert über den Befehl eval....

Also wie folgt:

x=[0:0.1:10];
y='x.^4+2*x.^3+3*x.^2+4*x+5';
z=eval(y);
plot(x,z)
z(3.37)

Nur dann kommt folgender Fehler:

Error in ==> asd at 5
z(3.37)

Der Graph wird ja gezeichnet nur eben möchte ich ja noch den y-Wert für x=3.37 bekommen...
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: 02.02.2014, 15:42     Titel:
  Antworten mit Zitat      
wenn du das so in der vorlesung gelernt hast.......
das ist sehr schlecht. eval sollte man nur im notfall benutzen. es ist nur sehr schlecht zu debuggen.
ich geb dir nicht die lösung aber fast
Code:
y=@(x) x.^2
y(3.37)

oder auch
Code:
y=@(x) polyval([1,0,0],x)

_________________

richtig Fragen
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: 02.02.2014, 22:01     Titel:
  Antworten mit Zitat      
Hallo Medion,

Zitat:
??? Error: File: asd.m Line: 2 Column: 1
Function definitions are not permitted in this context.

Ein M-File, welches nicht mit "function" beginnt, ist ein "Script". In solchen Scripten sind Definitionen von Funktionen nicht erlaubt. In anderen Function-M-Files aber schon. Also kannst Du aus dem File einfach eine Funktion machen:
Code:
function myTest  % Oder wie Dein M-File heißt
x = 0:0.1:10;  % Eckige Klammern sind überflüssig
f(x)
f(3.37)

function y = f(x);
y=x.^4+2*x.^3+3*x.^2+4*x.^1+5;

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Mayu

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2016, 16:24     Titel:
  Antworten mit Zitat      
Hey ich hatte das gleiche Problem.
Mir hat das weiter geholfen:
http://de.mathworks.com/help/matlab...../anonymous-functions.html

wenn ich die Funktion f(x) = x^2 definieren will dann geschieht das in Matlab so:

quadrat = @(x) x^2;

Das @ definiert dass der Datentyp function handle erstellt wird (So wird die Fkt gespeichert)
In der Klammer wird die Variable gespeichert.
Daraufhin wird die Funktion definiert.

wenn man nun von 2^2 rechnen will macht man

quadrat(2) und matlab liefert 4

Hoffe das hilft einigen weiter

Gruß Mayu
 
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.