Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Octave 示例程序中未定义变量的问题_Octave - Fatal编程技术网

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

Octave 示例程序中未定义变量的问题,octave,Octave,我刚接触Octave,发现了一篇有趣的文章()。我复制了代码开始玩它,但我无法解决问题:错误:第29行第12列附近的“x”未定义 错误:从调用 第29行第4列处的diproticbuffer 第2行第1列的solvediproticbuffer solvediproticbuffer 你能帮帮我吗 function [y] = diproticbuffer(x) global c0; global pK; c0 = 10.^(-x); y(1) = 1.0-(x(4)+x(1)-x(3))/pK

我刚接触Octave,发现了一篇有趣的文章()。我复制了代码开始玩它,但我无法解决问题:错误:第29行第12列附近的“x”未定义 错误:从调用 第29行第4列处的diproticbuffer 第2行第1列的solvediproticbuffer 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中,然后将另一个代码放在solvediproticbuffer.m中,如第节所述

在diproticbuffer函数中,您有一个键入c0的错误,它不在原始代码中

同时从solvediproticbuffer.m中删除“source”行


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

代码的前半部分,直到空行,应该位于名为
diproticbuffer.m
的文件中。这是一个函数。其余的应该是一个脚本文件,具有您想要的任何名称。运行脚本文件。@CrisLuengo不确定他们为什么选择在主代码中“导入”函数而不是仅仅使用它,因为diproticbuffer函数中还有一个未定义的变量“c”-一个在原始代码中没有c0的打字错误