我是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
我得到的错误“heun”需要更多的输入参数才能运行,它保存为名为heun的m文件,我正在尝试将此方法用于不同的问题,但无法让这个代码工作,任何人都可以帮助
答案 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
功能,功能,功能......好吧,尽管经常使用“功能”一词,但我希望能提供帮助。