Meddelande
På gamla.pluggakuten.se kan du fortfarande läsa frågorna och svaren som ställts, men du kan inte skapa ett nytt konto eller nya trådar. Nya frågor och nytt konto skapar du på det nya forumet, välkommen dit!
[HSM] Hur löser ett stort system igenom symbolisk ODE
- PimpNamedSlickBack
- Medlem
Offline
- Registrerad: 2011-11-01
- Inlägg: 633
[HSM] Hur löser ett stort system igenom symbolisk ODE
Hej.
Jag undrar vad man ska använda för metod för att lösa parallella och seriella ODE.
Jag har tittat på något som heter symbolisk matematik via Octave/MATLAB. Jag funderar att använda Octave för MATLAB kräver licens.
Men då gäller det med uppställningen av ODE. Det finns något som heter tillståndsmodell (Engelska: State-space). Det är en ganska bra metod hur man löser komplexa system av ODE igenom att göra allt till matrisform. Problemet med tillståndsmodeller är att man måste skriva om ekvationerna på första ordningen, vilket kan vara väldigt mycket jobb om det är flera. Så lätt är den inte. Men den är iallafall lättare än att skapa en överföringsfunktion av ett komplext problem.
Men med symbolisk matematik så är det mest bara att bruka ODE:erna som dem är och låt en ODE lösaren lösa problemet. I Octave/MATLAB så finns det en symbolisk funktion som heter dsolve. Med den funktionen så kan man mata in olika ODE som dsolve löser ut. Då löser den ut lösningarna till alla ODE's.
Min fråga till er är:
- Finns det någon symbolisk metod för att göra om ett system av ODE till en enda ODE?
Tänk att om man kombinerar mekanisk rotation och mekanisk translation. Systemet beskriver 5 stycken ODE. Men du vill beskriva systemet med endast en ODE för du vill ha en ingång och en utgång på hela systemet.
Ni får gärna ge andra förslag.
Senast redigerat av PimpNamedSlickBack (2017-01-22 04:20)
- Henrik E
- Medlem
Offline
- Registrerad: 2015-09-22
- Inlägg: 3189
Re: [HSM] Hur löser ett stort system igenom symbolisk ODE
Att skriva ett system i matrisform är lätt och det finns ingen anledning att använda symbolisk matte (dsolve). Jag vet att en octave-variant av dsolve finns i något som heter ungefär Symbolic_package men det är helt onödigt om man vill göra numeriska beräkningar.
- PimpNamedSlickBack
- Medlem
Offline
- Registrerad: 2011-11-01
- Inlägg: 633
Re: [HSM] Hur löser ett stort system igenom symbolisk ODE
Henrik E skrev:
Att skriva ett system i matrisform är lätt och det finns ingen anledning att använda symbolisk matte (dsolve). Jag vet att en octave-variant av dsolve finns i något som heter ungefär Symbolic_package men det är helt onödigt om man vill göra numeriska beräkningar.
Definiera lätt? När det blir många variabler inräknat så blir det svårt enligt mig. Jag använder oftast symbolisk matematik för att vara på den säkra sidan.
På vilket sätt är dsolve onödig om man vill göra numeriska beräkningar? Menar du att jag ska helt och hållet simulera matrisen med hjälp av algoritmer t.ex for/while loop? Det som kallas numeriska metoder? Det finns ju redan ODE45 som kan simulera en ODE ekvation. Men problemet är att jag har flera ODE som jag vill få in i en enda ODE.
Okej. Jag kan hålla med att skriva ekvationer på rad efter rad som ekvationerna just är, är lätt, om det är så du menar matrisform. Till exempel att beskriva en modell för dubbel fjäder massa system. Då kan man uttrycka en ODE för varje massa och då blir det två stycken ODE. Det går att skriva om dessa två ODE till en enda ODE, men det blir svårt om det är flera ODE.
Tillståndsmodeller fungerar. Men med tillståndsmodeller så blir det lite bökigare. Då har man dribblar väldigt mycket med variabler och skrivit om dessa på första ordningens ODE.
Jag känner att jag inte är hemma på sådant. Men mitt mål är att kunna reglera ett dynamiskt system med antingen en PID eller Fuzzy regulator. Systemet ska vara en eller flera ODE.
Senast redigerat av PimpNamedSlickBack (2017-01-22 08:42)
- Henrik E
- Medlem
Offline
- Registrerad: 2015-09-22
- Inlägg: 3189
Re: [HSM] Hur löser ett stort system igenom symbolisk ODE
ode45 tar en vektor av tillståndsvariabelvärden vid en angiven tid och stegar fram tiden och räknar hela tiden ut den nya tillståndsvektorn. Några for och while-loopar behövs inte.
- PimpNamedSlickBack
- Medlem
Offline
- Registrerad: 2011-11-01
- Inlägg: 633
Re: [HSM] Hur löser ett stort system igenom symbolisk ODE
Henrik E skrev:
ode45 tar en vektor av tillståndsvariabelvärden vid en angiven tid och stegar fram tiden och räknar hela tiden ut den nya tillståndsvektorn. Några for och while-loopar behövs inte.
Så jag behöver endast använda mig av en ODE lösaren t.ex ODE45 och sedan skapa en funktion som innehåller mina ODE ekvationer sedan anropa funktionen med ODE45 ?
Jag har kört ODE45 för länge sedan. Men jag har inte byggt en matematisk modell med hjälp av flera ODE. Endast en ODE.
- PimpNamedSlickBack
- Medlem
Offline
- Registrerad: 2011-11-01
- Inlägg: 633
Re: [HSM] Hur löser ett stort system igenom symbolisk ODE
Hej!
Jag har nu förstått att ODE45 och övriga ODE lösare löser bara på första ordningens ODE. Alltså är det spill med tid att jag fokuserar mig på ODE lösare. Då kan jag lika gärna bege mig till att hålla på med tillståndsmodeller. Dessa skrivs också på första ordningens ODE, men dock i matrisform. Så man kombinerar ODE med linjär algebra.
Hur som helst så undrar jag om det finns något enkelt sätt för att transformera om massa ODE som är skrivna på både första och andra ordningen, till en tillståndsmodell.
Eller är det bara för mig att kämpa mig igenom att skapa en tillståndsmodell för hand?
Senast redigerat av PimpNamedSlickBack (2017-01-22 13:58)
- Henrik E
- Medlem
Offline
- Registrerad: 2015-09-22
- Inlägg: 3189
Re: [HSM] Hur löser ett stort system igenom symbolisk ODE
En andra ordningens diffekv, till exempel y"=2y'+3y skrivs om till två första ordnings så här.
y'=u, u'=2u+3y
Och sen sköter ode45 resten.
- PimpNamedSlickBack
- Medlem
Offline
- Registrerad: 2011-11-01
- Inlägg: 633
Re: [HSM] Hur löser ett stort system igenom symbolisk ODE
Henrik E skrev:
En andra ordningens diffekv, till exempel y"=2y'+3y skrivs om till två första ordnings så här.
y'=u, u'=2u+3y
Och sen sköter ode45 resten.
Jo. Jag märkte det nu. Jag har hållit på mycket med tillståndsmodeller och det är en rätt svår metod att bygga upp ett dynamiskt system. Men dock lättare överföringsfunktioner.
Men om jag t.ex uttrycker olika ODE's från ett system. Sedan staplar jag upp dem och beskriver på första ordningen och sedan kör med ODE45. Kan jag bygga ett återkopplat system med ODE45?
Tanken är att jag ska ha en PID regulator före min ODE lösare. Där min PID bestämmer vilket värde ODE lösaren ska ha. Som jag vet så kräver en ODE45 en vektor som tspan. En PID ger bara ut ett reellt tal.
Senast redigerat av PimpNamedSlickBack (2017-01-22 15:53)
- PimpNamedSlickBack
- Medlem
Offline
- Registrerad: 2011-11-01
- Inlägg: 633
Re: [HSM] Hur löser ett stort system igenom symbolisk ODE
Hej.
Har löst mitt problem nu. Openmodelica istället för Octave.
- PimpNamedSlickBack
- Medlem
Offline
- Registrerad: 2011-11-01
- Inlägg: 633
Re: [HSM] Hur löser ett stort system igenom symbolisk ODE
Hej igen.
En fråga! Kan jag ha if-satser, while-satser, funktioner, for-satser med mera i ODE lösarens funktion på GNU Octave?
- Smaragdalena
- Medlem
Offline
- Registrerad: 2012-02-02
- Inlägg: 14676
Re: [HSM] Hur löser ett stort system igenom symbolisk ODE
Starta en ny tråd när du har en ny fråga, det blir så rörigt annars.