示例程序中的问题未定义变量

问题描述

我是Octave的新手,并且找到了一篇有趣的文章http://article.journalofchemicaleducation.com/pdf/wjce-3-6-1.pdf)。我复制了代码以开始使用它,但是我无法解决这个问题:错误:第29行第12列附近未定义'x' 错误:来自 第29行第4列的diproticbuffer 第2行第1列的solvediproticbuffer 已解决的质子缓冲液。

能请你帮我吗?

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中,然后将其他代码放置在artical中指定的SolvedIproticbuffer.m中。

在diproticbuffer函数中,您有一个错字,其c0不在原始代码中。

还要从solvediproticbuffer.m中删除“源”行

然后运行solvediproticbuffer应该可以工作。