MATLAB函数建立及最值问题

问题如下:我在命令窗口输入>>f=diff(x^2+2*x-3)f=2*x+2>>fmin('f',-2,4)提问:1、但是为何得不到结果?2、难道必须建立m函数吗?在命... 问题如下:我在命令窗口输入
>> f=diff(x^2+2*x-3)
f =2*x + 2
>> fmin('f',-2,4)
提问:
1、但是为何得不到结果?
2、难道必须建立m函数吗?在命令行不行吗?
3、建立函数有哪些方法?
不是很难回答的问题,高分悬赏哦。
展开
 我来答
springehome
2010-05-22 · TA获得超过1917个赞
知道小有建树答主
回答量:238
采纳率:100%
帮助的人:474万
展开全部
首先,新版本的matlab已经没有fmin函数了,已经换成fminsearch了。
其次,使用fminsearch函数[x,fval]= fminsearch(fun,x0)中fun必须是函数,你用的f不是函数,只是符号!
最后,说说怎么建立函数及其怎么解决你的题。
建立函数的方法,自定义函数的途径:
M文件函数(M file function)
在线函数(Inline Function)
匿名函数(Anonymous Function)
1.M文件函数
范例
function c=myadd(a,b)
%这里可以写函数的使用说明,前面以%开头
%在工作区中,help myadd将显示此处的说明
c=a+b;
%end %非必须的
第一行function告诉Matlab这是一个函数,a,b是输入,c是输出,myadd是函数名。以m文件定义的函数必须保存为函数名的形式,上例 中,函数应保存为myadd.m。要使用myadd函数,该函数必须在Matlab的搜索路径中。
调用方式:
在Matlab命令符后输入
a=1;b=2;
c=myadd(a,b)
关于m文件定义函数还有许多的说明,暂时略去。。。
2.在线函数 (Inline Function)
通常作为参数传递给另外一个函数。比如fminsearch,lsqcurvefit等函数需要以函数作为参数。
在线函数从字符串表达式创建函数,例如:
f=inline('x.^2','x');
创建了函数f(x)=x^2。要计算f(3),在工作区输入f(3)即可。f([2 3 4])计算在x=2 3 4时的值
f=inline('x+y','x','y')
创建了二元函数f(x,y)=x+y,工作区输入f(2,3)计算2+3,等同于feval(f,2,3)。
3.匿名函数(Anonymous Function)
匿名函数使用函数句柄来表示匿名函数,定义形式为
函数句柄=@(变量名) 函数表达式
例如:
f=@(x) x.^2
定义了函数f(x)=x^2,f(2)计算在x=2处的值。

匿名函数可以调用Matlab函数,也可以使用工作区中存在的变量,例如
a=2;
f=@(x) x.^2+a
f(2) =6%计算时引用了变量a
a=0;
f(2) =6%仍然引用的是a=2
匿名函数也可以由Matlab的内置函数或M文件函数创建,例如
f=@sin %f(x)=sin(x)
f(pi/2) %sin(pi/2)
functions(f) %查看函数信息
利用单元数组可以创建多个函数的句柄,例如
f={@sin @cos}
f{1}(pi/2) %计算sin(pi/2)
f{2}(pi) %计算cos(pi)
函数句柄的另一个重要特征是可以用来表示子函数、私有函数和嵌套函数。
Matlab 7以后,建议以匿名函数取代在线函数!!!
在创建匿名函数时,Matlab记录了关于函数的信息,当使用句柄调用该函数的时候,Matlab不再进行搜索,而是立即执行该函数,极大提高了效率。
以下是你的问题!fval为函数最值
>>clear
>>syms x
>> f=diff(x^2+2*x-3);
>> fun=@(y)2*y+2;
>> [y,fval]=fminsearch(fun,-2,4)
希望能帮助你!
qgdeng
2010-05-22 · TA获得超过112个赞
知道答主
回答量:44
采纳率:0%
帮助的人:66.3万
展开全部
刚给你在matlab帮助中查了一下,应该没有fmin函数
不过对于单变量,有对应的函数
fminbnd (Find minimum of single-variable function on fixed interval)

fminsearch (Find minimum of unconstrained multivariable function using derivative-free method)
上面两个函数应该能搞定你要的问题,具体可以看help

如果要建立函数,很简单,新建立一个m文件
然后按格式
function [out1,out2] = func(in1, in2)
定义函数,注意function关键字不能少

记得给分哦~~~~~~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
colinlfw
2010-05-22 · 超过14用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:35.9万
展开全部
1.不明白你的fmin是什么意思,如果你是求数值解可以按这个方法做。
syms x;
f=diff(x^2+2*x-3)
f1=subs(f,x,[-2:.1:4]);
[fm,xm]=min(f1);
2.一般来说m文件能实现的,命令也可以。
3.你能很好的用命令,自然可以吧命令改成一个函数。例如
function y=fun(x)
y=x^2;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式