MATLAB函数建立及最值问题

问题如下:我在命令窗口输入
>> f=diff(x^2+2*x-3)
f =2*x + 2
>> fmin('f',-2,4)
提问:
1、但是为何得不到结果?
2、难道必须建立m函数吗?在命令行不行吗?
3、建立函数有哪些方法?
不是很难回答的问题,高分悬赏哦。

首先,新版本的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)
希望能帮助你!
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-22
刚给你在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关键字不能少

记得给分哦~~~~~~~~
第2个回答  2010-05-22
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;

求Matlab函数的最值
第一步:确定x1、x2极值的范围,如x1【0,20】,x2【0,100】第二步:自定义函数,即 function [f,g]=fun1(x)f=x(1)^3+x2^2-10*x(1)*x(2)+1;g=[-x(1)-20; -x(2)-40];第三步:利用for循环语句和if判断语句,求解其最优解 for i=1:10^7 x=unifrnd(0,100,1,2...

如何通过Matlab求解函数的最大值问题
求最大值,可以转换为求最小值问题。比如:% 计算最小值f(x) = -x1*x2*x3,起始点为x = [10;10;10],约束条件为:0 ≤ x1 + 2*x2 + 2*x3 ≤ 72.–x1–2*x2–2*x3 ≤ 0 1.写出目标函数% function f = myfun(x)f = -x(1) * x(2) * x(3);% 2.约束条件 ...

MATLAB求几个函数和的最值问题
f(x1)、g(x2)、g(x3)有表达式吗?如有可以用fmincon()或fminimax()来求其最小值问题。求解思路:1、自定义目标函数 myfun(x) min f1+f2+f3 2、自定义约束函数mycon(x) x1、x2、x3的相互关系 3、用fmincon()或fminimax()求解 请贴出的f(x1)、g(x2)、g(x3)的表达式,这样...

用matlab求最大值
题主的求最大值问题,用matlab求解,可以这样来考虑:第一步:自定义目标函数,fmincon_fun(x),其内容 f=。。。; %f表达式 g=。。。; %g表达式 p=。。。; %p表达式q=。。。; %q表达式 Ca=-sqrt((f^2+g^2+p^2+q^2)\/2+sqrt(((f^2+g^2+p^2+q^2)\/2)^2-(f*q-g*p)^2)...

请问用matlab怎样求一个函数的最大值
1.打开matlab软件,清空桌面环境;clear clc 2.定义一个符号变量:syms t 3.定义一个函数:y=t\/(1+t*t);再通过以下函数来查看上面的函数图像;ezplot(y);4.查看该函数的图像可知,函数在0到2之间有一个极值,本例求解该最大值为例;5.输入以下的指令可以求得该函数最大值;max(subs(y,t,...

matlab知函数y=f(x1,x2)=1\/(x^2+x^2+1),-5≤x1,x2≤5求y最大值
你可以使用MATLAB的优化工具箱中的fmincon函数来解决这个问题。以下是一个可能的解决方案:1. 编写一个m文件来定义目标函数,例如:```function y = myfun(x)y = 1 \/ (x(1)^2 + x(2)^2 + 1);end ```其中x是一个包含x1和x2两个变量的向量。2. 在命令窗口中调用fmincon函数:```optio...

如何用matlab编写求该函数最大值?
1,(1)先在命令窗口给s,A赋值 (2)>> y=@(x)0.65*(s+x)*x\/(A+x)(3)[x,fval]= fminbnd(y,0,inf)%用于求函数y在x在[0,inf]内的最小值 则在取负即为求最大值。不过本题我试验了,本题好像有问题。手算都没有最大值的,因为对y求导后y'在x>0内恒大于零,故y为增...

Matlab求解数组中的最大值以及它所在的位置
一维数组 在Matlab随机生成一维数组或者手动输入 利用Max函数,将一维数据放入Max(一维数组)中 最终利用Max函数输出最大值和位置 二维数组 在Matlab随机生成或者手动输入二维数组 利用Max函数来求解最大值,但是因为是二维数组,所以需要使用两次Max函数 利用find函数来寻找最大值在二维矩阵中位置 最后,输出...

怎样用MATLAB生成函数图象?如何确定最大值点坐标。
n\/1000).^3-3.8445*(n\/1000).^4;[Tmax ind]=max(T); %求T的最大值(近似值)nTmax = n(ind); %求T的最大值对应的n值(近似值)plot(n,T,'linewidth',2) %绘曲线T=T(n)hold on plot(nTmax,Tmax,'p','markersize',8,'color','r')%绘最大值对应的点 ...

matlab如何编写复杂多元函数的求最小值问题
用matlab求解复杂多元函数最小值问题,可以这样考虑:1、建立自定义目标函数 ,z=objfun(a),利用双循环语句来构建题主给出的函数表达式 2、建立f(rij)函数,fr=f(rij)3、用fmincon函数求其最小值

相似回答