试图实现Richardson的推断 - 基本语法辅助

时间:2016-11-11 04:25:04

标签: matlab

我到目前为止有以下

    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,使它成为我写的东西?

1 个答案:

答案 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);