示例程序中的问题未定义变量
problem undefined variable in sample program
我是 Octave 的新手,发现了一篇有趣的文章 (http://article.journalofchemicaleducation.com/pdf/wjce-3-6-1.pdf)。我复制了代码开始玩它,但我不喜欢这个问题:错误:'x' undefined near line 29 column 12
错误:调用自
第 29 行第 4 列的双质子缓冲液
solvediproticbuffer 在第 2 行第 1 列
解决了二质子缓冲区。
你能帮帮我吗
function [y] = diproticbuffer(x)
global c0;
global pK;
c0 = 10.^(-x);
y(1) = 1.0-(x(4)+x(1)-x(3))/pK(1);
y(2) = 1.0-(x(5)+x(1)-x(4))/pK(2);
y(3) = 1.0-(x(1)+x(2))/pK(3);
y(4) = 1.0-(c(5)+c(4)+c(3))/c0(1);
y(5) = 1.0-(c(2)+c(4)+2*c(5))/(c(1)+c0(2));
end
clear
source('diproticbuffer.m');
global c0;
c0 = [0.02; 0.015 ];
global pK;
pK = [3.46; 5.10; 14.0];
x0=[ 7; 7; 1.7; 8; 8 ];
[x, fval, info] = fsolve ('diproticbuffer', x0, optimset('TolFun',1.0E-8));
fprintf('Equilibrium concentrations\n');
fprintf('p[H+] = %8.4f->[H+] = %10.4E\n', x(1), 10^(-x(1)));
fprintf('p[OH-]= %8.4f->[OH-]= %10.4E\n', x(2), 10^(-x(2)));
fprintf('p[H2A]= %8.4f->[H2A]= %10.4E\n', x(3), 10^(-x(3)));
fprintf('p[HA-]= %8.4f->[HA-]= %10.4E\n', x(4), 10^(-x(4)));
fprintf('p[A2-]= %8.4f->[A2-]= %10.4E\n', x(5), 10^(-x(5)));
将函数 diproticbuffer 放在 diproticbuffer.m 中,然后将其他代码放在 solvediproticbuffer.m 中,如文章中所述。
在 diproticbuffer 函数中,您的 c0 有错别字,它不在原始代码中。
同时从 solvediproticbuffer.m
中删除 'source' 行
运行 solvediproticbuffer 应该可以工作了。
我是 Octave 的新手,发现了一篇有趣的文章 (http://article.journalofchemicaleducation.com/pdf/wjce-3-6-1.pdf)。我复制了代码开始玩它,但我不喜欢这个问题:错误:'x' undefined near line 29 column 12 错误:调用自 第 29 行第 4 列的双质子缓冲液 solvediproticbuffer 在第 2 行第 1 列 解决了二质子缓冲区。
你能帮帮我吗
function [y] = diproticbuffer(x)
global c0;
global pK;
c0 = 10.^(-x);
y(1) = 1.0-(x(4)+x(1)-x(3))/pK(1);
y(2) = 1.0-(x(5)+x(1)-x(4))/pK(2);
y(3) = 1.0-(x(1)+x(2))/pK(3);
y(4) = 1.0-(c(5)+c(4)+c(3))/c0(1);
y(5) = 1.0-(c(2)+c(4)+2*c(5))/(c(1)+c0(2));
end
clear
source('diproticbuffer.m');
global c0;
c0 = [0.02; 0.015 ];
global pK;
pK = [3.46; 5.10; 14.0];
x0=[ 7; 7; 1.7; 8; 8 ];
[x, fval, info] = fsolve ('diproticbuffer', x0, optimset('TolFun',1.0E-8));
fprintf('Equilibrium concentrations\n');
fprintf('p[H+] = %8.4f->[H+] = %10.4E\n', x(1), 10^(-x(1)));
fprintf('p[OH-]= %8.4f->[OH-]= %10.4E\n', x(2), 10^(-x(2)));
fprintf('p[H2A]= %8.4f->[H2A]= %10.4E\n', x(3), 10^(-x(3)));
fprintf('p[HA-]= %8.4f->[HA-]= %10.4E\n', x(4), 10^(-x(4)));
fprintf('p[A2-]= %8.4f->[A2-]= %10.4E\n', x(5), 10^(-x(5)));
将函数 diproticbuffer 放在 diproticbuffer.m 中,然后将其他代码放在 solvediproticbuffer.m 中,如文章中所述。
在 diproticbuffer 函数中,您的 c0 有错别字,它不在原始代码中。
同时从 solvediproticbuffer.m
中删除 'source' 行运行 solvediproticbuffer 应该可以工作了。