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代码
一、传统遗传算法求解函数最小值
①对于函数
其最小值位于时,最小值为0
matlab多次结果如下:
从上图能够看到传统能够得到最终结果,但是稳定性较差,不易得到较好的结果
②对函数做平移,即可得到
其最小值位于时,最小值为0
多次运行结果为:
结果与函数①类似
二、改进遗传算法求解函数最小值
同样求函数②
能够看出改进后的结果更稳定,结果更接近实际最小值。
三、代码:https://download.csdn.net/download/qq_44152192/19132048
以上是关于matlab求函数最小值的主要内容,如果未能解决你的问题,请参考以下文章