Matlab函数错误

时间:2014-02-02 18:46:22

标签: matlab

我是matlab的新手,正在研究一些例子,我有代码:

function [T,Y] = heun(f,a,b,ya,m)
h = (b - a)/m;
T = zeros(1,m+1);
Y = zeros(1,m+1);
T(1) = a;
Y(1) = ya;
for j=1:m,
    k1 = feval(f,T(j),Y(j));
    p  = Y(j) + h*k1;
    T(j+1) = a + h*j;
    k2 = feval(f,T(j+1),p);
    Y(j+1) = Y(j) + h*(k1 + k2)/2;
end

获自:http://www.mathworks.co.uk/matlabcentral/fileexchange/2181-numerical-methods-using-matlab-2e/content/edition2/matlab/chap_9/heun.m

我得到的错误“heun”需要更多的输入参数才能运行,它保存为名为heun的m文件,我正在尝试将此方法用于不同的问题,但无法让这个代码工作,任何人都可以帮助

3 个答案:

答案 0 :(得分:1)

确保使用5个输入参数调用heun()。在您显示的代码中,a,b,ya,m是heun()期望接收的5个数量。

答案 1 :(得分:1)

问题不在于您向我们展示的代码,而在于您使用它的方式

您是否可以从您提供的链接中看到,

% Sample call
%   [T,Y] = heun('f',a,b,ya,m)
% Inputs
%   f    name of the function
%   a    left  endpoint of [a,b]
%   b    right endpoint of [a,b]
%   ya   initial value
%   m    number of steps
% Return
%   T    solution: vector of abscissas
%   Y    solution: vector of ordinates

要使用此功能,您需要为其提供5 输入参数。除非您向我们展示调用heun的代码,否则我们无法执行任何操作。

答案 2 :(得分:0)

好吧,我认为在Matlab中对函数的使用有一些基本的误解。 如果我举例说明你如何使用你的功能,也许你能理解这个问题。

1-将上面发布的函数保存到名为heun.m

的新Matlab函数**中

2-编写您想要评估的功能。如果您想使用Heun的方法,您应该熟悉该函数的意义......该函数需要有两个输入参数并返回一个输出参数。可以将其描述为 out = myFunction(in1,in2)

3-将您的函数作为Matlab函数**保存到与heun.m相同的目录中,并将其命名为例如myFunction.m

4-现在您创建一个新的Matlab脚本**并根据需要为其命名。在这个脚本中你可以调用你的函数heun.m(它本身用你的函数myFunction来计算...)。您可以使用以下行来调用heun.m:

f = @myFunction; % or: f = 'myFunction';
a = -2;
b = 3;
ya = 2;
m = 4;

[T,Y] = heun(f, a, b, ya, m);

顺便说一下:@myFunction在这种情况下是一个函数句柄。您可以在mathworks主页上找到更多信息,或者使用我撰写的备选方案作为评论。

**我希望你知道Matlab脚本和Matlab函数之间的基本区别。如果没有看看这些页面: http://www.mathworks.de/de/help/matlab/matlab_prog/create-scripts.html http://www.mathworks.de/de/help/matlab/matlab_prog/scripts-and-functions.html

功能,功能,功能......好吧,尽管经常使用“功能”一词,但我希望能提供帮助。