1. 關於精餾塔理論塔板數的計算
這個到底是什麼問題........
我這里倒是有HUFFMAN法的文件壓縮過程:
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#include<math.h>
struct htnode
{
char ch;
int weight,parent,lchild,rchild;
};
struct hc
{
char *code;
char word;
int size;
};
void select(struct htnode * ht,int n,int& s1, int& s2)
{
int small1=9999, small2=9999,i;
for(i=1;i<=n-1;i++)
{
if(ht[i].weight<small1&&ht[i].parent==0)
{
small1=ht[i].weight;
s1=i;
}
++i;
if(ht[i].weight<small2&&ht[i].parent==0)
{
small2=ht[i].weight;
s2=i;
}
}
}
void rece()
{
FILE *fpin,*fpout;
int cut[32768];
int i,k;
char flag;
double j=0;
for(i=0;i<=32768;i++)
cut[i]=0;
fpin=fopen("code.txt","r");
fpout=fopen("rece.txt","wb");
i=0;
while(fread(&flag,sizeof(char),1,fpin))
{
if(flag=='1')
{
cut[i]=(cut[i])|(int)(pow(2,(14-j)));
}
j=j+1;
if(j==15)
{
j=0;
i++;
}
}
for(k=0;k<=i;k++)
{
fwrite(&cut[k],sizeof(int),1,fpout);
}
printf("\n");
fclose(fpin);
fclose(fpout);
}
void unrece()
{
FILE *fpin;
fpin=fopen("rece.txt","r");
double j=0;
int flag,uncut[32768],k=0,i;
while(fread(&flag,sizeof(int),1,fpin))
{
for(j=0;j<=14;j=j+1)
if(flag&(int)(pow(2,(14-j))))
uncut[k++]=1;
else
uncut[k++]=0;
}
for(i=0;i<k-15;i++)
printf("%d",uncut[i]);
fclose(fpin);
}
void translate(struct hc *hcc,int n)
{
int i,j,k;
FILE *fpin,*fpout;
char text[32767];
for(k=0;k<32767;k++)
text[k]='\0';
k=0;
fpin=fopen("code.txt","r");
fpout=fopen("translate.txt","w");
while(!feof(fpin))
{
text[k++]=fgetc(fpin);
for(i=1;i<=n;i++)
if(strcmp(text,hcc[i].code)==0)
{
fprintf(fpout,"%c",hcc[i].word);
for(j=0;j<k;j++)
text[j]='\0';
k=0;
}
}
fclose(fpin);
fclose(fpout);
}
void huffmancodeing(int w[32768],char word[32767],int n,char text[32767])
{
FILE *fp,*fpp;
fp=fopen("huffmancode.txt","w");
struct hc *hcc;
char *cd;
int i,c,f,start,k=0,s1,s2;
struct htnode *ht;
int m=2*n-1;
if(n<=1) return;
ht=(struct htnode *)malloc(sizeof(struct htnode)*(m+1));
for(i=1;i<=n;i++)
{
ht[i].ch=word[i-1];
ht[i].parent=0;
ht[i].lchild=0;
ht[i].rchild=0;
ht[i].weight=w[ht[i].ch];
}
for(i=1;i<=n;i++)
printf("%c,%d",ht[i].ch,ht[i].weight);
printf("\n");
for(i=n+1;i<=m;i++)
{
ht[i].ch=word[i-n];
ht[i].parent=0;
ht[i].lchild=0;
ht[i].rchild=0;
ht[i].weight=0;
}
for(i=n+1;i<=m;i++)
{
select(ht,i-1,s1,s2);
ht[s1].parent=i;
ht[s2].parent=i;
ht[i].lchild=s1;
ht[i].rchild=s2;
ht[i].weight=ht[s1].weight+ht[s2].weight;
}
hcc=(struct hc *)malloc((n+1)*sizeof(struct hc));
cd=(char *)malloc(n*sizeof(char));
cd[n-1]='\0';
for(i=1;i<=n;i++)
{
start=n-1;
for(c=i,f=ht[i].parent;f!=0;c=f,f=ht[f].parent)
if(ht[f].lchild==c)
cd[--start]='0';
else cd[--start]='1';
hcc[i].code=(char *)malloc((n-start)*sizeof(char));
strcpy(hcc[i].code,&cd[start]);
hcc[i].word=ht[i].ch;
hcc[i].size=n-start-1;
}
free(cd);
for(i=1;i<=n;i++)
fprintf(fp,"%c:%s",hcc[i].word,hcc[i].code);
fclose(fp);
fpp=fopen("code.txt","wb");
while(text[k]!='\0')
{
for(i=1;i<=n;i++)
if(text[k]==hcc[i].word)
{
fwrite(hcc[i].code,sizeof(char)*hcc[i].size,1,fpp);
}
k++;
}
fclose(fpp);
for(i=1;i<=n;i++)
printf("%c:%s\n",hcc[i].word,hcc[i].code);
translate(hcc,n);
rece();
unrece();
}
void main()
{
FILE *fpin;
char file[20];
printf("請輸入要壓縮的文件名\n");
gets(file);
fpin=fopen(file,"r");
int w[32768],i,j,k,m=0,flag,n=0;
for(i=0;i<=32767;i++) w[i]=0;
i=k=0;
char ch,word[32768],text[32768],code[32768];
while(!feof(fpin))
code[m++]=fgetc(fpin);
fclose(fpin);
code[--m]='\0';
m=0;
while(code[m])
{
ch=code[m];
m++;
text[k++]=ch;
flag=0;
w[ch]++;
for(j=0;j<=32767;j++)
if(word[j]==ch)
flag=1;
if(flag==0)
{
word[i]=ch;
n++;
i++;
}
}
word[i]='\0';
text[k]='\0';
huffmancodeing(w,word,n,text);
}
2. 何謂理論板確定塔的理論板數方法有哪幾種
馬丁(Martin)和來欣革(Synge)最早提出源塔板理論,將色譜柱比作蒸餾塔,把一根連續的色譜柱設想成由許多小段組成。在每一小段內,一部分空間為固定相占據,另一部分空間充滿流動相。組分隨流動相進入色譜柱後,就在兩相間進行分配。並假定在每一小段內組分可以很快地在兩相中達到分配平衡,這樣一個小段稱作一個理論塔板(theoretical plate),一個理論塔板的長度稱為理論塔板高度(theoretical plate height)H。經過多次分配平衡,分配系數小的組分,先離開蒸餾塔,分配系數大的組分後離開蒸餾塔。由於色譜柱內的塔板數相當多,因此即使組分分配系數只有微小差異,仍然可以獲得好的分離效果。
3. 常減壓蒸餾塔 的理論塔板數演算法由於自己自己基礎比較差,所有請告訴一個比較簡單的從頭到尾的計算方法。
要逐板計算理論塔板數,你得有這么幾個數據:(1)餾出液組成,即xd;(2)進料液組成,即xf;(3)餾殘液組成,即xw;(4)迴流比R以及相對揮發度a。
在精餾塔中,Xn和Yn是一對平衡,Xn和Yn+1是同一塔板上的一對氣液組成。氣液平衡組成滿足氣液平衡方程,可根據該方程由Yn算出Xn;同一塔板上的氣液組成分別滿足精餾段操作線方程和提餾段操作線方程,可根據這兩個方程由Xn算出Yn+1;然後由Yn+1算Xn+1(氣液平衡),Xn+1算Yn+2(操作線),以此類推即可分別算出精餾段理論塔板數和提餾段理論塔板數。其中,精餾段算至x接近Xf為止,提餾段算至x接近Xw為止。所得到的Y的下標即為理論塔板數。因為塔底再沸器是部分氣化,相當於一塊塔板,所以最後的理論塔板數要減1。例如,精餾段塔板數:第一步,因為已知Y1(即Xd),所以可由氣液平衡方程,由y1計算x1;第二步,由精餾段操作線方程,由x1計算y2;然後重復第一步和第二步,分別算出x2和y3;以此類推計算至Xn=Xf為止,可得精餾段理論塔板數;提餾段理論塔板數的計算與精餾段類似,只不過是從Xf開始,先根據提餾段操作線方程算其同層氣相組成Ym,然後由Ym根據氣液平衡算Xm。
希望對你有所幫助。
4. 用EXCEL做精餾塔理論塔板數
給你I個現成的
5. 什麼叫理論塔板數
理論塔板數n=柱長L/理論塔板高度H
塔板理論:馬丁(Martin)和欣革(Synge)最早提出塔板理論,將回色譜柱比作蒸餾塔,答把一根連續的色譜柱設想成由許多小段組成。在每一小段內,一部分空間為固定相占據,另一部分空間充滿流動相。組分隨流動相進入色譜柱後,就在兩相間進行分配。並假定在每一小段內組分可以很快地在兩相中達到分配平衡,這樣一個小段稱作一個理論塔板(theoretical plate),一個理論塔板的長度稱為理論塔板高度(theoretical plate height)H。經過多次分配平衡,分配系數小的組分,先離開蒸餾塔,分配系數大的組分後離開蒸餾塔。由於色譜柱內的塔板數相當多,因此即使組分分配系數只有微小差異,仍然可以獲得好的分離效果。
6. 怎麼計算一個精餾塔的理論塔板數
如果你指的是一股進料的普通精餾塔,那麼精餾段塔板數是指從冷凝器以下那塊頂板開始往下數到進料板上的那塊為止。而提餾段指的則是進料板之下的塔板數
7. 精餾塔理論塔板數公式
1.與操作條件下的汽液平衡關系有關,或者說是與相對揮發度有關,平衡常數越大,或者說相專對揮發度越大,則所屬需理論板數越少. 2.與你的分離要求有關,你要求分離程度越高,則所需理論板數就越多. 3.與你設定的迴流比有關,迴流比越小,則所需理論板越多.。
8. 兩組分連續精餾塔所需理論塔板數的多少與什麼有關
1.與操作條件下的汽液平衡關系有關,或者說是與相對揮發度有關,平衡常數越大,或者內說相對揮發度越大容,則所需理論板數越少.
2.與你的分離要求有關,你要求分離程度越高,則所需理論板數就越多.
3.與你設定的迴流比有關,迴流比越小,則所需理論板越多.
9. 為什麼全迴流精餾時的理論塔板數最少
全迴流時精餾塔不加料,也不出料,兩操作線合二為一且與對角線重合,操作線方內程即為對角線容
yn+1=xn,這是全迴流的一個重要特點,即兩板之間任一截面上,上升蒸汽組成yn=1與下降液體組成xn相等。顯然,全迴流時操作線和平衡線的距離最遠,因此達到指定分離程度所需的理論板數最少。
在一般的精餾原理書或課件上都有詳細的解釋。