第8章-代數方程求解和最優化問題課件_第1頁
第8章-代數方程求解和最優化問題課件_第2頁
第8章-代數方程求解和最優化問題課件_第3頁
第8章-代數方程求解和最優化問題課件_第4頁
第8章-代數方程求解和最優化問題課件_第5頁
已閱讀5頁,還剩55頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第8章代數方程求解和最優化問題代數方程是未知數和常數進行有限次代數運算所組成的方程,它包括有理方程和無理方程。代數方程的解稱為的根或零點,其求解一般是通過代數幾何來進行。優化設計問題數學模型的一般形式是優化設計問題數學模型包括維設計變量、約束條件(不等式約束條件和等式約束條件)和目標函數三項要素。優化問題的數學模型是實際優化問題的數學抽象,在滿足所有的約束條件的情況下,求解維設計變量,使某項或多項設計目標(技術經濟指標)達到最優。應當指出,對于等式約束條件,施加于該項設計的等式約束條件數

必須小于優化設計問題的維數

。如果

,則由

個等式約束方程限制了設計變量只可能有唯一的解,沒有最優化的余地。8.1代數方程求解8.1.1代數方程圖解法符號繪圖函數fplot()和ezplot()也可以用于圖解法求代數方程的根,它適用于求解維數較少的一維方程或二維方程組。對于一維方程圖解,其解就是函數曲線與x軸交點所對應的變量數值。如果有多個交點,則表示該方程有多個解;如果沒有交點,則表示該方程沒有解。例如,在例5-3使用符號繪圖函數繪制代數方程的圖形(圖5-3左圖)中可見,函數在區間[-5,5]內與x軸有3個交點,因此該代數方程該區間內有3個實根。對于二維方程組圖解,其解就是兩條函數曲線的交點所對應的坐標數值。如果只有1個交點(或切點),則表示該方程組有1個解;如果有2個交點,則表示該方程組有2個解;如果沒有交點,則表示該方程沒有解。例8-1

用圖解法求解二維聯立方程。a=-2;b=2;%定義橫軸區間ezplot('x^2+y^2-1.69',[a,b]);axis'equal';%控制坐標軸比例相等holdon;gridon;ezplot('2.4*x^3-y+1.5',[a,b]);line([a,b],[0,0]);line([0,0],[b,a]);xlabel('\bfx');ylabel('\bfy');title('\bf二維代數方程組的圖解法')gtext('\bff_1=x^2+y^2-1.3^2');gtext('\bff_2=2.4x^3-y+1.5');8.1.2代數方程的解析解求非線性方程或方程組解析解的函數調用格式:

X=solve(fun,x)其中,fun是符號方程的函數表達式,x是自變量,X是解析解。應當指出,函數solve(fun,x)也可以用于求線性方組的解析解。例8-2求非線性解方程組解析解

%二維非線性方程組的解析解symsabxy;f1='x^2-x*y-a';f2='y^2-x*y+b';disp('二維非線性方程組的解析解:')[X,Y]=solve(f1,f2,'x,y')M文件運行結果:二維非線性方程組的解析解:x=a/(a-b)^(1/2)-a/(a-b)^(1/2)Y=1/(a-b)^(1/2)*b-1/(a-b)^(1/2)*b8.1.3線性方程組的數值解最簡便方法是使用矩陣左除或是矩陣求逆的方法,求解線性方程組AX=b。

X=A\bX=inv(A)*b其中,A是方程組的系數矩陣,b是常數向量,X是解析解。例8-3求線性方程組的數值解%線性方程組的數值解AA=[1,1,1,1;1,2,-1,4;2,-3,-1,-5;3,1,2,11];bb=[5;-2;-2;0];%線性方程組常數向量disp('采用矩陣左除求出線性方程組的解:')xx=AA\bbdisp('采用矩陣求逆求出線性方程組的解:')zx=inv(AA)*bbdisp('計算殘量:')r=AA*zx-bbdisp('計算殘量的模:')R=norm(r)M文件運行結果:采用矩陣左除或矩陣求逆求出線性方程組的解:xx(zx)=1.00002.00003.0000-1.0000計算殘量:r=1.0e-014*0.08880.2220-0.44410.1776計算殘量的模:R=5.3475e-0158.1.4非線性方程的數值解1、一維非線性方程對于一維非線性方程求解,可以看作是單變量的極小化問題,通過不斷縮小搜索區間來逼近一維問題的真解。因此,可以使用一維非線性方程優化解函數來求解。其調用格式是:

[x,fx,flag]=fzero(fun,x0)其中,輸入參數中:fun是非線性方程的函數表達式;x0是根的初值;輸出參數中:x是非線性方程的數值解;fx是數值解的函數值;返回參數flag>0時,表示求解成功,否則求解出現問題。函數fzero所使用的算法為二分法、secant法和逆二次插值法的組合。例8-4求解一維非線性方程%求解單變量x非線性方程x0=0.1;%解的初值[xz,fz,flag]=fzero('atan(x)+exp(x)',x0);disp('求解成功性判斷參數:'),flagdisp('非線性方程的解:'),xzdisp('非線性方程解的函數值:'),fzM文件運行結果:求解成功性判斷參數:flag=1非線性方程的解:xz=-0.6066非線性方程解的函數值:fz=-1.1102e-0162、多維非線性方程組對于多維非線性方程組使用多維非線性方程組優化解函數求解的格式:

[x,fval,flag]=fsolve(fun,x0)其中,輸入參數中fun是非線性方程組的向量函數表達式;x0是根的初值;輸出參數中x是非線性方程(組)的數值解;fval是數值解的函數值;返回參數flag>0時,表示求解成功.函數fsolve的作用是從根的初值x0開始,以逐漸減少誤差的算法,搜索出滿足多維非線性方程組fun的實根x和對應的函數值fval。例8-5求解二維非線性方程組x0=[2;3];%解的初值%定義非線性方程組表達式f和向量xfun=inline('[2*x(1)-x(2)^2-exp(-x(1));-x(1)^3+x(1)*x(2)-exp(-x(2))]','x')[xn,fval,flag]=fsolve(fun,x0);disp('求解成功性判斷參數:'),flagifflag>0disp('方程組的解成功')elseifflag<=0disp('方程組的解不成功')enddisp('非線性方程組的解:'),xndisp('非線性方程組解的函數值:'),fvalM文件運行結果:求解成功性判斷參數:flag=1方程組的解成功非線性方程組的解:xn=0.99781.2755非線性方程組解的函數值:fval=1.0e-006*-0.1945-0.3372兩個非線性方程解的函數值非常接近于0,說明其解的誤差很小,且判斷參數flag>0,解成功。8.2MATLAB優化工具箱的應用MATLAB優化工具箱(OptimizationToolbox)中包含有一系列優化算法和模塊,可以用于求解線性規劃和二次規劃、函數的最大和最小值、非線性規劃、多目標優化、非線性最小二乘逼近和曲線擬合、非線性系統方程和復雜結構的大規模優化問題。常用的優化功能函數有:求解線性規劃問題的函數linprog求解二次規劃問題的函數quadprog求解無約束非線性規劃問題的函數fminbnd、fminunc和fminsearch求解約束非線性規劃問題的函數fmincon求解多目標優化問題的函數fgoalattain和fminimax使用MATLAB優化工具箱函數處理優化設計問題的分析和計算的一般步驟是:1、針對具體工程問題建立優化設計的數學模型(不等式約束條件表示成的形式);2、分析數學模型中的目標函數,并建立相應的目標函數文件(包括計算目標函數必需的輸入參數,描述目標函數表達式等內容),以自定目標函數文件名將它存儲在工作間\MATLAB\WORK\中;3、分析數學模型中的非線性約束條件,并建立相應的非線性約束函數文件(包括計算約束函數必需的輸入參數,描述約束函數表達式等內容),以自定的約束函數文件名將它存儲在工作間\MATLAB\WORK\中;4、分析優化設計的數學模型,選擇適用的優化工具函數,并建立調用優化工具函數的命令文件(內容包括輸入初始點,建立設計變量的線性約束和邊界約束的矩陣和向量,使用優化工具函數調用目標函數文件和約束函數文件的語句,以及運算結果輸出等內容),將優化工具函數作為“黑箱”調用,以自定的命令文件名將它存儲在工作間\MATLAB\WORK\中。將優化設計的命令文件復制到MATLAB命令窗口的運算提示符“>>”后面運行。8.2.1線性規劃問題線性規劃(LinearProgramming)是數學規劃中最簡單和基本的問題,它主要用來解決在有限的資源條件下完成最多的任務,或是確定如何統籌任務完成以使用最少的資源。線性規劃的數學模型包括決策變量X、約束條件和目標函數三個要素,它的決策變量是非負的,而且約束函數和目標函數都是線性函數。線性規劃的數學模型表示為用于求解線性規劃的MATLAB函數是linprog,其調用格式為:[xopt,fopt]=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)其中,輸入參數有:

f是目標函數各維變量的系數向量;

A和b是不等式約束函數的系數矩陣和常數向量;

Aeq和beq是等式約束函數系數矩陣和常數向量;

lb和ub分別是設計變量的下限和上限;

x0是初始點;

options是設置優化選項參數(參考表8-1)。輸出參數有:

xopt和fopt是返回目標函數最優解及其函數值。例8-6求解線性規劃問題編制求解線性規劃問題的M文件:%求解線性規劃問題f=[-2,-1,3,-5]';%各維變量的系數向量A=[1,2,4,-1;2,3,-1,1;1,0,1,1];%系數矩陣b=[6,12,4];%不等式約束函數的常數向量lb=[0,0,0,0];%設計變量的下限[xopt,fopt]=linprog(f,A,b,[],[],lb)由于線性規劃問題中沒有等式約束,所以相應的系數矩陣Aeq和常數向量beq用空矩陣符號“[]”表示。程序運行結果:Optimizationterminatedsuccessfully.xopt=0.00002.66670.00004.0000fopt=-22.6667可見,約束最優解位于兩個邊界約束和的交集上。8.2.2二次規劃問題二次規劃問題(QuadraticProgramming)是最簡單的非線性規劃問題,其目標函數是二次函數,而約束函數是線性函數。由于二次規劃問題的求解比較成熟,有時可以將一些求解比較困難的一般非線性約束規劃問題轉化為較易處理的序列二次規劃子問題求解。用于求解二次規劃問題的函數是quadprog二次規劃的數學模型為使用格式為

[xopt,fopt]=quadprog(H,C,A,b,Aeq,beq,lb,ub,x0,options)其中,輸入參數有:

H是目標函數的海色矩陣;

C是目標函數設計變量一次項的系數向量;

A和b是不等式約束函數的系數矩陣和常數向量;

Aeq和beq是等式約束函數的系數矩陣和常數向量

lb和ub分別是設計變量的下限和上限;

x0是初始點;

options是設置優化選項參數(參考表8-1)。輸出參數有:xopt和fopt返回目標函數的最優解及其函數值。例8-7求解約束優化問題⑴將目標函數寫成二次函數的形式其中:線性不等式約束函數的系數矩陣和常數向量為線性等式約束函數的系數矩陣和常數向量為⑵編制求解二次規劃的M文件%求解二次規劃問題H=[2,-2,0;-2,3,0;0,0,2];%函數的海色矩陣C=[0,0,1];%各維變量的系數向量A=[1,3,2];%不等式約束函數的系數矩陣b=[6];%不等式約束函數的常數向量Aeq=[2,-1,1];%等式約束函數的系數矩陣beq=[4];%等式約束函數的常數向量lb=zeros(3,1);%設計變量的下限[xopt,fopt]=quadprog(H,C,A,b,Aeq,beq,lb)%調用線性規劃函數%最優點的約束函數值g=A*xopt-b%不等式約束h=Aeq*xopt-beq%等式約束M文件運行結果:Optimizationterminatedsuccessfully.xopt=2.47831.08700.1304fopt=2.6739g=8.8818e-016h=-4.4409e-016可見,二次規劃的約束最優解位于不等式約束和等式約束的交集。8.2.3無約束非線性規劃問題1、函數fminbnd應用函數fminbnd只能求解單變量的無約束非線性規劃問題,而且要求目標函數為連續函數。調用格式

[xopt,fopt,exitflag,output]=fminbnd(fun,x1,x2,options)其中,輸入參數有:

fun是目標函數;

[x1,x2]是迭代搜索區間,即變量的邊界約束,即x1≤x≤x2;

options是設置優化選項參數(見表8-1)。例如options(1)為負值時,則顯示中間過程,默認值是options(1)=0;options(2)為最優解xopt的誤差范圍,默認值是1e-4;等等。輸出參數有:

Xopt為返回的滿足fun取得最小值的x的值;

fopt為目標函數最小值;

exitflag表示退出條件:exitflag>0表示計算收斂,exitflag=0表示超過了最大的迭代次數,exitflag<0表示計算不收斂。

output表示輸出信息,它有3分量:iterations表示迭代次數,funcCount表示代入函數次數,algorithm表示選用的優化算法。例8-8

求解單變量的無約束非線性規劃問題%單變量函數的無約束非線性優化fun='(x^5+x^3+x^2-1)/(exp(x^2)+sin(-x))';%定義一維目標函數[xopt,fopt,exitflag,output]=fminbnd(fun,-2,2)ezplot(fun,[-2,2]);%繪制符號函數圖形gridon;xlabel('\bfx');ylabel('\bfy');title('\bf單變量函數的無約束非線性優化')gtext('\bfy=(x^5+x^3+x^2-1)/(e^{x^2}+sin(-x))');gtext('\bfx^*');M文件運行結果:xopt=0.2176fopt=-1.1312exitflag=1output=iterations:12%迭代次數

funcCount:13%調用函數次數

algorithm:'goldensectionsearch,parabolicinterpolation'message:[1x112char]2、函數fminsearch應用函數fminsearch可用于求解單變量或多變量的無約束非線性規劃問題,它的優化算法比較簡單,適合處理目標函數階次低、間斷點多和比較簡單的優化問題。它的使用格式為

[xopt,fopt,exitflag,output]=fminsearch(fun,x0,options)其中,輸出參數有:

xopt和fopt返回目標函數的最優解及其函數值。返回參數exitflag表示退出條件:exitflag>0表示計算收斂,exitflag=0表示超過了最大的迭代次數,exitflag<0表示計算不收斂。返回參數output表示輸出信息,它有3分量:iterations表示迭代次數,funcCount表示代入函數次數,algorithm表示選用的優化算法。輸入參數有:

fun是目標函數;

x0是初始點;

options是設置優化選項參數(見表8-1)。如,

options(1)為負值時,則顯示中間過程,默認值是options(1)=0;

options(2)為最優解xopt的誤差范圍,默認值是1e-4;

options(3)為最優解fopt的誤差范圍,默認值是1e-4;

options(14)是為函數求值的最大次數,默認值是options(14)=200;等等。例8-9

求二維無約束非線性函數的最優解:%二維無約束非線性優化fun='(x(1)^2-2*x(1))*exp(-x(1)^2-x(1)*x(2)-x(2)^2)';[xopt,fopt,exitflag,output]=fminsearch(fun,[1,1])f='(x^2-2*x)*exp(-x^2-x*y-y^2)';%符號函數ezmeshc(f);%繪制符號函數圖形(含等高線)xlabel('\bfx');ylabel('\bfy');zlabel('\bff(x,y)');M文件運行結果:xopt=0.6111-0.3055fopt=-0.6414exitflag=1output=iterations:36funcCount:70algorithm:'Nelder-Meadsimplexdirectsearch'message:[1x196char]3、函數fminunc應用函數fminunc的優化算法比較復雜,而且可供選擇的幾種不同算法,適用于求解比較復雜的優化問題。它的調用格式是:[x,fval,exitflag,output,grad,hessian]=fminunc(@fun,x0,options,P1,P2…)其中,輸出參數有:

x是返回目標函數的最優解;

fval是返回目標函數在最優解x點的函數值;

exitflag是返回算法的終止標志;

output是返回優化算法的信息的一個數據結構;grad是返回目標函數在最優解x點的梯度;hessian是返回目標函數最優解x點hessian矩陣值輸入參數有:

fun是調用目標函數的函數文件名;

x0是初始點;

options是設置優化選項參數(參考表8-1),包括有18個元素,用以在計算時控制精度要求、輸出形式、算法選擇、迭代次數、梯度等重要問題,可用空矩陣符號“[]”表示它的默認值;

P1、P2等是傳遞給fun的附加參數。例8-10

求二維無約束非線性函數的最優解%二維無約束非線性優化%函數fminunc求解二維無約束非線性優化問題fun='exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1)'x0=[0,0];options=optimset('largescale','off','display','iter','tolx',1e-8,'tolfun',1e-8);[x,fval,exitflag,output,grad,hessian]=fminunc(fun,x0,options)f='exp(x)*(4*x^2+2*y^2+4*x*y+2*y+1)';ezmesh(f);%繪制符號函數圖形xlabel('\bfx');ylabel('\bfy');zlabel('\bff(x,y)');說明:在優化函數fminunc的輸入參數options命令中各個選項的意義是'largescale','off'表示關閉了大規模方式;'display'用來控制計算過程的顯示;'iter'表示顯示優化過程的每次計算結果('off'不顯示所有輸出,'final'僅輸出最后結果);'tolx',1e-8是控制輸入變量x的允許誤差精度;‘tolfun’,1e-8是控制目標函數的允許誤差精度(缺省值是1e-4)。M文件運算結果:fun=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1)x=0.5000-1.0000%極小點fval=1.8304e-015%目標和數值exitflag=1output=iterations:7funcCount:33stepsize:1firstorderopt:2.4568e-008algorithm:'medium-scale:Quasi-Newtonlinesearch‘%擬牛頓線搜索算法

message:[1x85char]grad=1.0e-007*%極小點的梯度

0.24570hessian=13.19466.5953%海色矩陣

6.59536.59498.2.4約束非線性規劃問題約束非線性規劃問題的數學模型表示為函數fmincon的調用格式是:[xopt,fopt,exitflag,output,hession]=fmincon(@fun,x0,A,b,Aeq,beq,Lb,Ub,‘Nlc’,options,P1,P2,…)其中,輸出參數有:

xopt是返回目標函數的最優解;

fopt是返回目標函數在最優解x點的函數值;

exitflag是返回算法的終止標志;

output是返回優化算法的信息的一個數據結構;

grad是返回目標函數在最優解x點的梯度;

hessian是是返回目標函數在最優解x點的hessian矩陣值。輸入參數有:

fun是調用目標函數的函數文件名;

x0是初始點;線性不等式約束條件的系數矩陣A和常數向量b;線性等式約束條件的系數矩陣Aeq和常數向量beq;設計變量的下界向量Lb和上界向量Ub;

‘Nlc’是定義非線性約束條件的函數名;

options是設置優化選項參數,參考表8-1;

P1、P2等是傳遞給fun的附加參數。參數A,b,Aeq,beq,Lb,Ub,options如果沒有定義,可用空矩陣符號“[]”代替。例8-11求解約束非線性規劃問題%約束非線性優化問題%1-目標函數文件objfun.mfunctionf=objfun(x)f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);%2-非線性約束函數文件confun.mfunction[c,ceq]=confun(x)%非線性不等式約束c(1)=1.5+x(1)*x(2)-x(1)-x(2);c(2)=-x(1)*x(2)-10;%非線性等式約束ceq=[];%3-優化函數應用x0=[-11];%設計變量初值A=[1,1];b=0;%描述線性不等式約束g3(X)Aeq=[];beq=[];%沒有線性等式約束lb=[-10,-10];%設計變量下限ub=[10,10];%設計變量上限options=optimset('largescale','off','display','iter');[xopt,fval,exitflag,output]=fmincon(@objfun,x0,A,b,Aeq,beq,lb,ub,@confun,options)[c]=confun(xopt)%最優點的非線性約束函數值M文件運行結果:xopt=-9.54741.0474fval=0.0236exitflag=1output=iterations:8funcCount:28stepsize:1algorithm:'medium-scale:SQP,Quasi-Newton,line-search'firstorderopt:8.5131e-007cgiterations:[]message:[1x144char]c=1.0e-007*-0.90310.90318.2.5多目標規劃問題在規劃問題中,目標函數根據工程優化設計問題的主要準則或幾個設計準則來建立的。如果某項設計要求同時兼顧若干項設計目標達到最優,則屬于多目標優化設計問題。其中,由各項設計準則建立的目標函數,稱為分目標函數。多目標優化問題要比單目標優化問題復雜得多。將多目標優化問題轉化為單目標優化問題,使多目標優化問題解的半有序性轉化為單目標優化問題解的完全有序性。這種轉化后問題的解往往是原多目標優化問題的一個或部分非劣解,不是全部的非劣解。如何得到一個能夠接受的最好非劣解,關鍵在于選擇某種形式的折中。MATLAB優化工具箱函數fgoalattain用于求解的多目標優化問題,也稱為目標達到問題。其形式:其中,是各個分目標函數,和是各個分目標及其權重向量。函數fgoalattain的使用格式為:[xopt,fopt,exitflag,output,hession]=fgoalattain(@fun,x0,goal,w,A,b,Aeq,beq,Lb,Ub,‘Nlc’,options,P1,P2,…)其中,輸出參數有:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論