matlab中的函数调用问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 11:30:10
我在M-file下编写了一下程序
f.m
function f=f(x,y);
f=-y+x+1;
然后保存在work目录下
但是我调用时
我打[x,y]=euler('f',0,1,1)
他显示错误如下

Warning: EULER is obsolete and will be eliminated in future versions. Use SIM instead.
> In E:\matlab\toolbox\simulink\simulink\euler.m at line 15
Warning: Unable to open model file 'f.mdl'.
> In E:\matlab\toolbox\simulink\simulink\euler.m at line 63
??? Error using ==> sim
Unable to load block diagram 'f'.

Error in ==> E:\matlab\toolbox\simulink\simulink\euler.m
On line 63 ==> [t_cp2wksp,x_cp2wksp,y_cp2wksp] = sim(sys, time, simOptions, ut, varargin{:});

还有我编写了fc.m
function y=fc(x)
y(1)=x(1)-0.7*sin(x(1))-0.2*cos(x(2));
y(2)=x(2)-0.7*cos(x(1))+0.2*sin(x(2));
y=[y(1) y(2)];保存在work下
然后输入x0=[0.5 0.5];
>> fsolve('fc',x0)
他显示错误如下Warning: Cannot

第一个已将说明乐,euler过时了,在本版中背删掉。
第二个,你的函数明显没有end,加上去,不要y=[y(1) y(2)],这是多余的。
运行得:
>> x0=[0.5 0.5];
>> fsolve('fc',x0)
Optimization terminated: first-order optimality is less than options.TolFun.

ans =

0.5265 0.5079

euler是在simulink中对模块进行操作的吧,不是用来对程序进行操作的.你不知道什么是模块,那要说清楚很难咯.

既然编写了函数
你完全可以直接用你的函数名求解啊
比如上面的就直接调用f()
但是要记住
保存的时候必须保存名和函数名一致

我觉得你想调用你写入函数的文件时,应用@,如fsolve(@fc,x0),而不是像你写的那样:fsolve('fc',x0)