#include "stdio.h"
#include "math.h"
double funr(double x[3])
{
double W[3][3]={{1.0,1.1816,0.52297},{0.71891,1.0,0.50879},{0.57939,0.94513,1.0}};
/***50℃时各两组分溶液的无限稀释活度系数回归得到Wilson常数储存在 W 数组中***/
int a[3];
double sum=0.0,sum1=0.0,sum2=0.0,sum3=0.0;
int i,j,k;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
sum1+=x[j]*W[i][j];
for(k=0;k<3;k++)
{for(j=0;j<3;j++)
sum3+=x[j]*W[k][j];
sum2+=x[k]*W[k][i]/sum3,sum3=0;
}
sum=1-log(sum1)-sum2;
sum1=0,sum2=0;
a[i]=pow(2.7182818,sum);
}
return &a;
}
void main()
{
double ps[3]={78.049,81.818,55.581};
/***50℃时各纯组分的饱和蒸气压,kPa***/
double VL[3]={83.77,76.81,42.05};
/***50℃时各纯组分的液体摩尔体积,cm3/mol***/
double x[3]={0.33,0.34,0.33};
/***组分初值***/
double r[3];
int i,*p;
p=funr(double x[3]);
for(i=0;i<3;i++)
r[i]=*p,p++;
for(i=0;i<3;i++)
printf("%10.5lf",r[i]);
}
#include "math.h"
double funr(double x[3])
{
double W[3][3]={{1.0,1.1816,0.52297},{0.71891,1.0,0.50879},{0.57939,0.94513,1.0}};
/***50℃时各两组分溶液的无限稀释活度系数回归得到Wilson常数储存在 W 数组中***/
int a[3];
double sum=0.0,sum1=0.0,sum2=0.0,sum3=0.0;
int i,j,k;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
sum1+=x[j]*W[i][j];
for(k=0;k<3;k++)
{for(j=0;j<3;j++)
sum3+=x[j]*W[k][j];
sum2+=x[k]*W[k][i]/sum3,sum3=0;
}
sum=1-log(sum1)-sum2;
sum1=0,sum2=0;
a[i]=pow(2.7182818,sum);
}
return &a;
}
void main()
{
double ps[3]={78.049,81.818,55.581};
/***50℃时各纯组分的饱和蒸气压,kPa***/
double VL[3]={83.77,76.81,42.05};
/***50℃时各纯组分的液体摩尔体积,cm3/mol***/
double x[3]={0.33,0.34,0.33};
/***组分初值***/
double r[3];
int i,*p;
p=funr(double x[3]);
for(i=0;i<3;i++)
r[i]=*p,p++;
for(i=0;i<3;i++)
printf("%10.5lf",r[i]);
}