资源描述
第六讲 非线性方程和方程组的近似解补充:部分优化问题的求解一、实例与数学模型一、实例与数学模型问题描述问题描述在一条20m宽的道路两侧,安装了两只2kW的路灯,它们离地面的高度分别为5m。在漆黑的夜晚,当两只路灯开启时,两只路灯连线的路面上最暗的点和最亮的点在哪里?如果路灯的高度可以在3m和9m之间变化,如何使路面上最暗点的亮度最大?路灯照明问题路灯照明问题数学模型数学模型建立如图所示的坐标系,即路面的宽度为s,每只路灯的功率分别是P,高度是h。设两只路灯连线的路面上某点Q的坐标为(x,0),其中,假设两个光源都可以看成点光源,并记两个光源到点Q的距离分别为 r1和r2,从光源到点Q的光线与水平面的夹角分别为和,两个光源在点Q的照度分别为I1 和I2,则xyhhPP0s(x,0)r1r2Q其中k是量纲单位决定的比例系数,不妨记为k=1,且得到点Q的照度为问题1,求路面上最暗点和最亮点的问题化为求C(x)的最小值点与最大值点先计算C(x)的驻点,C(x)的阶导函数为另得由数分的知识我们知道,只要能求出上述方程的根,我们就能求出照度函数的驻点,从而得到最小与最大值点。问题2:把照度函数看出是关于变量x和h 的二元函数,即那么该问题就转化成求二元函数的极值问题,分别对两个变量求偏到可得以下方程组二、非线性方程和方程组的二、非线性方程和方程组的Matlab求解求解1、图解法、图解法(1 1)一元方程的图解法)一元方程的图解法用ezplot()函数可以绘制出给定的隐函数f(x)=0曲线,再绘出直线y=0,读出两条曲线的交点的横坐标即为方程的解。ezplot函数的调用格式,ezplot(fun)%隐函数表达式【例例1 1】(2)二元方程组的图解法)二元方程组的图解法二元方程也可以用图解法求解,用ezplot()函数将第一个方程对应的曲线绘制出来,再在同一个坐标系下绘制出第二个方程对应的曲线,得出曲线后就可以通过读取交点坐标的方式得出联立方程的根。【例2】2 2、准解析解、准解析解非线性方程中的多项式方程或者多项式方程组,根据代数中的根与系数的关系,对于次数低的我们可以求出它的解析解,对于次数高的我们可以得到高精度的数值也叫准解析解。在matlab符号工具箱中,solve()函数就是求解这一类问题,以下为该函数的调用格式【例3】3、数值解法、数值解法(1)fzero()函数函数 fzero函数用于求单变量方程的根,所采用的算法主要是二分法、割线法等的混合方法。fzero至少要输入两个参数:函数和迭代初始值(或者有根区间),其最简单调用格式如下S=fzero(eqn,x0)其中,eqn是指方程左端的函数,如果函数复杂可以通过编写函数M文件输入,如果函数形式简单,直接用inline函数输入方程左端的函数。(2)fsolve()函函数数 fsolve函数一般用于非线性方程组的求解(当然也可以用于方程的求解,但效果一般不如fzero函数),其调用格式如下【例5】OPT=optimset;OPT.TolX=1e-10 x,Y,c,d=fsolve(f,-1;0,OPT)求解函数求解函数(3)roots()函数roots()函数专门用于求单变量代数方程求根,即当f(x)为一元多项式时的求解,其调用格式如下r=roots(p)%p为多项式的系数向量(按降幂排列),输出r为f(x)=0的全部根(包括复根)三、实例的求解三、实例的求解1、求路面上最暗点与最亮点、求路面上最暗点与最亮点Q的照度函数照度函数的导数将所给的实际数据,P=2,h=5,s=20代入上面两个式子,在0,20上用matlab画出这两个函数的图形,找出照度函数的驻点大约在那些数值附近,然后以这些值为初始值,用fzero()函数求出这些驻点的横坐标,然后再求出相应的函数值,比较这些函数值,函数值最小的对应的x即为最暗的点,函数最大的点的x即为最亮的点解题思路解题思路画图找合适的初始值点syms s c1=2*5/(52+s2)(3/2)+3*5/(52+(20-s)2)(3/2);c2=2*5*s/(52+s2)(5/2)-2*5*(20-s)/(52+(20-s)2)(5/2);S=0:0.5:20;C1=subs(c1,S);C2=subs(c2,S);subplot(1,2,1)plot(S,C1);grid onsubplot(1,2,2)plot(S,C2);grid on 结论:x0=0,10,20,即一阶导数方程的有三个根,且在这三个数附近y=inline(2*5/(52+x2)(3/2)+2*5/(52+(20-x)2)(3/2);dy=inline(2*5*x/(52+x2)(5/2)-2*5*(20-x)/(52+(20-x)2)(5/2);x0=0,10,20;for i=1:3 X(i+1)=fzero(dy,x0(i);C(i+1)=y(X(i+1);endX(1)=0,X(i+2)=20;C(1)=y(X(1),C(i+2)=y(X(i+2);X;C结果:要表述一个最优化问题(即建立数学模型),应明确三个基本要素:决策变量(decision variables):它们是决策者(你)所控制的那些数量,它们取什么数值需要决策者来决策,最优化问题的求解就是找出决策变量的最优取值 约束条件(constraints):它们是决策变量在现实世界中所受到的限制,或者说决策变量在这些限制范围之内取值才有实际意义 目标函数(objective function):它代表决策者希望对其进行优化的那个指标。目标函数是决策变量的函数 补充补充:最优化问题的求解最优化问题的求解一、实例与数学模型n动物饲料配制动物饲料配制美国一家公司以专门饲养并出售一种实验用动物而闻名该公司的研究表明,这种动物的生长对饲料中的三种营养成分特别敏感,即蛋白质、矿物质和维生素同时发现这种动物每天至少需要70克蛋白质、3克矿物质和10毫克维生素该公司能得到五种饲料,每一种饲料每磅所含的营养成分如表9l,每种饲料每磅的成本如表92公司希望找出满足动物营养需要而成本又最低的混合饲料配置问题的描述问题的描述表表1 每一种饲料每磅所含营养成分每一种饲料每磅所含营养成分表表2 每种饲料每磅的成本每种饲料每磅的成本模型的建立模型的建立上述过程写成一般的数学表达式上述过程写成一般的数学表达式这就是一个线性规划问题,可以用线性规划算法(更现成的是用各种相关的软件)求解二、最优化问题二、最优化问题Matlab求解求解n(一)无约束最优化问题求解(一)无约束最优化问题求解无约束最优化问题是最简单的一类最优化问题,其数学描述如下数值解法数值解法Matlab语言中提供了求解无约束优化的函数fminsearch(),其优化工具箱中还提供了函数fminunc(),这两者的调用格式完全一致,为例例1(二)有约束最优化问题的求解(二)有约束最优化问题的求解按照静态优化问题的结构是否线性分为线性规划和非线性规划线性规划的特征是目标函数和约束条件中的函数都是决策变量的线性函数,并且约束是必不可少的(否则不存在有实际意义的解),1、线性规划问题求解、线性规划问题求解线性规划问题数学描述为matlab中优化工具箱的求解函数中优化工具箱的求解函数在MATLAB优化工具箱中,求解线性规划的函数为linprog()函数,该函数的调用格式如下1若没有不等式:AX b 存在,则令A=,b=.2 若没有等式约束:Aeq X=beq,则令Aeq=,beq=.3其中X0表示初始点 注意:【例2】2、非线性规划问题的求解、非线性规划问题的求解非线性规划的一般数学描述为为求解方便,约束条件可以进一步细分,这原规划可写为该细分模型的求解命令如下【例3】三、实例求解三、实例求解现在我们用matlab求解实例的数学模型解:编写M文件siliao.m如下C=0.02 0.07 0.04 0.03 0.05;A=-0.30 2.00 1.00 0.60 1.80;0.10 0.05 0.02 0.20 0.05;0.05 0.10 0.02 0.20 0.08;B=-70 3 10;Aeq=,Beq=;xm=0;0;0;0;0,xM=;x0=0;1;x,f=linprog(C,A,B,Aeq,Beq,xm,xM,x0)运行结果x=0.0000 0.0000 0.0000 39.7436 25.6410f=2.4744问题的回答 每天使用第四种饲料39.7436,第五中饲料25.6410,其他不用,这种情况下成本最省,此时每天的成本为2.4744美元。
展开阅读全文