在Matlab中以符号函数作为参数调用函数

时间:2018-09-19 05:58:33

标签: matlab function

我编写了以下Matlab函数:

function EulerMethod(t_min,t_max,h,f,Y,yzero)

tlist = t_min:h:t_max;

N = (t_max - t_min)/h;

ylist = transpose(zeros(N+1,1));

ylist(1) = yzero; 

for i=1:N
    term = f(tlist(i),ylist(i))*h;
    ylist(i+1) = ylist(i) + term;
end

yrange = Y(tlist);

% modified to generate a new figure window each time.
figure;

plot(tlist,yrange,'red','LineWidth', 2);
hold;
plot(tlist,ylist,'blue','LineWidth', 2);
plot(tlist, abs(yrange - ylist),'magenta','LineWidth', 2)

% modified to wrap the title.
title({'Graphs of the True Solution, Euler Solution,', 'and the Absolute Value of the Global Error (GE)'})
xlabel('t')
ylabel('Y(t)')

legend({'True Solution','Euler Solution', 'Absolute Value of the GE'},'Location','southwest')

end 

我现在尝试在另一个脚本中调用此函数。函数中的变量fY是符号函数。因此,在另一个文件中,我首先在调用此函数之前声明这些函数。这是代码:

clc

syms f(t,y)
syms Y(t)

f(t,y) = -y + 2.0*cos(t); %This the derivative of the function whose solution we're trying to computed
Y(t) = sin(t) + cos(t); %This is the true solution;

% Calling function

EulerMethod(0.0, 6.0, 0.2, f, Y, 1.0);

但是,运行第二个脚本时出现错误。谁能帮助我找出问题所在?我怀疑这可能是因为我同时输入和使用了符号函数fY的方式,但是我不确定。

0 个答案:

没有答案