Jag beskriver nu ett dynamiskt system.
Vi säger att jag har en vektor X(k) = {x1, x2, x3, x4, ... , xn} som beskriver alla tillstånd i ett system över tid.
Jag har en liknande vektor som heter U(k) = {u1, u2, u3, u4, ... , un} som beskriver alla insignaler till ett system över tid.
Där efter har vi referensvektorn R(k) = {r1, r2, r3, f4, ... , rn} som beskriver alla mål som X ska uppnå för att vi ska få våran önskade resultat hos vårat dynamiska system.
Om vi ska minimera detta igenom kvadratisk programmering så kan vi skriva U och X på formen:
Orsaken varför vi säger R-X är för att om X är lika mycket som R så är det noll och då har vi uppnått våran referensvärde som vi eftersträrvar. Orsaken varför vi säger Vektor ' * Vektor har med att det blir ett enda tal. Testa själv i Octave/MATLAB:
Dessutom blir t.ex. U'*U alltid positivt. Minus gånger minus är positivt som ni vet.
Formeln ovan beskriver alltså hur optimalt systemet är. Om U är jätte stort men X är lika med noll. Så kommer J vara stor. Om U är jätte stor och R =X så kommer J vara något lägre. Om U är litet och R=X så kommer J vara mycket lågt.
Jag har har glömt bort var denna J-formel kallas. Men den är mycket logiskt om ni tänker att U är bränsle till en motor och X är rotationshastigheten på motorn och R är vårat önskade krav på rotationshastigheten på motorn. Om vi tillför lite bränsle U till motorn och R=X så betyder det att våran motor är effektiv då J är mycket liten. Om vi tillför mycket bränsle U till våran motor, men R är mycket större än X, då är motor effektiv och dålig, därmed J mycket hög.
Det jag vill diskutera är att om jag vet X och U. R är vad jag själv sätter vad R ska vara. Då kan jag köra en lite for-loop i mitt Octave/MATLAB och få ut mitt J. Men vi säger att jag vill räkna ut vilka U jag ska ha för att R och X ska ha samma värde. Vad måste jag veta då?
Det jag inte kan är att sätta J = 0 för alla k, och sedan räkna ut U(k). J kan inte vara noll för att U kan inte vara negativ och X fungera endast om U får "bränsle".
Jag har en strategi. Som vi vet så vet jag U(k) och X(k) och därmed kan räkna ut mitt J. Det skulle vara intressant och räkna ut J från U(k) och X(k) och vad J kunde vara om U(k) hade sett annorlunda ut. Men detta är svårt och därför ber jag er om er hjälp vad jag måste veta.
Måste jag veta sambandet mellan X(k) och U(k)? Vi säger att jag har endast tillgång till mätdata. Hur kan jag göra då?
Vi säger att jag har en vektor X(k) = {x1, x2, x3, x4, ... , xn} som beskriver alla tillstånd i ett system över tid.
Jag har en liknande vektor som heter U(k) = {u1, u2, u3, u4, ... , un} som beskriver alla insignaler till ett system över tid.
Där efter har vi referensvektorn R(k) = {r1, r2, r3, f4, ... , rn} som beskriver alla mål som X ska uppnå för att vi ska få våran önskade resultat hos vårat dynamiska system.
Om vi ska minimera detta igenom kvadratisk programmering så kan vi skriva U och X på formen:
Citat:
J = Summa((R(k)-X(k))'*(R(k)-X(k)) + U(k)'*U(k))
Orsaken varför vi säger R-X är för att om X är lika mycket som R så är det noll och då har vi uppnått våran referensvärde som vi eftersträrvar. Orsaken varför vi säger Vektor ' * Vektor har med att det blir ett enda tal. Testa själv i Octave/MATLAB:
Citat:
A = linspace(0, 10)';
A'*A
A'*A
Dessutom blir t.ex. U'*U alltid positivt. Minus gånger minus är positivt som ni vet.
Formeln ovan beskriver alltså hur optimalt systemet är. Om U är jätte stort men X är lika med noll. Så kommer J vara stor. Om U är jätte stor och R =X så kommer J vara något lägre. Om U är litet och R=X så kommer J vara mycket lågt.
Jag har har glömt bort var denna J-formel kallas. Men den är mycket logiskt om ni tänker att U är bränsle till en motor och X är rotationshastigheten på motorn och R är vårat önskade krav på rotationshastigheten på motorn. Om vi tillför lite bränsle U till motorn och R=X så betyder det att våran motor är effektiv då J är mycket liten. Om vi tillför mycket bränsle U till våran motor, men R är mycket större än X, då är motor effektiv och dålig, därmed J mycket hög.
Det jag vill diskutera är att om jag vet X och U. R är vad jag själv sätter vad R ska vara. Då kan jag köra en lite for-loop i mitt Octave/MATLAB och få ut mitt J. Men vi säger att jag vill räkna ut vilka U jag ska ha för att R och X ska ha samma värde. Vad måste jag veta då?
Det jag inte kan är att sätta J = 0 för alla k, och sedan räkna ut U(k). J kan inte vara noll för att U kan inte vara negativ och X fungera endast om U får "bränsle".
Jag har en strategi. Som vi vet så vet jag U(k) och X(k) och därmed kan räkna ut mitt J. Det skulle vara intressant och räkna ut J från U(k) och X(k) och vad J kunde vara om U(k) hade sett annorlunda ut. Men detta är svårt och därför ber jag er om er hjälp vad jag måste veta.
Måste jag veta sambandet mellan X(k) och U(k)? Vi säger att jag har endast tillgång till mätdata. Hur kan jag göra då?
Gjorde en sådan thresold least square eller vad det kallas. Man anger några kandidatfunktioner och algoritmen räknar lite enkelt om man ska ta hänsyn till vissa funktioner eller om man ska utesluta dessa.