我在matlab中将这些简单的代码写在单独的文件中。 当我运行此程序时,我收到此消息:
???尝试将SCRIPT ode15s作为函数执行:
d:\应用\ ode15s.m
==>中的错误ode15s at 2
[T,Y] = ode15s(@difdif,[0 40],[1 0 0]);
问题是什么。
««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
clc
[T,Y] = ode15s(@difdif,[0 40],[1 0 0]);
%plot(T,Y(:,3),'-o')
plot(T,Y(:,1),'-',T,Y(:,2),'-o',T,Y(:,3),'.')
«««««««««««««««««««««««««««««««««««««««««««««««««««
function dy = difdif(t,y)
dy = zeros(3,1); % a column vector
dy(1) =-0.04*y(1)+10^4*y(2)*y(3);
dy(2) = 0.04*y(1)-10^4*y(2)*y(3)-3*10^7*y(2)^2;
dy(3) = 3*10^7*y(2)^2;
end
答案 0 :(得分:2)
Why do I receive the error "Attempt to execute SCRIPT FILENAME as a function"?处理您的问题。 D:\app\ode15s.m
可能是一个自制脚本,首先出现在MATLAB搜索路径中。内置ode15s.m
的MATLAB不会按预期调用。更改MATLAB搜索路径中的顺序或重命名D:\app\ode15s.m
。
引用解决方案:which ode15s -all
向您显示搜索路径上的所有实例。
答案 1 :(得分:0)
您将脚本命名为ode15s
,其名称与内置函数相同。当matlab尝试执行ode15s(@difdif,[0 40],[1 0 0])
时,它会找到脚本,而不是内置函数。重命名脚本。