蜂鸣营销案例:方程求解方法

来源:百度文库 编辑:九乡新闻网 时间:2024/05/04 16:42:20
有了函数后, 我们怎么用呢?直接利用函数计算, 例如: sin(pi), 还有我们提到的 mysqr(3)...
函数画图, 例如Plottools中提到的ezplot, ezsurf...
但是这也太小儿科了, 有没有想过定义函数后, 利用它来: 求解零点(即解f(x)=0方程), 最优化(求最值/极值点), 求定积分, 常微分方程求解等.
方程的分类:单个方程按其系数的性质分为线性方程和非线性方程。一元非线性方程求解(fzero()、roots()、fsolve())
多元非线性方程求解(fsolve())
fzero()、fsolve()比较:使用形式相似
              解=fzero(函数, 初值, options)
              解=fsolve(函数, 初值, options)fzero()函数求解一元非线性方程的零点,fsolve()可以解多元方程组。
关于解: fzero给出的是x单值的解, fsolve给出的是解x可能处于的区间, 当然, 这个区间很窄.
关于'函数': 前面提到的三种表示方法, 在这里都可以用. 记住就是: 如果直接使用函数表达式, 要用单引号将它括起来; 而m文件函数名、匿名函数的函数句柄、inline函数则可以直接使用.
关于'初值': 电脑比较"笨", 它寻找解的办法是尝试不同地x值, 摸索解在哪里. 所以我们一开始就要给它指明从哪里开始下手, 初值这里, 可以只给它一个值, 让它在这个值附近找解, 也可以给它一个区间(区间用[下限,上限]这种方式表示), 它会在这个区间内找解. fsolve()可以同时有多个初值,例如:y=fsolve('tan(x)-x',[-4,0,4])
fzero注意1: fzero的一些局限性, 如果你给定的初值是区间, 而恰好函数在区间端点处同号, fzero会出错. 例如,如果x0是一个长度为2 的矢量,则fzero函数假设x0是一个区间,其中fun(x0(1)))的符号与fun(x0(2))的不同. 如果符号相同,则会出错. 给出符号不同的区间可以保证fzero函数返回一个fun函数改变符号的位置附近的值。
fzero注意2: 而如果你只给一个初值, fezro又有可能'走错方向', 例如给初值2让它解mysqr这个函数方程就会出错.
root()用法:返回一个列矢量,其元素为多项式c的解。例:求 x^3-8x^2+6x-30=0 的解>> p=[1 -8 6 -30];
>> r=roots(p)r =   7.7260         
   0.1370 + 1.9658i
   0.1370 - 1.9658ifzero()、roots()、fsolve()用法小结:
解方程函数调用格式说明 函数及调用格式
 
 
roots(P)
 计算多项式方程P=0的根。
 
fsolve('fun',x0)
 计算由参数fun=0决定的方程的根。x0是估计的方程根的初值。
 
fsolve('fun',x0,options)
 计算由参数fun=0决定的方程的根,x0是估计的方程根的初值,options是优化参数,可取的值有0(默认)和1。
 
[x,fva]=fsolve('fun',x0)
 同fsolve('fun',x0),除输出根x外,还输出在x处fun的函数值fva。
 
[x,fva,exi]=fsolve(…)
 同fsolve('fun',x0),除输出根x外,还输出在x处fun的函数值fva和退出状态exi。exi为1是正常退出。
 
[x,fva,exi,out]=fsolve(…)
 同fsolve('fun',x0),除输出根x外,还输出在x处fun的函数值fva、退出状态exi及优化信息out.
 
[x,fva,exi,out,jac]=fsolve(…)
 同fsolve('fun',x0),同时输出根x、在x处fun的函数值fva、退出状态exi、优化信息out和点x处的jacobian值。
 
fzero('fun',x0)
 计算由参数fun=0决定的方程的根。x0是估计的方程根的初值,可以是常数,也可以是区间。如果x0是常数,则计算x0附近的根;如果x0是区间,则计算这个区间内的根,无根则输出错误信息。
 
fzero('fun',x0,options)
 同fzero('fun',x0),options是优化参数,可以通过optimset定义。
 
[x,fva]=fzero('fun',x0)
 同fzero('fun',x0),同时输出方程的根x和根处的函数值fva。
 
[x,fva,exitflag]=fzero(…)
 同fzero('fun',x0),同时输出方程的根x、根处的函数值fva和退出状态exitflag。
 
[x,fva,exitflag,out]=fzero(…)
 同fzero('fun',x0),同时输出方程的根x、根处的函数值fva、退出状态exitflag和优化信息。
 
fzero使用下面的选项结构字段:display:显示级别。值为'off时,不显示输出;值为‘iter’时,显示每次跌代的输出;值为‘final’时,显示最后的输出; 值为‘notify’时,显示函数不收敛时的输出。
tolx:为x的终止容限。
[x,fval]=fzero(。。。):返回解x处目标函数fun 的值。
[x,fval,exitflag]=fzero(。。。):返回一个exitflag值,描述fzero函数的退出条件。
               返回值如下所示:                  〉0 ,表示函数找到了零值点x。                 《=0,表示没有发现零值点。