化學反應式配平(整數(shù)規(guī)劃的應用)
【北太天元軟件上做化學反應式的配平】 https://www.bilibili.com/video/BV1cv4y1o7Xi/?share_source=copy_web&vd_source=2adc5aa7a702b808eb8b31dbd210f954
北太天元數(shù)值計算通用軟件的腳本如下:?
%化學反應
% 4K4Fe(CN)6 + 30KMnO4 + 82H2SO4 → 46KHSO4 + 2Fe2(SO4)3 + 30MnSO4 +24HNO3 + 24CO2 + 47H2
% 假設我們不知道上面的化學反應式的系數(shù),該如何求呢?
% 這是一個化學反應式配平的問題。
% 如何配平上面的化學反應式,需要求的正整數(shù)解,而且整數(shù)解是不唯一的,
% 要求最小的那個正整數(shù)解
% 北太天元數(shù)值計算通用軟件上的腳本
load_plugin("optimization");
opts = struct();
opts.Display = 'off';
% K4Fe(CN)6+KMnO4+H2SO4 → KHSO4+Fe2(SO4)3+MnSO4+HNO3+CO2+H2
%系數(shù)總共有 9 , 我們的目標函數(shù)設定為這個9個系數(shù)之和,
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個決策變量均取整數(shù)
%整數(shù)規(guī)劃
[x,fval] = intlinprog_hgs(f,intcon,AA,rl,ru,cl,cu,opts)