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

Inverse der li(x)-Funktion

 

Tina88
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 23.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2012, 12:06     Titel: Inverse der li(x)-Funktion
  Antworten mit Zitat      
Hallo erstmal,
ich wurde jetzt leider mit der li-Funktion konfrontiert. Diese sieht ja wie folgt aus:

<br />
li(x)=\int_0^x \! \frac{1}{log(t)} \, dt
<br />

Ich habe eine Differentialgleichung gegeben, die als Lösung aber nur das hergibt:

<br />
li(\frac{eabf(x)}{c})=-\frac{ebx}{c}
<br />

<br />
a,b und c sind dabei Variablen, die ich schon kenne.

Ich hatte mir jetzt gedacht, dass ich mir eine Funktion schreibe, da es anscheinend keine richtige Umkehrfunktion gibt. Meine Idee sieht folgendermaßen aus:
Code:

function y=inverse_li(x,y0)

%sind jetzt nur ausgedachte Werte
a=1;
b=0.2;
c=1;
g=@(t) 1./log(t);
n=10;
epsilon=0.01;
Z=0:y0/n:y0;
W=g(Z);
tmp=trapz(Z,W);

if tmp+exp(1)*b*x/c<=epsilon
     y=tmp*c/exp(1)*b*a;
else
     y=inverse_li(x,y0+0.001);
end
end


Also ich gehe die obere Grenze durch und gucke, ob die Abweichung nicht zu groß ist und setze sie sonst in kleinen Schritten immer weiter rauf. Beim ersten Aufruf werde ich y0=0 wählen.

Oder gibt es da schon eine bessere Möglichkeit für? Den f(x)-wert brauche ich nämlich um weiter zu rechnen.
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: 21.07.2012, 17:45     Titel:
  Antworten mit Zitat      
Hallo,

wäre es nicht einfacher, die DGL direkt mit ode45 o.ä. numerisch zu lösen?

Wenn du so vorgehen möchtest wie bisher, würde ich FSOLVE empfehlen, um die Inverse zu finden.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 23.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2012, 18:53     Titel:
  Antworten mit Zitat      
Naja, da habe ich leider das Problem, dass die DGL keine Anfangsbedingung y0 hat.

In meinem Fall müsste ich die Funktion dann aber so definieren:
Code:


function y=findeWert(x)

g=@(s) Li(s)+e*b*x/c;
x0=1; %da Li(y) erst für y>1 definiert ist für Matlab
tmp=fsolve(g,x0); %damit ich die Integrationsgrenze bekomme

y=tmp*c/(a*b);

end
 


Ich kann das erst am Montag in der Uni wieder testen (da Octave Li(y) nicht kennt), aber könnte es so aussehen?
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: 21.07.2012, 20:33     Titel:
  Antworten mit Zitat      
Hallo,

d.h. du suchst die allgemeine Lösung? Dann wird dir aber doch die numerische Inverse von Li auch nicht weiterhelfen?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 23.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2012, 09:44     Titel:
  Antworten mit Zitat      
Hallo Harald.

Nein, ich suche nicht die allgemeine Lösung. Ich suche eigentlich nur den Wert f(x), da der in einer weiteren Formel gebraucht wird.
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: 22.07.2012, 10:49     Titel:
  Antworten mit Zitat      
Hallo,

blöde Frage: wie kannst du die Parameter kennen, wenn es keinen Anfangswert gibt? Passt für mich irgendwie nicht ganz zusammen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 23.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2012, 08:40     Titel:
  Antworten mit Zitat      
Ich habe mich da vielleicht ein wenig unglücklich ausgedrückt. Die anderen Parameter kann ich frei wählen bzw. soll ich auch, um zu sehen wie sich die Lösung verändert.
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: 26.07.2012, 08:56     Titel:
  Antworten mit Zitat      
Hallo,

dann lass doch ode45 mit verschiedenen Anfangsbedingungen durchlaufen?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 23.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2012, 09:45     Titel:
  Antworten mit Zitat      
Hallo Harald,

du meinst, ich soll schauen, wie sich die Lösung für veränderte a,b und c verhält? Ich habe nur leider immer noch keine Bedingung für zum Beispiel f'(0)=0 gegeben. Kommt Matlab eigentlich auch mit autonomen Differentialgleichungen zurecht?

viele Grüße
Tina
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: 26.07.2012, 09:50     Titel:
  Antworten mit Zitat      
Hallo,

veränderte a, b, c führen ja automatisch zu veränderten Anfangsbedingungen.

Ja, MATLAB kommt auch mit autonomen DGL klar. Man nimmt hier t zwar als Eingabeargument entgegen, verwendet es aber nicht weiter - siehe Beispiel in
Code:

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 23.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2012, 09:56     Titel:
  Antworten mit Zitat      
Danke, das werde ich dann mal versuchen.
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.