Table 17.7-1 Notation for concentrations
>  restart;
>  ncom:=3;
>  rho:=array(1...ncom);  One of many vectors of ncom elements: the mass density of each species: A
>  rhotot:=sum(rho[i],i=1..ncom);  Definition B for the total mass density
Here are the vectors of mass fractions, molecular weights and molar densities
>  omega:=array(1...ncom); MW:=array(1...ncom);c:=array(1...ncom); 
>  for k from 1 to ncom do rho[k]:=c[k]*MW[k] od;  Definition I: mass density is the molar density times the molecular weight
>  for k from 1 to ncom do omega[k]:=rho[k]/rhotot od;  Definition C of mass fractions
>  ctot:=sum(c[i],i=1..ncom);  The total molar density: E
>  x:=array(1...ncom);  The mol fraction vector
>  for k from 1 to ncom do x[k]:=c[k]/ctot od;  Definition F of mol fractions  
>  M:=rhotot/ctot;  The mean molecular weight of the mixture: G
>  simplify(sum(x[i],i=1...ncom));  Showing J: the sum of the mol frations is one
[Maple Math]
>  simplify(sum(x[i]*MW[i],i=1..ncom)-M);  Showing L: another way to get the mol weight M
[Maple Math]
>  simplify(sum(omega[i],i=1..ncom));  Showing K: the mass fractions also add up to 1
[Maple Math]
>  simplify(x[1]-(omega[1]/MW[1])/sum(omega[i]/MW[i],i=1...ncom));  Showing N: one relation between mass fractions and molfractions
[Maple Math]
>  x[1];  x[1] depends on c[1], c[2]...c[ncom]
[Maple Math]
>  omega[1];  So does the mol fraction as long as the mol weights are fixed
[Maple Math]
>  dx:=array(1...ncom);domeg:=array(1...ncom); These will be used to hold differentials of x and omega

>  for k from 1 to ncom do
>   dx[k]:=diff(x[k],c[1]);
>   domega[k]:=diff(omega[k],c[1]);
>  od;
>  simplify(sum(dx[m],m=1...ncom));simplify(sum(domega[m],m=1...ncom));
[Maple Math] [Maple Math]
>  eqP:=simplify(-M^2/MW[1]*sum((1/M+omega[1]*(1/MW[j]-1/MW[1]))*domega[j],j=2...ncom)); Enrty P in the Table
[Maple Math]
>  simplify(dx[1]-eqP);
[Maple Math]