我到目前为止有以下
y = log(x);
% Ask user for input values for h and M
% M denotes the number of steps of the algorithm.
h = input('Input value h: ');
M = input('Input value M: ');
%Initialize an MxM matrix
D = zeros(M);
phi = (1/(2*h)) * (y(x+h) - y(x-h));
print(phi);
我收到了错误
使用symengine时出错(第58行)索引超出矩阵尺寸。
sym / subsref中的错误(第696行) B = mupadmex('symobj :: subsref',A.s,inds {:});
RE中的错误(第12行)phi =(1 /(2 * h))*(y(x + h) - y(x-h));
首先,我相信我应该收到关于x未定义的错误消息。其次,我不知道矩阵尺寸误差是什么。第三,也是最重要的一点,我如何声明函数phi,使它成为我写的东西?
答案 0 :(得分:0)
首先,我相信我应该收到关于x未定义的错误消息。
我猜测x是定义的,否则你会在定义phi的行上得到错误。要检查x是否已定义,请键入“who”或“whos”。
其次,我不知道矩阵维度错误是什么。
这很可能是因为y是标量,x + h等于某个非零的非零整数,并且您尝试访问y(x + h)。为了您自己的启发,请尝试将y设置为等于标量(例如,y = 5;)并通过以各种合法和非合法方式(例如y(1),y(0),y(3)对其进行索引来查看产生的错误),y(-1),y(1.5))。
第三,也是最重要的一点,我如何声明函数phi,使它成为我写的东西?
根据上下文,您希望将y定义为x而不是标量的函数。换句话说:
y = @(x)log(x);
phi = (1/(2*h)) * (y(x+h) - y(x-h));
将定义更改为上面的代码时,代码运行时没有错误。
您将遇到另一个错误:打印命令不是您要查找的内容 - 这会将图形打印到文件中。你可能正在寻找:
disp(phi);