Meddelande

Du befinner dig just nu på en äldre version av Pluggakuten, gamla.pluggakuten.se. Nya Pluggakuten lanserades den 6 februari 2017 och du finner forumet på www.pluggakuten.se.

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.
LaTeX ekvation
LaTeX ekvation
LaTeX ekvation

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
LaTeX ekvation

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.

LaTeX ekvation

ODE:n görs om till.

LaTeX ekvation
LaTeX ekvation

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 LaTeX ekvation till LaTeX ekvation ?

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.

LaTeX ekvation

ODE:n görs om till.

LaTeX ekvation
LaTeX ekvation

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 LaTeX ekvation till LaTeX ekvation ?

Detta är en linjär differentialekvation av första ordningen på vektorform. Octave kan sånt.

    LaTeX ekvation

där vektorn

    LaTeX ekvation

och matrisen

    LaTeX ekvation

Faktum är att det finns en exakt lösning till detta, som kan uttryckas med hjälp av matrisexponentialfunktionen.

    LaTeX ekvation

 
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.

LaTeX ekvation

ODE:n görs om till.

LaTeX ekvation
LaTeX ekvation

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 LaTeX ekvation till LaTeX ekvation ?

Detta är en linjär differentialekvation av första ordningen på vektorform. Octave kan sånt.

    LaTeX ekvation

där vektorn

    LaTeX ekvation

och matrisen

    LaTeX ekvation

Faktum är att det finns en exakt lösning till detta, som kan uttryckas med hjälp av matrisexponentialfunktionen.

    LaTeX ekvation

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.

 


Sidfot

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson

Powered by Mattecentrum
 |  Denna sida använder cookies |  Kontakta oss |  Feedback |