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] Kan man ha återkoppling i en ODE lösare?
- PimpNamedSlickBack
- Medlem
Offline
- Registrerad: 2011-11-01
- Inlägg: 633
[HSM] Kan man ha återkoppling i en ODE lösare?
Hej.
Jag undrar om det går att ha if-satser, while-satser, algebra ekvationer och funktioner med mera i en ODE funktion?
Samt även undrar jag om man kan göra så ODE funktionen blir återkopplad. Det är alltså reglering jag ska göra.
Språk: Octave/MATLAB
- Emmynoether
- Medlem
Offline
- Registrerad: 2017-01-14
- Inlägg: 77
Re: [HSM] Kan man ha återkoppling i en ODE lösare?
Du får nog specificera dig lite mer, ge ett exempel på vad du menar.
"The views of space and time which I wish to lay before you have sprung from the soil of experimental physics, and therein lies their strength. They are radical. Henceforth, space by itself, and time by itself, are doomed to fade away into mere shadows, and only a kind of union of the two will preserve an independent reality."
- Hermann Minkowski
- PimpNamedSlickBack
- Medlem
Offline
- Registrerad: 2011-11-01
- Inlägg: 633
Re: [HSM] Kan man ha återkoppling i en ODE lösare?
Emmynoether skrev:
Du får nog specificera dig lite mer, ge ett exempel på vad du menar.
I Octave brukar man ha en funktion med differentialekvationer. Man anropar funktionen med fyra argument, funktionens namn, tiden för simuleringen, begynnelsevärden och inställningar.
Sedan får man ut det man behöver. Men då är det frågan om man kan ha if-funktioner och övriga algoritmer där i.
Tänk er att man ska simulera en boll som studsar. Då måste man ha algoritmer som ger bollen ett nytt värde som gör så den kan studsa vidare. Annars blir bollen som en deg.
- Henrik E
- Medlem
Offline
- Registrerad: 2015-09-22
- Inlägg: 3189
Re: [HSM] Kan man ha återkoppling i en ODE lösare?
Just studsögonblicket (eller den tid då bollen har kontakt) följer ju inte samma diffekvation, så det verkar lite konstigt att jobba på det sättet. Man brukar bryta ODE-lösaren när studsen inträffar och göra ett nytt anrop när studsen är avslutad.
- PimpNamedSlickBack
- Medlem
Offline
- Registrerad: 2011-11-01
- Inlägg: 633
Re: [HSM] Kan man ha återkoppling i en ODE lösare?
Henrik E skrev:
Just studsögonblicket (eller den tid då bollen har kontakt) följer ju inte samma diffekvation, så det verkar lite konstigt att jobba på det sättet. Man brukar bryta ODE-lösaren när studsen inträffar och göra ett nytt anrop när studsen är avslutad.
Hej!
Det är så här jag menar. Detta är OpenModelica som behandlar en ODE med algoritmer. Jag tror säkert att du förstår denna objektorienterande kod. Orsaken varför jag vill helst köra Octave har med att lika bra att kunna Octave 100% än att kunna Octave 50% och OpenModelica 50%.
Det är så här jag vill kunna göra i Octave. Men om det inte går så får jag helt enkelt byta till OpenModelica.
Kod:
model BouncingBall "The 'classic' bouncing ball model" type Height=Real(unit="m"); type Velocity=Real(unit="m/s"); parameter Real e=0.8 "Coefficient of restitution"; parameter Height h0=1.0 "Initial height"; Height h; Velocity v; initial equation h = h0; equation v = der(h); der(v) = -9.81; when h<0 then reinit(v, -e*pre(v)); end when; end BouncingBall;
[IMAGE]http://book.xogeny.com/_images/BB1.png[/IMAGE]
http://book.xogeny.com/behavior/discrete/bouncing/
Senast redigerat av PimpNamedSlickBack (2017-01-29 12:00)
- Henrik E
- Medlem
Offline
- Registrerad: 2015-09-22
- Inlägg: 3189
Re: [HSM] Kan man ha återkoppling i en ODE lösare?
Jo, det går precis lika bra att skriva i Octave.
if y<0; y=0; v=-e*v; end;
- PimpNamedSlickBack
- Medlem
Offline
- Registrerad: 2011-11-01
- Inlägg: 633
Re: [HSM] Kan man ha återkoppling i en ODE lösare?
Henrik E skrev:
Jo, det går precis lika bra att skriva i Octave.
if y<0; y=0; v=-e*v; end;
Härligt!
Hur simulerar man detta i octave och det måste också skrivas som det står.
Nu hittade jag bara på något. Vet inte om det fungerar. Den skriven på första graden hos en ODE.Men jag skulle gärna vilja kunna simulera på en sådan skriven form. Blanda ODE med algebra.
Typ en Differential Algebraic Equation(DAE). Jag testade med ode5r och ode2r men fick inte det att fungera i Octave.
Det som är viktigt för mig är att jag ska kunna derivera, integrera och förstärka signaler som jag sedan återkopplar igen. Sök på ordet återkoppling så förstår du mig vad jag menar.
Jag vill kunna göra som OpenModelica och du hävdar att sådant fungerar. Så då får jag lita på det. Men kan du visa ett exempel på där man simulerar en DAE? Då kan jag använda det exemplet för att testa med while-satser, externa funktioner, for-satser och if-satser.
Det vore jätte bra om man kunde uttrycka derivatan på ett sätt som modelica gör t.ex der(x) betyder x'(t). För dem enda exemplen i Octave jag har sett är att derivatan skrivs ensamt i vänsterledet av differentialekvationen.
Senast redigerat av PimpNamedSlickBack (2017-01-29 14:20)
- Henrik E
- Medlem
Offline
- Registrerad: 2015-09-22
- Inlägg: 3189
Re: [HSM] Kan man ha återkoppling i en ODE lösare?
Det finns hundratals exempel på webben. https://se.mathworks.com/help/matlab/re … ml#bu3ugj4
- PimpNamedSlickBack
- Medlem
Offline
- Registrerad: 2011-11-01
- Inlägg: 633
Re: [HSM] Kan man ha återkoppling i en ODE lösare?
Henrik E skrev:
Det finns hundratals exempel på webben. https://se.mathworks.com/help/matlab/re … ml#bu3ugj4
Fast detta exempel visar inte hur man simulerar ODE på formen
Det är alltså en förstaderivata i både höger och vänsterled. Jag har endast sett exempler på första derivata i vänsterled.
Men sådant exempel kanske inte ens förekommer i verkligheten?
Senast redigerat av PimpNamedSlickBack (2017-01-30 00:44)
- Henrik E
- Medlem
Offline
- Registrerad: 2015-09-22
- Inlägg: 3189
Re: [HSM] Kan man ha återkoppling i en ODE lösare?
Är a en känd funktion är det väl bara att derivera den. Är a en okänt funktion har du väl en till diffekvation av typen a'=3y+4a.
- PimpNamedSlickBack
- Medlem
Offline
- Registrerad: 2011-11-01
- Inlägg: 633
Re: [HSM] Kan man ha återkoppling i en ODE lösare?
Henrik E skrev:
Är a en känd funktion är det väl bara att derivera den. Är a en okänt funktion har du väl en till diffekvation av typen a'=3y+4a.
Vi kan ta ett verkligt exempel för att testa.
Massa fjäder dämpare system - klassiker.
ODE:n görs om till.
Så där! Det blev en första gradare i högerled. Frågan är om Octave kan sådant? Eller måste jag byta ut till ?
Senast redigerat av PimpNamedSlickBack (2017-01-30 11:26)
- albiki
- Medlem
Offline
- Registrerad: 2008-05-25
- Inlägg: 6403
Re: [HSM] Kan man ha återkoppling i en ODE lösare?
PimpNamedSlickBack skrev:
Henrik E skrev:
Är a en känd funktion är det väl bara att derivera den. Är a en okänt funktion har du väl en till diffekvation av typen a'=3y+4a.
Vi kan ta ett verkligt exempel för att testa.
Massa fjäder dämpare system - klassiker.
ODE:n görs om till.
Så där! Det blev en första gradare i högerled. Frågan är om Octave kan sådant? Eller måste jag byta ut till ?
Detta är en linjär differentialekvation av första ordningen på vektorform. Octave kan sånt.
där vektorn
och matrisen
Faktum är att det finns en exakt lösning till detta, som kan uttryckas med hjälp av matrisexponentialfunktionen.
- PimpNamedSlickBack
- Medlem
Offline
- Registrerad: 2011-11-01
- Inlägg: 633
Re: [HSM] Kan man ha återkoppling i en ODE lösare?
albiki skrev:
PimpNamedSlickBack skrev:
Henrik E skrev:
Är a en känd funktion är det väl bara att derivera den. Är a en okänt funktion har du väl en till diffekvation av typen a'=3y+4a.
Vi kan ta ett verkligt exempel för att testa.
Massa fjäder dämpare system - klassiker.
ODE:n görs om till.
Så där! Det blev en första gradare i högerled. Frågan är om Octave kan sådant? Eller måste jag byta ut till ?Detta är en linjär differentialekvation av första ordningen på vektorform. Octave kan sånt.
där vektorn
och matrisen
Faktum är att det finns en exakt lösning till detta, som kan uttryckas med hjälp av matrisexponentialfunktionen.
Tack. Men jag antar att octave/matlab endast vill ha första ordningen ensamt i vänsterled?
- Henrik E
- Medlem
Offline
- Registrerad: 2015-09-22
- Inlägg: 3189
Re: [HSM] Kan man ha återkoppling i en ODE lösare?
Ja, y' ska inte stå i högerledet, där skriver man förstås v.
- PimpNamedSlickBack
- Medlem
Offline
- Registrerad: 2011-11-01
- Inlägg: 633
Re: [HSM] Kan man ha återkoppling i en ODE lösare?
Henrik E skrev:
Ja, y' ska inte stå i högerledet, där skriver man förstås v.
Tack för svaret.
Men då kan jag lika gärna köra Octave istället för OpenModelica.
Tack åter igen.