Matlab函数误差
我对matlab相当陌生,正在学习一些示例,我有以下代码:Matlab函数误差,matlab,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);
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文件,我正在尝试将此方法用于另一个问题,但无法使此代码正常工作。有人能帮忙吗?请确保使用5个输入参数调用heun()。在您显示的代码中,f、a、b、ya、m是heun()希望收到的5个数量。问题不在于您显示的代码,而在于您使用它的方式。 从你提供的链接中可以看到
% 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
的代码,否则我们无法执行任何操作 嗯,我认为对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函数之间的基本区别。如果没有,请查看以下页面:
功能,功能,功能。。。嗯,尽管“function”这个词经常被使用,但我希望我能有所帮助。这是因为m在任何地方都有定义吗?我不太清楚你的意思,当你调用函数时,你应该给它发送5个输入,如
heun(f,a,b,ya,m)
对不起,我对matlab相当陌生,你的意思是只在heun的两边加引号吗?编辑你的问题,展示你是如何调用heun的()现在。你能告诉我们你是如何使用这个函数的吗?好的,我想用这个方法绘制Y与T的图。我们不想对你“想要”的东西进行解释。我们希望您向我们展示用于执行heun()的命令。你是怎么做到的?让我们看看你写的那句话!我猜接下来的情节是(T,Y);