Popis simulačního jazyka PSI
Obsah kapitoly: |
P1.2 Bloky (funkce) jazyka PSI P1.3 Uživatelské prostředí jazyka PSI |
PSI je blokově orientovaný simulační jazyk. Byl vyvinut na univerzitě v holandském Delftu a jeho předností pro náš účel je, že je speciálně zaměřen na řešení soustav obyčejných diferenciálních rovnic. Z hlediska uživatele je navíc velice příznivá skutečnost, že základy tohoto jazyka lze zvládnout zhruba za 2 hodiny práce u počítače. Základní jednotkou programu je blok s jedním nebo více vstupy a jedním výstupem. Blok realizuje určitou (nejčastěji matematickou) funkci. Ta je aplikována na hodnoty vstupů do bloku a výsledkem je hodnota na výstupu bloku. Kromě obecných bloků matematického charakteru obsahuje celou řadu speciálních bloků, např. generátory uživatelských funkcí, regulátory, časovače apod. Je opatřen grafickým výstupem s dost širokými možnostmi uživatelských voleb, nebo výstupem formou tabulky. Součástí jazyka jsou i optimalizační metody, které se velmi dobře uplatní při zpracování experimentálních dat a zjišťování hodnot parametrů modelů. Pro numerickou integraci je k dispozici několik metod s pevným i proměnným krokem a s různou přesností výpočtu.
PROMĚNNÉ
Proměnné jsou definované uživatelem a označují se identifikátory. Identifikátor může být tvořen až 120 znaky (především písmeny a číslicemi), nesmí začínat číslicí, velká a malá písmena se nerozlišují. Identifikátor nesmí obsahovat znaky
, | ; | % | ( | ) | ^ | * | / | + | - | = | ! | < | > | | | & | mezera |
a jako identifikátorů se nesmí používat jmen bloků (funkcí) jazyka PSI. Identifikátor PI je vyhrazen pro Ludolfovo číslo, identifikátor TIME označuje nezávisle proměnnou (čas).
VÝRAZY
Výrazy se používají jako vstupy bloků a jsou tvořeny operandy, které jsou spojovány operátory. Většinou se jedná o výrazy aritmetické, ale mohou to být i výrazy logické a kombinované.
Operandy: | konstanty, proměnné, standardní matematické funkce, jiné výrazy | ||||
Operátory: |
aritmetické: |
^ |
umocňování |
|
|
|
|
* |
násobení |
||
|
|
/ |
dělení |
||
|
|
+ |
sečítání |
||
|
|
- |
odečítání |
||
|
relační: |
= = |
rovno |
||
|
|
!= |
nerovno |
||
|
|
> |
větší než |
||
|
|
< |
menší než |
||
|
|
> = |
větší nebo rovno |
||
|
|
< = |
menší nebo rovno |
||
|
logické: |
& |
logický součin (AND) |
||
|
|
¦ |
logický součet (OR) |
||
|
|
! |
negace (NOT) |
Priority při vyhodnocování výrazů: |
1. |
standardní matematické funkce |
|
|
2. |
negace |
|
|
3. |
umocňování |
|
|
4. |
násobení, dělení |
|
|
5. |
sečítání, odečítání |
|
|
6. |
relační operace |
|
|
7. |
logický součin, logický součet |
Změna priorit je možná pomocí závorek. Jsou přípustné pouze kulaté závorky ( ) , které je však možné vkládat do sebe do libovolné hloubky. Výsledkem relačních nebo logických operací je hodnota 1 (je-li výraz pravdivý) nebo 0 (je-li výraz nepravdivý); je to hodnota číselná a lze ji tedy používat i v aritmetických operacích.
STANDARDNÍ MATEMATICKÉ FUNKCE (výběr):
funkce |
význam |
argument |
výsledek |
SIN(x) |
sinus |
radiány |
<-1,+1> |
CON(x) |
kosinus |
radiány |
<-1,+1> |
TAN(x) |
tangens |
radiány |
(-Ą,+Ą) |
ASIN(x) |
arkussinus |
<-1,+1 > |
<-p/2,+p/2> |
ACOS(x) |
arkuskosinus |
<-1,+1 > |
<0, p> |
ATAN(x) |
arkustangens |
(-Ą ,+Ą) |
<-p/2,+p/2> |
EXP(x) |
exponenciála ex |
(-Ą,+Ą) |
>0 |
LN(x) |
přiirozený logaritmus |
>0 |
(-Ą,+Ą) |
LOG(x) |
dekadický logaritmus |
>0 |
(-Ą,+Ą) |
ABS(x) |
absolutní hodnota |
(-Ą,+Ą) |
<0,+Ą) |
FIX(x) |
celá část x (odřízne desetinnou část) |
(-Ą,+Ą) |
(-Ą,+Ą) |
SIGN(x) |
signum x (-1 pro x<0, 0 pro x=0, +1 pro x>0) |
(-Ą,+Ą) |
-1, 0, +1 |
SQRT(x) |
druhá odmocnina |
(0,+Ą) |
(0,+Ą) |
MOD(x,z) |
zbytek po dělení x/z |
|
|
MAX(x,z) |
větší z hodnot x,z |
|
|
MIN(x,z) |
menší z hodnot x,z |
|
|