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

Mit Jacobi Matrix Maximalstellen berechnen

 

Günnsen
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 26.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2016, 13:40     Titel: Mit Jacobi Matrix Maximalstellen berechnen
  Antworten mit Zitat      
Hallo,

Ich habe folgendes Problem: Ich möchte mit Hilfe der Jacobi-Matrix die Maximalstellen berechnen.

Hier ist mein Vektor mit den Funktionen.

Code:
% Ausgangsfunktionen
calc_alpha = [ (p1 - 16/25)/(p1 + p2 + p3 - 28/25), (p2 - 8/25)/(p1 + p2 + p3 - 28/25), (p3 - 4/25)/(p1 + p2 + p3 - 28/25)];


Nun bilde ich die Jacobi-Matrix.
Code:
% Ableitungsmatrix
derivate_matrix = jacobian(calc_alpha, [p1, p2, p3]);


Ich weiss, dass ich zum Lösen die Jacobi-Matrix gleich der Nullmatrix setzen muss.

Die Frage lautet nun: Wie setzt man das in Matlab um?
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: 30.06.2016, 15:52     Titel:
  Antworten mit Zitat      
Hallo,

Gleichungen kann man mit solve lösen.
Nur hat man dann doch 9 Gleichungen mit 3 Unbekannten. Sind das nicht etwas viele?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 26.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2016, 16:17     Titel:
  Antworten mit Zitat      
Hallo Harald,

Vielen Dank für deine Antwort & ja es sind etwas viele.

Die drei Funktionen bilden jeweils Kaufwahrscheinlichkeiten in Abhängigkeit der Preise p1,p2 und p3.

Da ich die Preise maximieren möchte, benötige ich die Ableitungsmatrix.
Code:
%Lösen
optprices = solve(derivate_matrix,prices, 'IgnoreAnalyticConstraints', true)
 



Mit dem solve-Befehl erhalte ich nur folgende Ausgabe:

optprices =

p1: [0x1 sym]
p2: [0x1 sym]
p3: [0x1 sym]

Gibt es vielleicht eine andere Möglichkeit dieses Problem zu lösen?
Vielen Dank!
Günnsen
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: 30.06.2016, 16:28     Titel:
  Antworten mit Zitat      
Hallo,

ist es denn sinnvoll, die drei Komponenten auf einmal maximieren zu wollen?
Wie soll denn das Maximum einer Funktion mit 3D-Rückgabe definiert sein?

Ich würde jede Komponente für sich betrachten.

Bitte darauf achten, reproduzierbaren Code zu posten. Was ist z.B. hier prices ?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 26.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2016, 16:48     Titel:
  Antworten mit Zitat      
Hallo,

sry für das Fehlen des Codes. Ich poste am besten mal alles.

Bedingt durch die Funktion calc_alpha wird gewährleistet, dass sich die Wahrscheinlichkeiten wieder zu 1 aufsummieren lassen. Daher bin ich der Meinung,
dass es auf einmal maximiert werden muss, aber vielleicht irre ich mich da auch.
Das Ergebnis soll ein Preisvektor sein (hier in dem Beispiel für 3 Produkte, daher 3 Preise), der diese 3 Funktionen maximiert.

Interessant am Code sind eigentlich nur die letzten vier Zeilen.

Vielen Dank für deine Unterstützung,Harald!

Code:
% Mein Code

clear all
syms  p1 p2 p3   real

theta = 0.8; %customer sensitivity to quality
quality = [0.8, 0.4, 0.2]; %quality of each product ordered non increasing

prices = [p1, p2, p3];
my = zeros (size(prices));
xi = zeros (size(prices));
j = 1:1:length(quality);
i = 1:1:length(quality);


alpha = size(length(prices));
utility = sym(zeros (size(prices)));

utility(j) = (theta*quality(j)- prices(j))+my(j).*xi(j);
calc_alpha = utility(j)/sum(utility(j));
derivate_matrix = jacobian(calc_alpha, [p1, p2, p3]);
optprices = solve(derivate_matrix,prices, 'IgnoreAnalyticConstraints', true);
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: 30.06.2016, 20:19     Titel:
  Antworten mit Zitat      
Hallo,

nochmal:
Zitat:
Wie soll denn das Maximum einer Funktion mit 3D-Rückgabe definiert sein?



Was ist denn die Bedeutung von calc_alpha? Umsatz, Gewinn, ...?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 26.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2016, 07:57     Titel:
  Antworten mit Zitat      
Guten Morgen Harald,

Zu Frage 1: Das Maximum der Wahrscheinlichkeitsfunktion wird definiert durch das Nullsetzen der 1. Ableitung.

Zu Frage 2: calc_alpha gibt die Wahrscheinlichkeitsfunkionen an. (Nutzen des Produktes j / Gesamtnutzen).

Viele Grüße,
Günnsen
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: 01.07.2016, 08:37     Titel:
  Antworten mit Zitat      
Hallo,

das Problem ist aber, dass die Ableitungen der drei Funktionen an verschiedenen Stellen 0 sein werden. Wie soll also das Maximum der 3D-Funktion bestimmt sein?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 26.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2016, 13:25     Titel:
  Antworten mit Zitat      
Hallo Harald,

ja da hast du völlig Recht. Ich werde nun versuchen mit Hilfe einer Diskretisierung und schrittweisen Erhöhung der Preise auf ein "akzeptables" Ergebnis zu kommen.

Dennoch vielen Dank für dein Feedback. Es hat mich ein gutes Stück weiter gebracht.

Grüß,
Günnsen
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.