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

Selbst definierte Funktionen ploten

 

Helftmir
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 29.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.05.2016, 21:52     Titel: Selbst definierte Funktionen ploten
  Antworten mit Zitat      
Ich habe eine Funktion die über eine Summenformel definiert ist. So jetzt hab ich mir mein x mit x=sym('x') als variable definiert, damit ich mit einer for schleife meine funktion definieren kann. Also so:

Code:
x=sym('x')
L=[1380, 166200, 23470, 552400, 218997, 1349, 18375];
p=[0.0135, 0.002, 0.0635, 0.039, 0.012, 0.0023,0.0084];
c=norminv(0.001,0,1);
a=0;


for k=1:7
       
       a= a+(L(k)*normcdf(norminv(p(k),0,1)-c*sqrt(x)/sqrt(1-x)) -p(k));
end

rho=0:0.0001:1;
   
plot(rho,a)


 
wenn ich das ausführe kommt immer die fehlermeldung: 'Error using plot
A numeric or double convertible argument is expected'

Ich schätze es liegt daran, dass ich das x als Variable definiert habe. Kann mir vielleicht jemand helfen oder hat eine andere Idee wie man das ausführen kann.

Danke schon mal Smile

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.05.2016, 21:58     Titel:
  Antworten mit Zitat      
Hallo,

du vermischt numerisches und symbolisches Arbeiten.
Mich wundert, dass du überhaupt bis zum plot-Befehl kommst. Ich würde schon von normcdf eine Fehlermeldung erwarten, da mir nicht bekannt ist, dass das für symbolische Ausdrücke definiert wäre.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Helftmir
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 29.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.05.2016, 12:34     Titel:
  Antworten mit Zitat      
Danke für die antwort, dass habe ich auch schon befürchtet.. Hab aber echt keine ahnung wie ich diese funktion sonst ploten soll.. Sitz da jetzt echt schon paar stunden dran Sad

Hab auch schon versucht mit polyfit einfach jede menge punkte zu berechnen und die funktion danach dadurch zu legen.. Klappt irgendwie auch nicht :/
Hättest du vielleicht eine idee dazu?
Lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.05.2016, 13:54     Titel:
  Antworten mit Zitat      
Hallo,

wie wäre es, die Funktion numerisch für ca. 200 verschiedene x (mehr sieht man im Plot meist eh nicht) auszuwerten?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Helftmir
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 29.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.05.2016, 14:28     Titel:
  Antworten mit Zitat      
Hab ich gemacht! Aber diese funktion ist ja bei 1 nicht definiert (da sonst durch 0 dividiert werden würde).. Also müsste sich die funktion bei 1 anschmiegen.. Das tut sie aber nicht, wenn ich sie an vielen werten auswerte und dann zeichne..
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.05.2016, 15:39     Titel:
  Antworten mit Zitat      
Hallo,

ich würde erwarten, dass die Funktion da nach +/- unendlich divergiert.

Poste doch bitte deinen neuen Code.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Helftmir
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 29.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.05.2016, 16:33     Titel:
  Antworten mit Zitat      
ja genau, dass sollte sie denke ich

mein neuer code:
Code:
L=[1380, 166200, 23470, 552400, 218997, 1349, 18375];
p=[0.0135, 0.002, 0.0635, 0.039, 0.012, 0.0023,0.0084];
c=norminv(0.001,0,1);
a=0;
m=0;
b=0:0.001:1;

for x=0:0.001:1
    m=m+1;
    for k=1:7
        a= a+(L(k)*normcdf(norminv(p(k),0,1)-c*sqrt(x)/sqrt(1-x)) -p(k));
    end
    b(m)=a;
end

x=linspace(0,1,1001);
p=polyfit(x,b,2);
y1 = polyval(p,x);
plot(x,y1)


ich habe meinen Plot als datei angehängt, hier lässt sich eben leider nicht erkennen, dass der graph gegen unendlich divergiert..

Figure1.fig
 Beschreibung:

Download
 Dateiname:  Figure1.fig
 Dateigröße:  39.61 KB
 Heruntergeladen:  468 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.05.2016, 18:02     Titel:
  Antworten mit Zitat      
Hallo,

du musst a schon für jede Auswertung neu auf 0 setzen.

Tatsächlich konvergiert das gegen eine endliche Zahl, da normcdf(-inf) = 0.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Helftmir
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 29.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.05.2016, 19:34     Titel:
  Antworten mit Zitat      
hallo,

ach das stimmt natürlich, blöder fehler.. vielen dank!

ich hab wohl einen fehler beim abschreiben gemacht und jetzt das sqrt(1-x) außerhalb von normcdf geschrieben.. jetzt ist die funktion aber wirklich nicht bei 1 definiert!

wenn ich mir die y werte ausgeben lasse dann sieht man auch, dass bei x=1 der y wert = inf ist. Yeah Smile

Jedoch wenn ich den plot ausführe bekomme ich nur ein koordninatensystem indem aber gar kein graph eingezeichnet ist.. Sad an was könnte das denn jetzt wieder liegen?

Lg und vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.05.2016, 19:43     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
an was könnte das denn jetzt wieder liegen?

Um das sagen zu können, müsste ich deinen Code sehen.

Sind die Dimensionen der geplotteten Variablen wie erwartet? Enthalten sie vielleicht NaN?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Helftmir
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 29.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.05.2016, 20:33     Titel:
  Antworten mit Zitat      
ah ja, Problem gefunden..
vielen vielen Dank! 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 - 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.