Berechnung mit SingularDurch symbolische Manipulationen werden aus gegebenen Eingangsdaten (Molekulargewichte, Temperatur, Ausgangskonzentrationen) die Gleichungen in einem Ring mit langen "Floats" automatisch generiert. Die Gleichungen werden durch ein global konvergentes Newtonferfahren berechnet. Danach sind die chemischen Aktivitäten der Ausgangsstoffe leicht zu ermitteln. Lade benötigte Biblioteken
LIB "glas.lib"; // Prozeduren: gemischsnamen, createchemkoeff, // gleichungen, konzplus, getstart LIB "ntsolve.lib"; // Prozedur: nt_solve Eingabe der Daten
// Bezeichnung der Ausgangsstoffe list n="C","M","A","S"; // Matrix der Molekulargewichte der Verbindungen intmat vb[4][16]= 1,2,0,3,12,1,1,1,2,0,1,0,0,0,2,1, 0,0,0,0, 0,0,0,0,0,2,1,1,2,1,1,1, 0,0,3,1, 7,2,6,1,1,2,0,0,0,1,0,0, 1,1,2,0, 0,0,0,2,1,5,2,1,1,0,2,1; // Temperatur T (in Grad Kelvin) number T=1273; // Quasipotentiale der Ausgangsstoffe vector Gb=[710.32,632.11,1832.41,1014.23]; // Quasipotentiale der Verbindungen vector Gv=[1809.47,2614.19,7538.19,4066.45,21839.93, 4446.45,11777.19,4704.59,4462.73,10137.22, 3543.27,1702.53,2399.79,2470.85,4365.37, 2536.67]; // Ausgangkonzentrationen vector z=[0.1,0.25,0.4,0.25]; Automatische symbolische Modellgenerierung
// generiere geeignete Bezeichner der Unbekannten string namen=gemischsnamen(n,vb); // bilde den Ring string rr="ring gemisch=(real,30),("+namen+",Mol),(c,dp);"; execute(rr); // generiere die (transformierten) Gleichungen int trans=2; // Potenz der Transformation vector Ch=createchemkoeff(trans,T,Gb,Gv,vb); ideal gl=gleichungen(trans,Ch,vb); gl=homog(gl,Mol); ideal in=konzplus(gl,z); Lösung mit SINGULAR
// bilde (heuristische) Startwerte ideal st=getstart(16,0.001,z); // Verfahrensparameter intvec pp=100,15,0; // Lösung durch automatisch gedämpftes Newton Verfahren ideal aa=nt_solve(in,st,pp); // aa enthält die Lösungen |
|
|
|
Karlsruhe | http://www.singular.uni-kl.de/ |