matlab求函数最小值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab求函数最小值相关的知识,希望对你有一定的参考价值。

0<=y<=6.3,0<=a<=56.6
求(y/sin(a)+sqrt((4.15-y/tan(a))^2+(6.3-y)^2))最小值,matlab怎么弄
麻烦帮弄一下,要结果最小值和,a,y的值

matlab求函数最小值方法步骤如下:

1、用“导数为零”法求极值点,具体代码及其结果如下图所示:

2、采用优化算法求极小值,具体代码及其结果如下图所示:

3、绘制图形观察最小值,下图是代码:

4、绘制图形观察最小值,下图是绘制的函数图形:

5、据图形观察,重设fminbnd的搜索区间

参考技术A 这些函数求得是极值,不是最值,所以求出来有可能就不是最小值,你要提前确定它的解在8附近,你就直接改取值范围
[x,favl]=fminbnd(@(x)exp(-0.1*x)*sin(x)^2-0.5*(x+0.1)*sin(x),7,9)
x
=
8.0236
favl
=
-3.5680
还有就是可以用分段法来求
xrange=[-10,10];
n=100;
xrange=linspace(xrange(1),xrange(2),n+1);
x_min=zeros(n,1);
fval_min=zeros(n,1);
for
i=1:n
[x_min(i),fval_min(i)]=fminbnd(@(x)exp(-0.1*x)*sin(x)^2-0.5*(x+0.1)*sin(x),xrange(i),xrange(i+1));
end
[fval,i]=min(fval_min);
x=x_min(i)
fval
参考技术B 挨着比一比
设y和a的取点间隔分别为y_interval和a_interval
最小值放在m里,相应y a下标为y_min,a_min
写个函数实现上式中中z=func(y,a)
============================================
y=0:y_interval:6.3;y_len=length(y);
a=0:a_interval:56.6;a_len=length(a);

m=func(y(1),a(1));y_min=1;a_min=1;

for i=1:y_len
for j=1:a_len
z=func(y(i),a(j));
if z<m
m=z;y_min=i;a_min=j;
end
end
end
则最小值m,对应a=a_interval*(a_min-1),y.....
==============================================
这个方法比较原始比较拙,仅供参考~
参考技术C 使用fminsearch函数,help里有相关例子,把他的函数换成你的即可。 参考技术D 先用plot指令画出函数图,估计最小值的位置,再用fzero或fminsearch试试!
求a,y我还不熟!

遗传算法求解函数最小值问题及改进-自编程matlab代码

一、传统遗传算法求解函数最小值

①对于函数

f(x)=100(x_{1}^2-x_{2})^2+(1-x_{1})^2 -2.048\\leq x1,x2\\leq 2.048

其最小值位于x_{1}=1,x_{2}=1时,最小值为0

matlab多次结果如下:

从上图能够看到传统能够得到最终结果,但是稳定性较差,不易得到较好的结果

②对函数做平移,即可得到

f(x)=100((x_{1}+2)^2-x_{2}-2)^2+(1-x_{1}-2)^2 -2.048\\leq x1,x2\\leq 2.048

其最小值位于x_{1}=-1,x_{2}=-1时,最小值为0

多次运行结果为:

结果与函数①类似

二、改进遗传算法求解函数最小值

同样求函数②

能够看出改进后的结果更稳定,结果更接近实际最小值。

三、代码:https://download.csdn.net/download/qq_44152192/19132048

以上是关于matlab求函数最小值的主要内容,如果未能解决你的问题,请参考以下文章

matlab一组数据里面最小值,有没有函数可以直接找出来?

MATLAB编程求最小值

matlab 求出一维矩阵中最小值,且求出该最小值在矩阵中的位置,求各位帮帮忙

matlab中如何求矩阵的最大值和最小值?

Matlab中已知函数值的最小值求对应的自变量值...

怎么求Mat矩阵的最大最小值