欢迎光临散文网 会员登陆 & 注册

化学反应式配平(整数规划的应用)

2022-12-02 14:38 作者:卢朓  | 我要投稿

【北太天元软件上做化学反应式的配平】 https://www.bilibili.com/video/BV1cv4y1o7Xi/?share_source=copy_web&;vd_source=2adc5aa7a702b808eb8b31dbd210f954

北太天元数值计算通用软件的脚本如下: 

%化学反应

% 4K4Fe(CN)6 + 30KMnO4 + 82H2SO4 → 46KHSO4 + 2Fe2(SO4)3 + 30MnSO4 +24HNO3 + 24CO2 + 47H2

% 假设我们不知道上面的化学反应式的系数,该如何求呢?

% 这是一个化学反应式配平的问题。

% 如何配平上面的化学反应式,需要求的正整数解,而且整数解是不唯一的,

% 要求最小的那个正整数解

% 北太天元数值计算通用软件上的脚本


load_plugin("optimization");

opts = struct();

opts.Display = 'off';


% K4Fe(CN)6+KMnO4+H2SO4 → KHSO4+Fe2(SO4)3+MnSO4+HNO3+CO2+H2


%系数总共有 9 , 我们的目标函数设定为这个9个系数之和,

f = ones(1,9);


% 化学元素包括

%     K F C N M H S O

X1 = [4 1 6 6 0 0 0 0]

X2 = [1 0 0 0 1 0 0 4]

X3 = [0 0 0 0 0 2 1 4]

Y1 = [1 0 0 0 0 1 1 4]

Y2 = [0 2 0 0 0 0 3 12]

Y3 = [0 0 0 0 1 0 1 4]

Y4 = [0 0 0 1 0 1 0 3]

Y5 = [0 0 1 0 0 0 0 2]

Y6 = [0 0 0 0 0 2 0 0]


A = [X1',X2',X3']  % 左边

b = [-Y1',-Y2',-Y3',-Y4',-Y5',-Y6'] %右边


AA = sparse([A,b]);

rl = 0;

ru = 0;


cl = 1;

cu = [];



intcon = [1:9]

% intcon表示这9个决策变量均取整数

%整数规划

[x,fval] = intlinprog_hgs(f,intcon,AA,rl,ru,cl,cu,opts)



化学反应式配平(整数规划的应用)的评论 (共 条)

分享到微博请遵守国家法律