機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件_第1頁
機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件_第2頁
機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件_第3頁
機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件_第4頁
機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件.....機(jī)械優(yōu)化設(shè)計(jì)作業(yè)用二次插值法求函數(shù)極小值,精度e=0.01。在MATLAB的M文件編輯器中編寫的M文件,如下:f=inline('(t+1)*(t-2)^2','t')a=0;b=3;epsilon=0.01;t1=a;f1=f(t1);t3=b;f3=f(t3);t2=0.5*(t1+t3);f2=f(t2);c1=(f3-f1)/(t3-t1);c2=((f2-f1)/(t2-t1)-c1)/(t2-t3);t4=0.5*(t1+t3-c1/c2);f4=f(t4);k=0;while(abs(t4-t2)>=epsilon)ift2<t4iff2>f4f1=f2;t1=t2;t2=t4;f2=f4;elsef3=f4;t3=t4;endelseiff2>f4f3=f2;t3=t2;t2=t4;f2=f4;elsef1=f4;t2=t4;endendc1=(f3-f1)/(t3-t1);c2=((f2-f1)/(t2-t1)-c1)/(t2-t3);t4=0.5*(t1+t3-c1/c2);f4=f(t4);k=k+1;end%輸出最優(yōu)解iff2>f4t=t4;f=f(t4);elset=t2;f=f(t2);endfprintf(1,'迭代計(jì)算k=%3.0f\n',k)fprintf(1,'極小點(diǎn)坐標(biāo)t=%3.0f\n',t)機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第1頁。fprintf(1,'函數(shù)值f=%3.4f\n',f)機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第1頁。運(yùn)行結(jié)果如下:迭代計(jì)算k=7極小點(diǎn)坐標(biāo)t=2函數(shù)值f=0.0001用黃金分割法求函數(shù)的極小值,精度e=0.01。在MATLAB的M文件編輯器中編寫的M文件,如下:f=inline('t^(2/3)-(t^2+1)^(1/3)','t');a=0;b=3;epsilon=0.01;t1=b-0.618*(b-a);f1=f(t1);t2=a+0.618*(b-a);f2=f(t2);k=1;whileabs(b-a)>=epsiloniff1<f2b=t2;t2=t1;f2=f1;t1=b-0.618*(b-a);f1=f(t1);elsea=t1;t1=t2;f1=f2;t2=a+0.618*(b-a);f2=f(t2);endt=0.5*(b+a);k=k+1;f0=f(t);endfprintf(1,'迭代次數(shù)k=%3.0f\n',k)fprintf(1,'迭代區(qū)間—左端a=%3.4f\n',a)fprintf(1,'試點(diǎn)1坐標(biāo)值t1=%3.4f\n',t1)fprintf(1,'函數(shù)值f1=%3.4f\n',f(t1))fprintf(1,'迭代區(qū)間—右端b=%3.4f\n',b)fprintf(1,'試點(diǎn)2坐標(biāo)值t2=%3.4f\n',t2)fprintf(1,'函數(shù)值f2=%3.4f\n',f(t2))fprintf(1,'區(qū)間中點(diǎn)t=%3.4f\n',t)fprintf(1,'函數(shù)值f0=%3.4f\n',f(t))運(yùn)行結(jié)果如下:迭代次數(shù)k=13迭代區(qū)間—左端a=0.0000試點(diǎn)1坐標(biāo)值t1=0.0036函數(shù)值f1=-0.9767迭代區(qū)間—右端b=0.0093試點(diǎn)2坐標(biāo)值t2=0.0058函數(shù)值f2=-0.9679區(qū)間中點(diǎn)t=0.0047函數(shù)值f0=-0.9721機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第2頁。由黃金分割法在初始區(qū)間[0,3]求得的極小值點(diǎn)為t=0.0047,極小值為-0.9721。機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第2頁。用牛頓法、阻尼牛頓法及變尺度法求函數(shù)的極小點(diǎn)。(1)在用牛頓法在MATLAB的M文件編輯器中編寫的M文件,如下:function[x,fx,k]=niudunfa(x0)symsx1x2f=(x1-2)^4+(x1-2*x2)^2;fx=0;v=[x1,x2];df=jacobian(f,v);df=df.';G=jacobian(df,v);epson=1e-12;g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)});k=0;p=-G1\g1;x0=x0+p;while(norm(g1)>epson)p=-G1\g1;x0=x0+p;g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)});k=k+1;endx=x0;fx=subs(f,{x1,x2},{x(1,1),x(2,1)});運(yùn)行結(jié)果如下:>>

[x,fx,k]=niudunfa([1;1])

x

=1.897

0.9483

fx

=0.7647

k

=23

(2)用阻尼牛頓法在MATLAB的M文件編輯器中編寫的M文件,如下:function[x,fx,k]=zuniniudunfa(x0)%阻尼牛頓法symsx1x2f=(x1-2)^4+(x1-2*x2)^2;fx=0;v=[x1,x2];df=jacobian(f,v);df=df.';G=jacobian(df,v);epson=1e-12;%停機(jī)原則機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第3頁。g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第3頁。G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)});k=0;%迭代次數(shù)p=-G1\g1;a0=-p'*g1/(p'*G1*p);x0=x0+a0*p;while(norm(a0*p)>epson)p=-G1\g1;a0=-p'*g1/(p'*G1*p);x0=x0+a0*p;g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});G1=subs(G,{x1,x2},{x0(1,1),x0(2,1)});k=k+1;endx=x0;fx=subs(f,{x1,x2},{x0(1,1),x0(2,1)});運(yùn)行結(jié)果如下:>>[x,fx,k]=zuniniudunfa([1;1])

x=1.897

0.9483

fx=0.7647

k=23

(3)用變尺度法在MATLAB的M文件編輯器中編寫的M文件,如下:用共軛梯度法求函數(shù)的極小點(diǎn)(1)用共軛梯度法在MATLAB的M文件編輯器中編寫的M文件,如下:function[y,x,k]=CG(A,b,c,x0)%共軛梯度法解minf(x)=0.5*X'*A*X+b'x+ceps=1e-6;%迭代停機(jī)原則%fx=0.5*x0'.*A.*x0+b'.*x0+c;r0=A*x0+b;ifnorm(r0)<=epsx=x0;y=0.5*x'*A*x+b'*x+c;k=0;endp0=-r0;a=-r0'*p0/(p0'*A*p0);x1=x0+a*p0;r1=A*x1+b;k=0;機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第4頁。whilenorm(r1)>eps機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第4頁。beta=(r1'*r1)/(r0'*r0);p1=-r1+beta*p0;alpha=-(r1'*p1)/(p1'*A*p1);x1=x1+alpha*p1;r2=A*x1+b;p0=p1;r0=r1;r1=r2;k=k+1;endx=x1;y=0.5*x'*A*x+b'*x+c;運(yùn)行結(jié)果如下:[y,x,k]=CG([3

-1;-1

1],[-2;0],0,[2;1])

y

=

-1

x

=

1.0000

1.0000

k

=

1用變尺度法在MATLAB的M文件編輯器中編寫的M文件,如下:function[x,fx,k]=bianchidufa(A,b,c,x0)%用變尺度法求fx=0.5*x'*A*x+b'*x+c;epson=1e-12;g0=A*x0+b;G0=A;H0=eye(2);k=0;d0=-H0*g0;a0=-d0'*g0/(d0'*G0*d0);s0=a0*d0;%x(k+1)-x(k);y0=A*a0*d0;%g(k+1)-g(k);x1=x0+a0*d0;while(norm(s0)>=epson)switchkcase{10}x0=x1;g0=A*x0+b;H0=eye(2);k=0;d0=-H0*g0;a0=-d0'*g0/(d0'*G0*d0);s0=a0*d0;x1=x0+a0*d0;break機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第5頁。otherwise機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第5頁。g1=A*x1+b;y0=A*a0*d0;s0=a0*d0;%H1=H0+s0*s0'/(s0'*y0)-H0*y0*y0'*H0/(y0'*H0*y0);H1=H0+((1+y0'*H0*y0/(s0'*y0))*s0*s0'-H0*y0*s0'-s0*y0'*H0)/(s0'*y0);k=k+1;d1=-H1*g1;a1=-d1'*g1/(d1'*G0*d1);a0=a1;d0=d1;H0=H1;s0=a0*d0;x1=x1+a0*d0;breakendendx=x1;fx=0.5*x1'*A*x1+b'*x1+c;運(yùn)行結(jié)果如下:》

[x,fx,k]=bianchidufa([3

-1;-1

1],[-2;0],0,[2;1])

H1

=0.4031

0.2578

0.2578

0.8945

fx

=

-1

x

=

1.0000

1.0000

fx

=

-1

k

=

1故函數(shù)極小點(diǎn)是點(diǎn)(1,1)用鮑威爾法求函數(shù)的極小點(diǎn)。用鮑威爾法在MATLAB的M文件編輯器中編寫的M文件,如下:function[x,fx,k]=bowell(A,b,c,x0)%鮑威爾法d01=[1;0];d02=[0;1];x02=[0;0];esp=1e-12;%停機(jī)原則k=0;%迭代次數(shù)whilenorm(x0-x02)>=espk=k+1;g01=A*x0+b;a01=-d01'*g01/(d01'*A*d01);機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第6頁。x01=x0+a01*d01;機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第6頁。g02=A*x01+b;a02=-d02'*g02/(d02'*A*d02);x02=x01+a02*d02;d10=x02-x0;g10=A*x02+b;a10=-d10'*g10/(d10'*A*d10);x10=x0+a01*d01;d01=d02;d02=d10;x0=x10;endx=x0;fx=0.5*x'*A*x+b'*x+c;運(yùn)行結(jié)果如下:[x,fx,k]=bowell([2

-2;-2

4],[-4;0],0,[2;1])

fx

=

-8

x

=

4

2

fx

=

-8

k

=

3用單純形法求線性規(guī)劃問題用單純形法在MATLAB的M文件編輯器中編寫的M文件,如下:%單純形法matlab程序-danchunxingfa%求解標(biāo)準(zhǔn)型線性規(guī)劃:maxc*x;s.t.A*x=b;x>=0%本函數(shù)中的A是單純初始表,包括:最后一行是初始的檢驗(yàn)數(shù),最后一列是資源向量b%N是初始的基變量的下標(biāo)%輸出變量sol是最優(yōu)解,其中松弛變量(或剩余變量)可能不為0%輸出變量val是最優(yōu)目標(biāo)值,kk是迭代次數(shù)function[sol,val,kk]=danchunxingfa(A,N)[mA,nA]=size(A);kk=0;%迭代次數(shù)flag=1;whileflag機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第7頁。kk=kk+1;機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第7頁。ifA(mA,:)<=0%已找到最優(yōu)解flag=0;sol=zeros(1,nA-1);fori=1:mA-1sol(N(i))=A(i,nA);endval=-A(mA,nA);elsefori=1:nA-1ifA(mA,i)>0&A(1:mA-1,i)<=0%問題有無界解disp('haveinfinitesolution!');flag=0;break;endendifflag%還不是最優(yōu)表,進(jìn)行轉(zhuǎn)軸運(yùn)算temp=0;fori=1:nA-1ifA(mA,i)>temptemp=A(mA,i);inb=i;%進(jìn)基變量的下標(biāo)endendsita=zeros(1,mA-1);fori=1:mA-1ifA(i,inb)>0sita(i)=A(i,nA)/A(i,inb);endendtemp=inf;fori=1:mA-1ifsita(i)>0&sita(i)<temptemp=sita(i);outb=i;%出基變量下標(biāo)endend%以下更新Nfori=1:mA-1ifi==outbN(i)=inb;endend%以下進(jìn)行轉(zhuǎn)軸運(yùn)算機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第8頁。A(outb,:)=A(outb,:)/A(outb,inb);機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第8頁。fori=1:mAifi~=outbA(i,:)=A(i,:)-A(outb,:)*A(i,inb);endendendendend;運(yùn)行結(jié)果如下:>>A=[11104;122.535;1.12.2-3.34.40];N=[3;4];[sol,val,kk]=danchunxingfa(A,N)sol=004.00001.6667val=7.3333kk=2所以,求解線性規(guī)劃問題用單純形法在MATLAB的M文件編輯器中編寫的M文件,如下:%單純形法matlab程序-danchunxingfa%求解標(biāo)準(zhǔn)型線性規(guī)劃:maxc*x;s.t.A*x=b;x>=0%本函數(shù)中的A是單純初始表,包括:最后一行是初始的檢驗(yàn)數(shù),最后一列是資源向量b%N是初始的基變量的下標(biāo)%輸出變量sol是最優(yōu)解,其中松弛變量(或剩余變量)可能不為0%輸出變量val是最優(yōu)目標(biāo)值,kk是迭代次數(shù)function[sol,val,kk]=danchunxingfa(A,N)[mA,nA]=size(A);機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第9頁。kk=0;%迭代次數(shù)機(jī)械優(yōu)化設(shè)計(jì)MATLAB程序文件全文共11頁,當(dāng)前為第9頁。flag=1;whileflagkk=kk+1;ifA(mA,:)<=0%已找到最優(yōu)解flag=0;sol=zeros(1,nA-1);fori=1:mA-1sol(N(i))=A(i,nA);endval=-A(mA,nA);elsefori=1:nA-1ifA(mA,i)>0&A(1:mA-1,i)<=0%問題有無界解disp('haveinfinitesolution!');flag=0;break;endendifflag%還不是最優(yōu)表,進(jìn)行轉(zhuǎn)軸運(yùn)算temp=0;fori=1:nA-1ifA(mA,i)>temptemp=A(mA,i);inb=i;%進(jìn)基變量的下標(biāo)endendsita=zeros(1,mA-1);fori=1:mA-1ifA(i,inb)>0sita(i)=A(i,nA)/A(i,inb);end

溫馨提示

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

評論

0/150

提交評論