Verfasst am: 01.07.2012, 00:18
Titel: Gleichung wird überschrieben / wegen der for Schleife
Hallo,
kann mir jemand hier behilflich sein, wenn die erste Bedingung also die erste Gleichung erfüllt ist wird die Gleichung 1. berechnet aber beider ausgabe wird sie von der 2.Gleichung überschrieben.
Hinweis nur cx wird überschrieben, die restlichen werte in der bedinungen sind richtig.
wenn aber die Zweite bedinung erfüllt ist, dann ist alles richtig.
SOL,S1L,S2L,S3L= sind variablen die Unterschiedlich zwischen 0...6 sind Den code hab ich in word anghängt, weil es hier nicht übersichtlich ist.
Code:
for C1 = 0:7 for C0 = 0:7 ifmod(C0*S1L+S0L,7)==0 && mod(C0*S2L+S1L,7)==0 && mod(C0*S3L+S2L,7)==0;
for C1F= 1:7 ifmod((C0*C1F),7)==1 if S0L==0 && S1L==0 && S2L==0 && S3L==0
C1F=0;
end
cx=(1+C1F*x); % 1. cx Gleichung
F0L=mod(-(C1F*S3L),7);
F1L=mod(-(C1F*F0L),7);
end end elseifmod(C0*S2L+C1*S1L+S0L,7)==0 && mod(C0*S3L+C1*S2L+S1L,7)==0;
for C2= 1:7 ifmod((C0*C2),7)==1
C1=mod(C1*C2,7)
cx=(1+C1*x+C2*x^2); % 2. cx Gleichung
F0L=mod(-(C1*S3L+C2*S2L),7);
F1L=mod(-(C1*F0L+C2*S3L),7);
end end end end end
Verfasst am: 01.07.2012, 09:50
Titel: Re: Gleichung wird überschrieben / wegen der for Schleife
Hallo lonewolfhawk,
Ich habe Deinen Code formattiert, indem ich ihn markierte und auf den "Code"-Button geklickt habe. Das Posten als Text-Files (zum Glück kein Word-Format!) ist nicht hilfreicher. Im Endeffekt hast Du nun 3 Source-Codes gepostet, was die Klarheit der Frage reduziert.
Was bedeutet "Gleichung" in Deiner Frage? Wahrscheinlich klärt das diesen Satz:
Zitat:
wenn die erste Bedingung also die erste Gleichung erfüllt ist wird die Gleichung 1. berechnet
Hallo lonewolfhawk,
die verschachtelten Bedingungen innerhalb der Schleifen können prinzipiell keinmal,
einmal, oder sogar mehrmals erfüllt sein.
Willst Du eine Liste von allen möglichen cx?
Ürigens ist der erste if-Block völlig unabhängig von C1.
ich meine, die erste if Bedinung in der 3.Zeile, wenn diese erfüllt wird, muss die Gleichung 1. erzeugt werden. Die internen if bedinungen dienen nur zur nomierung der Gleichung.
Und die elseif ist für die Zweite Gleichung die Voraussetzung.
ja das stimmt so, dass der erste if-Block völlig unabhängig von C1 ist.
Warum wird bei erfüllen der 1. Bedingung meine 1.Gleichung cx durch die 2. Bedingungsgleichung cx überschrieben.
Obwohl ich für die Werte F0L und F1L immer die Richtigen Werte heraus bekomme. Die auch durch Bedingungen abhängig sind.
Hallo lonewolfhawk,
wenn ich Dich richtig verstehe, soll für gegebene Sxx jeweils nur einmal
eine der beiden Bedingungen erfüllt sein?
1.) Um den Fehler zu finden, solltest Du jeweils Cxx bzw. Fxx ausgeben
lassen, falls eine der Bedingungen erfüllt ist, dann kannst Du auch
nachvollziehen, warum F0L und F1L für beide Bedingungen gerade gleich sind.
2.) Mathematisch gesehen gibt es (fast?) immer ein C1 das die Bedingung II
erfüllt, wenn irgendwann die Bedingung I erfüllt wird.
3.) Es gibt drei unterschiedliche Fälle.
a: Trivialer Fall S0L=S1L=S2L=S3L, der von keinem C abhängt und
deshalb vor allen Schleifen abgearbeitet werden sollte.
b: Bedingung I, die nicht von C1 abhängt, so dass Du eigentlich die
Schleifen C0 und C1 vertauschen solltest und dann C1 nur über
Bedingung II schleift.
c: Bedingung II, abhängig von C0, C1 und C2
4.) if mod((C0*C1F),7)==1 bzw. mit C2 verhindert effektiv, dass die
Bedingungen für C0=0 und C0=7 nie erfüllbar ist, so daß die Schleife
über C0=1:6 ausreichen würde.
Die Schleife über C1F bzw. C2 ließe sich dann durch die einfache
Relation:
C0=1 -> C1F bzw. C2 = 1
C0=2 -> C1F bzw. C2 = 4
C0=3 -> C1F bzw. C2 = 5
C0=4 -> C1F bzw. C2 = 2
C0=5 -> C1F bzw. C2 = 3
C0=6 -> C1F bzw. C2 = 6
ersetzen.
Mit ein paar Umformungen wird das Problem hoffentlich einfacher und
der Fehler leichter zu finden.
Grüße
Sirius
Einstellungen und Berechtigungen
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
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.