资源描述:
《第7讲+用MATLAB软件求极值和最值》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第7讲用MATLAB软件求极值和最值制作:江西科技师范学院万重杰1.解非线性方程解非线性方程(组)的命令是:solve,调用格式如下:solve('eqn1','eqn2’,,...,'eqnN’)或:solve('eqn1','eqn2’,,...,'eqnN’,‘var1,var2,...,varN’)注解:1.‘eqn1‘,‘eqn2’,...,‘eqnN’是N个方程的符号表达式;2.‘var1,var2,...,varN’指定方程的N个自变量;例1解法1:x=solve('3*x^2+4*x-5=0')
2、解法2:x=solve('3*x^2+4*x-5')运行结果为方程解的解析表达式:x=[-2/3+1/3*19^(1/2)][-2/3-1/3*19^(1/2)]输入命令:double(x),可将x显示为双精度数值:ans=0.7863-2.11962.求函数的极值解法思路:1.先用diff命令求函数y的导数;2.再用solve命令求导函数为0的点,即驻点;3.再用fplot命令绘函数曲线,判断驻点是否为极值点.解输入下列命令:y='x^3+2*x^2-5*x+1';dy=diff(y)x=solve(d
3、y)x=double(x)y1=x.^3+2*x.^2-5*x+1作函数曲线:fplot(y,[-4,2])运行结果:dy=3*x^2+4*x-5x=[-2/3+1/3*19^(1/2)][-2/3-1/3*19^(1/2)]x=0.7863-2.1196y1=-1.208811.0607求函数在给定区间上的最小值的MATLAB命令是:fminbnd调用格式如下:x=fminbnd(y,x1,x2)注解:1.y是函数的符号表达式;命令fminbnd仅用于求函数的最小值.若要求函数的最大值,可先将函数变号,求得最
4、小值,再次改变符号,则得到所求函数的最大值.X1,x2是自变量x变化范围的下界和上界;3.求函数在给定区间上的最值例3解输入下列命令:x=fminbnd('exp(-x)+(x+1)^2',-3,3)y=exp(-x)+(x+1)^2运行结果:x=-0.3149y=1.8395x[x,fval][x,fval,exitflag]4.[x,fval,exitflag,output]输出格式有以下几种形式:其中:x表示最小值点,即函数取得最小值时自变量的取值;fval表示函数在给定区间的最小值;exitflag为结束
5、标志,其值>0时表示计算结果收敛到最优解x,=0时表示迭代次数超过允许最大次数,<0时表示计算结果没有收敛.output为求解过程的一些信息,如迭代次数、算法等信息.注意:几种格式的含义与线性规划中讲到的是相同的例4解先来求函数的最小值.输入以下命令:f1='(x^3+x^2-1)/(exp(x)+exp(-x))';[x_min,f_min,flag]=fminbnd(f1,-5,5)运行结果:x_min=-3.3112f_min=-0.9594flag=1运行结果:x_max=2.8498f2_min=-1.7
6、452flag=1f_max=1.7452再来求函数的最大值.输入以下命令:f2='-(x^3+x^2-1)/(exp(x)+exp(-x))';[x_max,f2_min,flag]=fminbnd(f2,-5,5)f_max=-f2_min输入命令:fplot(f1,[-55])可得函数的曲线如下:小结1.解非线性方程(组)的命令,调用格式是:solve('eqn1','eqn2’,,...,'eqnN’)2.求函数的极值的方法:求驻点3.求函数在给定区间上的最小值,命令调用格式:x=fminbnd(y,x1
7、,x2)