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

Anfänger: Eingabe Funktion; Integrieren

 

Stephanwiw

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.09.2011, 14:57     Titel: Anfänger: Eingabe Funktion; Integrieren
  Antworten mit Zitat      
Hallo, an dieser Stelle bereits vielen Dank fürs Lesen Smile
Als Anfänger in Matlab soll ich ein Integral einer Funktion bilden (diese findet sich im Anhang als jpg).
Die Funktion setzt sich aus einer Dichtefunktion einer Weibullverteilung und einer Weibullverteilung zusammen. Zwei Variablen t (Einsatzzeit) und s (Laufleistung) und mehere Parameter sind in der Funktion. Nun soll die Funktion integiert nach s werden und zwar für 0 bis unendlich.

Leider kann ich die Funktion schon nicht richtig eingeben und erhalte immer eine Fehlermeldung.

Die Parameter bk, bl, Tk und Tl sind gegeben, ändern sich jedoch von Fall zu Fall jedoch.

Könnte mir jemand die Eingabe der Funktion, der Variablen und Parameter erklären, bzw. angeben? Wie kann ich nach ds integieren für 0 bis unendlich?

Eine iterative Lösung ist kein Problem! Die Darstellung in einem einfachen Diagramm wo man die Werte ablesen kann reicht mir völlig aus!

Wofür dieser Aufwand: Ich möchte eine zeitabhängige Lebensdauerprognose berechnen, welcher auf einer km-abhängigen Lebensdauerprognose basiert. Diese wurde mittels Eckel-Verfahren berechnet. Darüber habe ich eine Weibullverteilung gefittet und mittels des Laufleistungsprofils (t) soll die km-abhängige LP umgewandelt werden.

Erneut vielen Dank fürs Lesen Smile Ich freue mich auf eine Antwort!

Funktion.jpg
 Beschreibung:

Download
 Dateiname:  Funktion.jpg
 Dateigröße:  6.77 KB
 Heruntergeladen:  654 mal


Harald
Forum-Meister

Forum-Meister


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

was hast du bis jetzt genau versucht (Code)? Soll numerisch oder symbolisch integriert werden?

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.09.2011, 10:19     Titel:
  Antworten mit Zitat      
Hallo,

bisher habe ich das probiert händisch zu integrieren, leider übersteigt das meine Kenntnisse. In Matlab selbst kenne ich nur Toolboxen wie bspw. Curve Fitting benutzt, welche wenig Kenntnisse über Matlab selbst benötigen Wink

Ich hatte probiert die Funktion, welche zu integrieren ist, wie hier beschrieben einzugeben und folgende Fehlermeldung erhalten:
Code:

Parameter:
bk=1.28
Tk=433.1
bl=2.427
Tl=23.31

Variablen (ich weiß nicht, wie ich anders Variablen definieren kann?!?)
s = [0;inf]
t = [0;inf]

Vielleicht habe ich die Funktion auch falsch eingegeben ?!?
>> y=(bk/(Tk^bk))*(s^(bk-1))*exp(-((s/Tk)^bk)-((s/(t*Tl))^bl))
??? Error using ==> mpower
Matrix must be square.
 

Wie genau die Funktion einzugeben ist, bzw. gelöst werden kann weiß ich nicht besser. Ob numerisch oder symbolisch integriert wird ist mir nicht so wichtig. Später sollen die hier verwendeten Weibull-Funktionen durch Log-NV ersetzt werden Very Happy

Vielen Dank für die Antwort!

_Peter_: Bitte Codeumgebung verwenden. Danke.
 
Harald
Forum-Meister

Forum-Meister


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

eine Fehlermeldung von mpower deutet darauf hin, dass ein Fehler mit der Operation ^vorliegt. Wahrscheinlich wolltest du komponentenweise exponenzieren, also:

y=(bk/(Tk^bk))*(s.^(bk-1))*exp(-((s/Tk).^bk)-((s./(t*Tl)).^bl))

Dasselbe trifft bei * und / zu: durch .* bzw. ./ ersetzen.
Befehle zum Integrieren: z. B.

Code:


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.09.2011, 17:47     Titel:
  Antworten mit Zitat      
Hallo, vielen Dank für die Hilfe.
Leider hast du es mit einem richtigen Anfänger zu tun Smile

folgendes habe ich probiert:
Code:
%
>> y=(bk/(Tk.^bk))*(s.^(bk-1))*exp(-((s/Tk).^bk)-((s/(t*Tl)).^bl))
Warning: Rank deficient, rank = 0,  tol =   1.#INFe+000.
??? Error using ==> minus
Matrix dimensions must agree.

Darauf habe ich die Variablen abgeändert:
Code:
%
>> t = [0.01;1.0e+018]
>> s = [0.01;1.0e+018]
//mit folgender Fehlermeldung:
>> y=(bk/(Tk.^bk))*(s.^(bk-1))*exp(-((s/Tk).^bk)-((s/(t*Tl)).^bl))
??? Error using ==> minus
Matrix dimensions must agree.


Ich wäre euch zu Dank verpflichtet, wenn mir jemand die Antwort liefern könnte! Vielleicht habe ich auch die Funktion (siehe Abbildung ersten Post) falsch abgeschrieben, aber ich würde mich freuen, wenn mir jemand helfen könnte, wie ich die Variablen deklarieren kann. Die Funktion eingeben kann und am Ende das alles Integrieren könnte.

Im Netz findet man einige Übungskapitel, diese sind vom Aufbau jedoch meist nicht zielführend, wenn man nur eine definierte Aufgabe hat Smile Aber über einige gute Lit.-Vorschläge würde ich mich auch freuen!
DANKE!
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.09.2011, 20:24     Titel:
  Antworten mit Zitat      
Hallo,

du solltest dir dann schon die Mühe machen, den Befehl stückweise zu zerlegen um zu sehen, woher die Fehlermeldung kommt. In dem Fall: du hast den Befehl falsch abgetippt und einen Punkt vergessen ( / statt ./ ).

Zitat:
wenn man nur eine definierte Aufgabe hat

Ich denke, dass es nicht zielführend ist, sich von "definierter Aufgabe" zu "definierter Aufgabe" zu hangeln. Wesentlich wichtiger ist es, wirklich ein konzeptionelles Verständnis für die Software zu entwickeln.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.09.2011, 13:21     Titel:
  Antworten mit Zitat      
Danke Harald für die Antwort! Du hast recht, die Software zu erlernen wäre praktikabler.

Allerdings nutze ich für meine Arbeit bereits mehrere Standardsoftware, wie QS-Stat, Weibull++, XCel, etc. Diese Software reicht in 99,9% aller Fälle aus. So toll Matlab auch ist, zur Zeit fehlen mir einfach die Ressourcen um mich hier einzuarbeiten. In Zunkuft werde ich mich in diesem Bereich einarbeiten müssen, da wir Wege abseits der Standardsoftware einschlagen müssen.

Daher würde ich mich freuen, wenn mir jemand abseits guter und ehrlich gemeinter Ratschläge eine Lösung anbieten könnte, die funktioniert.

Bzgl. der Punkte vor Operatoren: Ich habe überall einen Punkt (welche Bedeutung hat der eigentlich?) eingefügt, aber das ist nicht Zielführend.

Ich werde probieren die Formel zu zerlegen und dann gucken wo der Fehler liegt...
Falls jemand vorher eine Lösung hat Smile Gerne her damit Smile

Danke!
 
stephanwiw

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.09.2011, 13:34     Titel:
  Antworten mit Zitat      
Hi, Hinweis angewendet, habe die Formel auch entsprechend angepasst und aufgesplittet:

Code:

bk=1.28
bl=2.427
Tk=433.1
Tl=23.31
s = [0;inf]
t = [0;inf]
y=(bk/(Tk.^bk))*(s.^(bk-1))*exp(-((s/Tk).^bk)-((s./(t*Tl)).^bl))
y1=(bk/(Tk.^bk))
y2=(s.^(bk-1))
y3=exp(-((s/Tk).^bk)-((s./(t*Tl)).^bl))
y=y1*y2*y3
??? Error using ==> mtimes
Inner matrix dimensions must agree.
 

Mit der Variation:
Code:

y=y1*y2.*y3
 

kommt dann etwas vernüpftiges raus:
[/code]>> y=y1*y2.*y3

y =

0
NaN
Code:

Wieso muss da ein Punkt hin?!?
Ich probiere ich es mal mit dem Intergrieren :) Vielen Dank! Aber wie gesagt, gerne noch Tips, wie ich das Integrieren kann ;)
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.09.2011, 17:30     Titel:
  Antworten mit Zitat      
Hallo,

was die Punkte angeht: immer, wenn Multiplikation, Division oder Exponentiation komponentenweise erfolgen sollen, ist der Punkt wichtig, d.h. .* , ./ , .^

Eine Funktion, die integriert, ist (wie bereits gesagt) QUAD.

Weitere relevante Funktionen sind in der Hilfe zu QUAD ganz unten zu finden. Da eine Grenze bei unendlich liegt, dürfte auch QUADGK interessant sein.

Was "Standardsoftware" ist, mag im Auge des Betrachters liegen. Wenn ich jedoch für jede Kleinigkeit ein anderes Tool brauche, würde ich mir doch lieber etwas vielseitigeres aussuchen. Viele Leute betrachten hier MATLAB als eine gute Wahl.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.09.2011, 09:28     Titel:
  Antworten mit Zitat      
Hallo Harald Smile
Als Standardsoftware verstehe ich solche Software, die fertige, spezialisierte Lösungen bereitstellt und meist nicht erweiterbar sind. Matlab ist das Gegenteil (so verstehe ich das): offen, aber wenig spezialisiert!

Zum Thema:
- Das mit dem Punkt habe ich verstanden Wink Danke
- Bzgl. Integration hilft mir die Hilfe nicht weiter:
Code:
function y = myfun(x)
y = 1./(x.^3-2*x-5);

Then pass @myfun, a function handle to myfun, to quad, along with the limits of integration, 0 to 2:
Q = quad(@myfun,0,2)
Q =
   -0.4605
Alternatively, you can pass the integrand to quad as an anonymous function handle F:
F = @(x)1./(x.^3-2*x-5);
Q = quad(F,0,2);


Ich verstehe nicht die Funktion/Sinn von "myfun".
Ausserdem habe ich zwei Variablen, möchte aber nur nach einer Integrieren. Das Ergebniss der Integration würde ich gerne mit Variable t bspw. in einem Diagramm anzeigen lassen.

Bzgl. Matlab ist ein wirklich tolles Tool! Es kann fast alles! Darin liegt aber auch das Problem! Während meine Standardsoftware einfach liefert was ich brauche und leicht zu bedienen ist, muss bei Matlab alles Manuell erfolgen. Bei Zeiten werde ich mich mit Matlab vertieft beschäftigen, zur Zeit fehlt mir die Zeit! Ich denke, wir können uns beide darauf einigen, dass man Matlab nicht an einem Tag lernen kann Wink Vor allem, wenn ich es vom Grund auf lernen werden, fange ich nicht damit an, wie ich eine Funktion mit zwei Variablen Integriere und anzeigen lasse Wink Mir fehlt im Moment einfach die Zeit! Dennoch würde ich gerne diese Funktion integrieren können, damit ich das Ergebniss mit einem anderen Verfahren vergleichen kann.

Vielen Dank Smile
 
Harald
Forum-Meister

Forum-Meister


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

mein Ziel ist es hier normalerweise eher, auf eine Lösung hinzuführen als sie zu präsentieren.

QUAD integriert eine Funktion. Dazu muss es aber wissen, welche Funktion es integrieren soll. Man braucht also eine Funktion als Eingabeparameter für eine Funktion. Die Art, wie MATLAB dieses Problem abdeckt, ist über Function Handles.

Einfaches Beispiel:
\int_0^\pi sin(x) dx
Code:


In dem Fall ist die Funktion etwas komplizierter, aber folgender Code läuft zumindest:
Code:
bk=1.28;
bl=2.427;
Tk=433.1;
Tl=23.31;

y= @(s,t) (bk/(Tk.^bk)).*(s.^(bk-1)).*exp(-((s/Tk).^bk)-((s./(t*Tl)).^bl));
t = 0:0.1:100;
I = zeros(size(t));
for k=1:length(t)
    I(k) = quadgk(@(s) y(s, t(k)), 0, inf);
end
plot(t, I)


Wenn die Formel richtig umgesetzt wurde, sollte auch das Ergebnis stimmen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.09.2011, 08:15     Titel:
  Antworten mit Zitat      
Danke Harald!

Ich kann deinen Meinung verstehen und stimme grundsätzlich mit dir überein! Ich habe auch eine Matlab Schulung beantragt... Mal gucken, ob sie genehmigt wird!

Ich bleibe am Ball!
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.09.2011, 08:49     Titel:
  Antworten mit Zitat      
Hallo,

eine Schulung dürfte meiner Ansicht nach in der Tat der beste und schnellste Weg sein, sich in MATLAB einzuarbeiten. Allerdings bin ich da vielleicht nicht ganz neutral Wink

Grüße,
Harald
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.