pulisco la memoria; ogni istruzione è terminata da un ";" o da un "$". 
Uso il primo quando desidero un output di riscontro/controllo.

kill( all );

schema statico [incollato con "ctrl-V" dopo averlo copiato da un editor di immagini]

definisco le variabili letterali associate a quote e azioni note
Il "$" chiude l'istruzione senza richiedere un output di riscontro.
Più istruzioni possono essere inserite in una singola "cella".

lAB:25 $    lBC:70 $    lCD:15 $    lDE:50 $

FA :95 $ MC :5000 $ FE :145$

scrivo l'equazione di equilibrio alla rotazione rispetto al polo D e assegno tale espressione al simbolo/nome/variabile eq_rot_D con l'istruzione ":"

eq_rot_D:+FA*(lAB+lBC+lCD)-YB*(lBC+lCD)-MC+YD*0+FE*lDE=0;

in particolare la sintassi è

questonome : questaespressione ;

nella valutazione di tutte le successive espressioni, ad ogni "questonome" verrà sostituito (immaginate un inserimento al posto di) il risultato della valutazione di "questaespressione", ossia l'output a schermo della operazione di assegnazione. 
Ripeto: "questaespressione" viene valutata, e il risultato della valutazione viene assegnato.
Ad esempio:

miocoseno : cos(%pi/3); 

prima valuta cos(%pi/3) come 1/2, e poi assegna 1/2 a miocoseno.

procedo alla soluzione dell'equazione (o sistema di equazioni) utilizzando l'istruzione linsolve.

linsolve( eq_rot_D , YB ), globalsolve=true;

questa prende come primo argomento un'equazione (o una lista di equazioni), 
e come secondo argomento un'incognita (o una lista di incognite). 
Le liste di oggetti si costruiscono utilizzando parentesi QUADRE e la virgola come separatore, es
[ x+y=1 , x-2*y=0 ] 
è una lista di due equazioni e
[ x , y ]
è una lista di due incognite. 
La spaziatura e l'eventuale suddivisione su più righe sono puramente cosmetiche. 

l'appendice ", globalsolve=true" varia il comportamento del linsolve, che procede ad ASSEGNARE alle incognite il valore soluzione. Normalmente NON lo fa e restituisce solamente una lista di identità tipo
[x=2/3,y=1/3]

richiedo quindi una valutazione numerica dell'espressione "YB" a cui ora è assegnato il valore che risolve l'equazione di equilibrio

YB,numer;

procedo con l'equazione di equilibrio alla rotazione rispetto a B; non è necessario associare per forza un simbolo all'espressione dell'equazione e per mostrarlo scrivo direttamente

linsolve( 
    +95*(25)
    +YB*(0)
    -5000
    +YD*(15+70)
    +145*(50+15+70),
    YD
) , globalsolve=true;

procedo quindi col la valutazione numerica di YD

YD,numer;

per controllo, verifico sussista l'equilibrio alla traslazione verticale.
la seguente espressione deve essere nulla

-FA+YB+YD+FE;

procedo quindi con la valutazione dei vari momenti flettenti, considerando l'equilibrio alla rotazione della porzione di trave compresa tra l'estremo sinistro e il baricentro della sezione in esame e utilizzando come polo tale baricentro.
Utilizzo come convenzione Mf>0 se ho fibre tese INFERIORI.

MfA:0$

MfB: - FA*lAB;

in corrispondenza di C il momento flettente presenta una discontinuità "di prima specie", valuto quindi i valori limite provenendo da sinistra e da destra 

MfC_da_sx : -FA*(lAB+lBC)+YB*lBC;
%,numer;

questo non mi fido a farlo a occhio, costruisco l'equazione di equilibrio e la risolvo

linsolve( +FA*(lAB+lBC)-YB*lBC-MC+MfC_da_dx=0,MfC_da_dx),globalsolve=true;
MfC_da_dx,numer;

similmente procedo per D

linsolve( +FA*(lAB+lBC+lCD)-YB*(lBC+lCD)-MC+MfD=0,MfD),globalsolve=true;
MfD,numer;

e per E; quest'ultimo dato è solo di controllo in quanto so a priori che il momento flettente in E deve essere nullo

linsolve( +FA*(lAB+lBC+lCD+lDE)-YB*(lBC+lCD+lDE)-MC-YD*lDE+MfE=0,MfE),globalsolve=true;
MfE,numer;

fatto.