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

Zwei Fomeln ergeben nicht das gleiche Resultat

 

Fischliblubb

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2014, 18:00     Titel: Zwei Fomeln ergeben nicht das gleiche Resultat
  Antworten mit Zitat      
Hallo,

ich habe für eine gesuchte Matrix zwei Formeln, diese zu berechnen. Eigentlich müssten die Ergebnisse übereinstimmen, tun sie aber leider nicht.

1. Formel: \tau_{ij}^{\pi}(\text{d}t) = (\pi(t) - e_{i})' a (\text{d}t)(\pi(t) - e_{j})

Code:

pi = relativesKapital;
s=size(pi);
e=eye(s(1));
a = kovarianz;
tau_pii=zeros(s(1), s(1), s(2)-1);


for t=1:s(2)-1
     for i=1:s(1)
         for j=1:s(1)
             
            tau_pii(i,j,t)=(pi(:,t)-e(:,i))'*a(:,:,t)*(pi(:,t)-e(:,j));
           
         end
     end
end
 



2. Formel: \tau_{ij}^{\pi}(\text{d}t) = a_{ij}(\text{d}t) - a_{\pi i}(\text{d}t)  - a_{\pi j}(\text{d}t) + a_{\pi \pi}(\text{d}t)
wobei gilt:  a_{\pi i}(\text{d}t) := \sum _{j=1}^{d} \pi_{j}(t) a_{ij}(\text{d}t),  ~~~~~~ \text{und}  ~~~~~~  a_{\pi \pi}(\text{d}t) := \sum _{i,j=1}^{d} \pi_{i}(t) \pi_{j}(t) a_{ij}(\text{d}t)

Code:
a = kovarianz;
b = relativesKapital;
L = size(b);

a1_pi_i = zeros(L(1),L(1),L(2)-1);
for t = 1:L(2)-1
    for i = 1:L(1)
        for j = 1:L(1)
            a1_pi_i(i,j,t) = b(j,t) * a(i,j,t);
        end
    end
end

a_pi_i = zeros(L(1),L(2)-1);
for t = 1:L(2)-1
    for i = 1:L(1)
        a_pi_i(i,t) = sum(a1_pi_i(i,:,t));
    end
end
a_pi_i(find(isnan(a_pi_i))) = 0;

a1_pi_pi = zeros(L(1),L(1),L(2)-1);
for t = 1:L(2)-1
    for i = 1:L(1)
        for j = 1:L(1)
            a1_pi_pi(i,j,t) = b(i,t) * b(j,t) *  a(i,j,t);
        end
    end
end

a2_pi_pi = zeros(L(1),L(2)-1);
for t = 1:L(2)-1
    for i = 1:L(1)
        a2_pi_pi(i,t) = sum(a1_pi_i(i,:,t));
    end
end
a2_pi_pi(find(isnan(a2_pi_pi))) = 0;

a_pi_pi = zeros(1,L(2)-1);
for t = 1:L(2)-1
    a_pi_pi(1,t) = sum(a2_pi_pi(:,t));
end


tau_pi = zeros(L(1),L(1),L(2)-1);
for t = 1:L(2)-1
    for i = 1:L(1)
        for j = 1:L(1)
            tau_pi(i,j,t) = a(i,j,t) - a_pi_i(i,t) + a_pi_i(j,t) + a_pi_pi(1,t);
        end
    end
end



Sieht jemand den Fehler?
Danke für die Hilfe und viele Grüße
Fischliblubb

kovarianz.zip
 Beschreibung:

Download
 Dateiname:  kovarianz.zip
 Dateigröße:  38.97 KB
 Heruntergeladen:  334 mal


Fischliblubb

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.05.2014, 15:39     Titel:
  Antworten mit Zitat      
Hat keiner eine Idee?
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Hat keiner eine Idee?

Anscheinend nicht ;)
Ich würde sagen, das liegt zum einen daran, dass die Formeln sehr unterschiedlich aussehen und man daher schlecht sieht, wieso da dasselbe herauskommen sollte.
Zum anderen könnte man natürlich beide Codeschnipsel mit dem Debugger Zeile für Zeile durchlaufen und schauen, was übereinstimmt und was nicht und welche Zeilen genau die Ursache für die unterschiedlichen Ergebnisse sind. Das wäre allerdings ein gewisser Aufwand, und das solltest wenn schon du machen - da du die Formeln kennst und die unterschiedlichen Bezeichnungen zueinander in Bezug setzen kannst, weißt du schließlich viel besser, was übereinstimmen sollte.

Ein paar generelle Tipps:
- pi ist die Kreiszahl (3.1415...) und sollte daher nicht anderweitig als Variable verwendet werden.
- sum arbeitet spaltenweise, es ist also keine for-Schleife über die Spalten nötig.
- es gibt komponentenweise Operationen wie .* ./ und .^ die Schleifen zumindest in Teilen überflüssig machen.

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.