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

Nullstellen und Maximum berechnen

 

Satego
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 17.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2014, 18:13     Titel: Nullstellen und Maximum berechnen
  Antworten mit Zitat      
Hallo,

ich bin noch nicht lange mit Matlab vertraut. Jetzt stoße ich aber an meine Fähigkeitsgrenzen.

Ich will in Matlab ein Programm erstellen, das folgendes errechnet:

Ich habe eine Matrix t die n x 1 groß ist, in der meine Ausfallzeiten enthalten sind.

n ist variabel aber immer bekannt. (Hier mal angenommen als n=100)

t0 ist gegeben und immer gleich

Nun will ich die Formel im Anhang berechnen. Sie soll mir den Parameter b ausgeben. n und t0 sind eine bekannten Parameter. ti bzw tj sind bekannt aus meiner Matrix t. Kann mir jemand sagen wie ich das berechne?

Formel_1.jpg
 Beschreibung:

Download
 Dateiname:  Formel_1.jpg
 Dateigröße:  4.27 KB
 Heruntergeladen:  434 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.01.2014, 00:27     Titel:
  Antworten mit Zitat      
Hallo,

kann b kontinuierlich variiert werden oder nur bestimmte Werte annehmen?

Ich würde es mit fzero versuchen. Allerdings vermute ich, dass es da mehrere Nullstellen gibt, und mit fzero wirst du nur die dem Startwert nächstgelegene finden.

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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 17.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.01.2014, 09:15     Titel:
  Antworten mit Zitat      
Hallo,

aufgrund der anderen Parameter sollte für b etwas positives zwischen null und vier herauskommen.

Wie kann ich das mit fzero verwirklichen? Ich kenne fzero wie in der Hilfe beschrieben mit:

fun = @(x) x.^2-10; % function
x0 = [0 200]; % initial interval
x = fzero(fun,x0)

Nun kann ich meine Funktion nicht in eine Zeile schreiben, wie in der Hilfe beschrieben, da ich Summen in meiner Funktion enthalten habe. Diese Summen benötigen for-Schleifen.
Wie kann ich meine Gleichung dann mit fzero lösen lassen?
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: 18.01.2014, 23:14     Titel:
  Antworten mit Zitat      
Hallo Satego,

Schreibe eine Funktion:
Code:
function y = YourFunction(x)
% Dein Code kommt hier

Code:
x0 = [0 200]; % initial interval
x = fzero(@YourFunction,x0)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Satego
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 17.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2014, 11:39     Titel:
  Antworten mit Zitat      
ok das hat schon mal funktioniert. Leider aber nicht ganz so wie ich es gerne hätte.

Code:

clear all
close all
clc

x0 = [0.1 10]; % initial interval
bML = fzero(@fun,x0);


Code:

function y=fun(x)

b=1.0;
T=370000;
t0=10000;
n=100;
sortValue=1;


t=wblZufallszahlen(b,T,t0,n,sortValue);

t0ML=10000;

for i1=1:1:n
    A(1,i1)=t(i1,1)-t0ML;
end
for i2=1:1:n
    B(1,i2)=A(1,i2)^(x);
end
C=sum(B(:));

for i3=1:1:n
    D(1,i3)=((1-x)/(A(1,i3)))+n*x*((A(1,i3)^(x-1))/(C));
end
y=sum(D(:));
end


Jetzt will ich aber dass vom zweiten Code die Zeilen von b=1.0 bis t0ML=10000 nicht im zweiten Code stehen, sondern im ersten. Wenn ich das aber so programmiere, bekomme ich immer den Fehlercode:

Error using fzero (line 233)
FZERO cannot continue because user supplied function_handle ==> fun failed with the error below.

Undefined function or variable 'n'.

Error in Maximum_Likelihood_2 (line 16)
bML = fzero(@fun,x0);

Wo liegt mein Fehler?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.01.2014, 00:44     Titel:
  Antworten mit Zitat      
Hallo,

das Problem: jede Funktion hat einen eigenen Arbeitsbereich.
die Lösung:
http://www.mathworks.de/de/help/mat.....-functions.html#bsgprpq-8

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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 17.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2014, 12:30     Titel:
  Antworten mit Zitat      
Danke für die Antworten
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.