Ode - szoftver megoldások közönséges differenciálegyenlet
valós skalár kezdési időpontját.
valós vektor, olyan időkben, amelyekben van egy döntés.
külső funkció (függvény karakterlánc vagy listát), a jobb oldalon a differenciálegyenlet.
string típusú használt megoldások programot. Az alábbi típusú programokkal elérhető megoldások: # 0034; Adams # 0034;. # 0034; merev # 0034;. # 0034; rk # 0034;. # 0034; RKF # 0034;. # 0034; erősít # 0034;. # 0034; diszkrét # 0034;. # 0034; roots könyvtárban # 0034; .
valós konstans vagy valós vektor azonos méretű és y. relatív tolerancia.
valós konstans vagy valós vektor azonos méretű és y. abszolút tolerancia.
külső funkció (függvény karakterlánc vagy listát), a Jacobi az f függvény.
valós vektorok (bemeneti / kimeneti).
külső függvény (function, karakterlánc vagy listát).
egész szám (a kezdeti idő).
valós mátrix vagy vektor (hétvégi).
valós vektor (kimenet).
ODE megoldja explicit közönséges differenciálegyenletek definiáljuk:
Ez az interfész megoldások a különböző programok, különösen ODEPACK.
Ez a súgó leírja a óda a szabványos explicit ODE.
A legegyszerűbb módja annak, hogy hívja ode. y = ODE (y0, t0, t, f). ahol Y0 - vektor kezdeti feltételek, t0 - kezdeti időben t - vektor az idő, amelyre az oldatot számított és y y - mátrix vektorok megoldások y = [y (t (1)), Y (T (2) ). ].
Bemeneti érv f meghatározza a jobb oldalán az első rendű differenciálegyenlet. Ez az érv a funkciót egy adott címsor.
Ha f Scilab-függvény, hívást le kell megfelelnie:
ahol t - valós skalár (ciklusidő) és Y - valós vektor (állam) és ydot - valós vektor (elsőrendű származék dy / dt).
Ha az f - vonal, ez - a név a lefordított Fortran szubrutin vagy függvény C. Például, ha hívod ode (y0, t0, t, # 0034; FEX # 0034;). az alprogram FEX hívják.
Fortran eljárás van címe:
ahol n - egy egész szám, t - dupla pontosságú skalár, y és ydot - kétszeres pontosságú vektor.
C rendelkeznie kell a fejléc:
ahol t - idő, y - állami és ydot - állapotban származékot (dy / dt).
Ez a külső funkció lehet gyűjteni módon, függetlenül az operációs rendszer segítségével ilib_for_link és dinamikusan kapcsolódik Scilab link segítségével funkciót.
Előfordulhat, hogy a szimulátor f igényel további érveket. Ebben az esetben, akkor használja ezt a funkciót. Argument f is lehet egy listát LST = lista (simuf, U1, U2. Un). ahol simuf jelentése Scilab-függvény szintaxisa: ydot = f (t, y, U1, U2 un.). és u1. u2. un - további érveket automatikusan át a szimulátor simuf.
Funkció f visszatérhet mátrix helyett p vektor x q. Ebből a mátrix rendszer megoldott jelöléssel n = p + q ODE dy / dt = F (t, Y). ahol Y - mátrix p x q. Ezután a kezdeti feltételek, Y0. kell lennie az azonos mátrix p x q. ODE és az eredmény - egy mátrix p x q (T + 1) [Y (t_0), Y (t_1). Y (T_T)].
Tűrések RTOL és atol a küszöb abszolút és relatív becsült hibák. A becsült hiba y (i) egyenlő: RTOL (i) * abs (y (i)) + Atol (i) és az integráció addig végezzük, amíg a hiba kicsi az egyes államok. Ha RTOL és / vagy Atol konstans, ott RTOL (i) és / vagy a Atol (i) van egy sor állandók. Az alapértelmezett értékek RTOL és atol rendre RTOL = 1.d-5 és atol = 1.d-7 legtöbb megoldás programokat, valamint a # 0034; # 0034 RFK; és # 0034; a fix # 0034; RTOL = 1.d-3 és Atol = 1.d-4.
Mert nehéz problémákat jobban meghatározni a jobb oldalon a Jacobi funkciók opcionális argumentum jac. A Jacobi külső funkció, azaz a. E. Egy speciális szintaxist funkciót, vagy a nevét Fortran eljárás vagy függvény C (karakterlánc) egy adott hívási sorrendjét, vagy a listán.
Ha JAC függvénye a szintaxis kell lennie J = JAC (t, y). ahol t - valós skalár (ciklusidő) és Y - valós vektor (állami). Az így kapott mátrixot kell számítani J df / dx, t. E. J (k, i) = dfk / DXI. ahol fk - k -ty elem f.
Ha jac egy karakterlánc, arra utal, hogy a nevét egy Fortran szubrutin vagy függvény C.
Fortran eljárás van címe:
C rendelkeznie kell a fejléc:
A legtöbb esetben nem szükséges, hogy olvassa el a mi. mu és nrpd.
Ha jac megtalálja, akkor f ugyanazok a megállapodást.
Opcionális érvek w és iw vektorok tárolására visszaadott információ az integráció rutin (lásd. Ode_optional_output). Amikor ezeket a vektorokat jelzi a jobb oldalon óda. integráció kezdődik újra ugyanazokkal a paraméterekkel, mint a megállás előtt.
Program megoldások ODEPACK közvetíteni több lehetőséget a változó% ODEOPTIONS. Lásd odeoptions.
programot megoldások
Típusa megoldandó feladat és az alkalmazott módszer függ az érték az első opcionális argumentum típusát. amelyek egyike lehet a következő sorokat:
Szoftver megoldások lsoda a ODEPACK csomag hivatkoznak alapértelmezés szerint. Ez automatikusan kiválasztja közötti nem merev-korrigáló predikciós eljárás Adams (prediktor-korrektor Adams módszer) és a módszer az inverz eltérés merev képletű (TSC) (visszafelé Differentiation képletű (BDF) módszer). Kezdetben amely lazán összekapcsolt eljárás és dinamikusan ellenőrizze az adatokat, hogy melyik módszert használja.
Használt nem merev feladatokat. Úgynevezett szoftvermegoldások lsode a ODEPACK csomagot, és használja a Adams módszer.
Ez kemény feladat. Úgynevezett szoftvermegoldások lsode a ODEPACK csomagot, és használja a TSC módszer.
Adaptív Runge-Kutta 4. sorrendben (RK4).
Használt Champaign program és a Watts (Shampine és Watts) alapuló módszer Runge-Kutta-Felberg pár 4 és 5 az elsőrendű (RKF45). Ez az nem merev és srednezhostkih feladatokat, amikor a számított útra. Ez a módszer általában nem lehet használni, ha a felhasználónak szüksége nagy pontossággal.
Ugyanez szoftver megoldások mint # 0034; RKF # 0034;. de a felhasználói felület nagyon egyszerű, t. e. a program megoldások csak akkor lehet átcsoportosítani paraméterek RTOL és Atol. Ez a legegyszerűbb módszer, hogy mintát.
Szoftver megoldások ODE azzal a lehetőséggel, hogy megtaláljuk a gyökerek. Hasznosítani lsodar megoldások ODEPACK csomagot. Ez egy változata a program lsoda megoldásokat. ahol úgy néz ki, hogy a gyökerek előre vektor függvény. . A súgóban ode_root.
Modellezése diszkrét időben. . A súgóban ode_discrete.
A következő példában fogjuk megoldani közönséges differenciálegyenlet dy / dt = y ^ 2-y * sin (t) + cos (t) kezdeti állapotban y (0) = 0. A program használata alapértelmezett megoldásokat.
A következő példában, megoldjuk az egyenletet dy / dt = A * y. A pontos oldatot egyenlő y (t) = expm (A * T) * y (0). ahol expm - mátrix exponenciális. Az ismeretlen mátrix egyenlő y (t) 2: 1.
A következő példában, megoldjuk a ODE dx / dt = A * x (t) + B * u (t) az u (t) = sin (omega * t). Felhívjuk figyelmét, hogy további érveket f. A. u. B. omega át f a listában.
A következő példában, megoldjuk a differenciál Riccati-féle egyenlet dX / dt = A # 0 '* X + X * A - X # 0' * B * X + C, ahol a kezdeti állapot X (0) egy egység mátrix 2 2.
A következő példában azt Resham differenciálegyenlet dy / dt = A * Y. ismeretlen, ahol Y (t) egy mátrix 2 2. A pontos oldatot egyenlő expm Y (t) = expm (A * T). ahol expm - mátrix exponenciális.
C fordító
A következő példa igényel fordító C.
Lásd még:
- ode_discrete - szoftver megoldások közönséges differenciálegyenlet, diszkrét idejű szimuláció
- ode_root - szoftver megoldások a közönséges differenciálegyenletek gyökereit kereső
- dassl - differenciál algebrai egyenlet
- impl - differenciál algebrai egyenlet
- odedc - szoftver megoldások diszkrét folytonos ODE
- odeoptions - set lehetőségek szoftver megoldások az ODE
- CSIM - szimuláció (válaszadási idő) lineáris rendszer
- ltitr - diszkrét idejű válasz (állapottér)
- rtitr - diszkrét idejű válasz (transzfer mátrix)
- intg - a határozott integrál
irodalom
Alan C. Hindmarsh, # 0034; lsode és lsodi, két új kezdeti érték közönséges differenciálegyenlet megoldó # 0034;, ACM-Signum Newsletter, Vol. 15, no. 4 (1980), pp. 10-11.
használt funkció
Kapcsolódó eljárások megtalálhatók a könyvtárban SCI / modules / differential_equations / src / Fortran: lsode.f lsoda.f lsodar.f