![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/f14fd3de-d4da-4deb-a840-fdec9828a7d9/f14fd3de-d4da-4deb-a840-fdec9828a7d9pic.jpg)
![最優(yōu)化算法課程設(shè)計(jì)--解方程組及非線性方程組_第1頁(yè)](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/f14fd3de-d4da-4deb-a840-fdec9828a7d9/f14fd3de-d4da-4deb-a840-fdec9828a7d91.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)任務(wù)書(shū)</b></p><p> 2012—2013 學(xué)年第1學(xué)期</p><p> 課程名稱: 最優(yōu)化算法 </p><p> 設(shè)計(jì)題目:
2、解方程組及非線性方程組 </p><p> 完成期限:自 2012 年 12 月 17 日至 2012 年 12 月 21 日共 1 周</p><p> 指導(dǎo)教師(簽字): 年 月 日</p><
3、p> 系(教研室)主任(簽字): 年 月 日</p><p><b> 一、問(wèn)題重述</b></p><p> ?。?) 應(yīng)用GMRES方法,用求解方程組</p><p> (2)分別用不動(dòng)點(diǎn)迭代方法和Newton法求解,初始迭代點(diǎn)為(0,0)</p><
4、p><b> 二、問(wèn)題分析</b></p><p><b> 問(wèn)題1</b></p><p> 需用GMRES方法求解線性方程組,首先建立函數(shù)gmres函數(shù),儲(chǔ)存如下將gmres.m保存,再新建文件并調(diào)用gmres函數(shù),賦初始值,則可輸出函數(shù)值。</p><p><b> 問(wèn)題2</b>
5、;</p><p> 需用不動(dòng)點(diǎn)迭代方法和Newton法求解非線性方程組,首先建立函數(shù)fun儲(chǔ)存,如下將fun.m保存;其次建立函數(shù)dfun用來(lái)求方程組的雅克比矩陣將dfun.m保存;再編程牛頓法求解非線性方程組將newton.m保存;然后將迭代過(guò)程寫(xiě)入txt文檔文件名為iteration.txt;最終在調(diào)用matlab中newton函數(shù),并賦初始值,則可輸出函數(shù)值。</p><p>&
6、lt;b> 三、求解方法</b></p><p><b> 問(wèn)題1</b></p><p><b> clear</b></p><p><b> clc</b></p><p><b> global A;</b></p
7、><p> format long</p><p> A=[10 -1 0; -1 10 -2; 0 -2 10];</p><p> b=[9,7,8]'; </p><p> x0=[0,0,0]';</p><p> params=[1e-14,30]; </p><p
8、> fprintf (' Error_rk \n')</p><p> [x, error, total_iters]=gmresb(x0,b,'atv', params)</p><p> %fprintf('x的近似解:\n')</p><p> %fprintf('
9、 %10.5e\n',x)</p><p> %fprintf ('迭代次數(shù):\n')</p><p> %fprintf (' % d \n', total_iters)</p><p> %fprintf ('解的誤差:\n')</p><p
10、> %fprintf (' %11 .5e \n', error)</p><p> fprintf (' \n')</p><p><b> 問(wèn)題二</b></p><p> function df=dfun(x);</p><p> %用來(lái)求解方程組的雅克比矩
11、陣儲(chǔ)存在dfun中</p><p><b> f=fun(x);</b></p><p> df=[diff(f,'x1');diff(f,'x2')];</p><p> df=conj(df');</p><p> newton([0 0],0.00001,20)<
12、;/p><p><b> 四、求解過(guò)程</b></p><p><b> 問(wèn)題1</b></p><p> function [x,error, total_iters] = gmresb(x0, b, atv, params)</p><p> n=length(b);</p>
13、<p> errtol=params(1);</p><p> kmax=params(2);</p><p><b> x=x0;</b></p><p> h=zeros(kmax);</p><p> v=zeros(n,kmax);</p><p> if norm(
14、x) ~=0</p><p> r = b-feval(atv,x);</p><p><b> else</b></p><p><b> r = b;</b></p><p><b> end</b></p><p> rho=norm(r
15、);</p><p> errtol=errtol*norm(b);</p><p><b> error=[];</b></p><p> error=[error,rho];</p><p> total_iters=0;</p><p> if(rho < errtol) &
16、lt;/p><p><b> return</b></p><p><b> end</b></p><p> v(:,1)=r/rho;</p><p><b> beta=rho;</b></p><p><b> k=0;</
17、b></p><p> while((rho > errtol) & (k < kmax))</p><p><b> k=k+1;</b></p><p> v(:,k+1)=feval(atv,v(:,k));</p><p><b> %</b></p&
18、gt;<p> % Modified Gram-Schmidt</p><p><b> %</b></p><p><b> for j=1:k</b></p><p> h(j,k)=v(:,k+1)'*v(:,j);</p><p> v(:,k+1)=v(:,
19、k+1)-h(j,k)*v(:,j);</p><p><b> end</b></p><p> h(k+1,k)=norm(v(:,k+1));</p><p><b> %</b></p><p> % Watch out for happy breakdown.</p>
20、;<p><b> %</b></p><p> if(h(k+1,k) ~= 0)</p><p> v(:,k+1)=v(:,k+1)/h(k+1,k);</p><p><b> end</b></p><p> % Formulate and solve the le
21、ast squares problem.</p><p> % Update the residual approximation.</p><p><b> %</b></p><p> y=h(1:k+1,1:k)\(beta*eye(k+1,1));</p><p> rho=norm(beta*eye(k
22、+1,1) - h(1:k+1,1:k)*y);</p><p> error=[error,rho];</p><p><b> end</b></p><p> % At this point either k > kmax or rho < errtol.</p><p> % It's
23、 time to compute x and leave.</p><p><b> %</b></p><p> total_iters=k;</p><p> x = x + v(1:n,1:k)*y;</p><p> function [ax] = atv(x)</p><p>&
24、lt;b> global A</b></p><p><b> ax=A*x;</b></p><p><b> 問(wèn)題二</b></p><p> function x=newton(x0,eps,N);</p><p><b> con=0;</b>
25、;</p><p> %其中x0為迭代初值eps為精度要求N為最大迭代步數(shù)con用來(lái)記錄結(jié)果是否收斂</p><p> for i=1:N;</p><p> f=subs(fun(x0),{'x1' 'x2'},{x0(1) x0(2)});</p><p> df=subs(dfun(x0),{
26、39;x1' 'x2'},{x0(1) x0(2)});</p><p> x=x0-f/df;</p><p> for j=1:length(x0);</p><p> il(i,j)=x(j);</p><p><b> end</b></p><p> i
27、f norm(x-x0)<eps</p><p><b> con=1;</b></p><p><b> break;</b></p><p><b> end</b></p><p><b> x0=x;</b></p>&
28、lt;p><b> end</b></p><p><b> 五、結(jié)果</b></p><p><b> 問(wèn)題一</b></p><p> Error_rk </p><p> x =1.00000000000000</p><p>
29、 1.00000000000000</p><p> 1.00000000000000</p><p> error=13.92838827718412 1.8675025938955 0.19666640169080 0.00000000000000</p><p> total_iters = 3</p><p>&l
30、t;b> >></b></p><p><b> 問(wèn)題二</b></p><p><b> ans =</b></p><p> 1.54634284935363 1.39117624667800</p><p><b> 六、附件</b&
31、gt;</p><p><b> 問(wèn)題一</b></p><p> function [x,error, total_iters] = gmresb(x0, b, atv, params)</p><p> n=length(b);</p><p> errtol=params(1);</p>&l
32、t;p> kmax=params(2);</p><p><b> x=x0;</b></p><p><b> %%</b></p><p> h=zeros(kmax);</p><p> v=zeros(n,kmax);</p><p> %r=b-f
33、eval(atv,x);</p><p> if norm(x) ~=0</p><p> r = b-feval(atv,x);</p><p><b> else</b></p><p><b> r = b;</b></p><p><b> end
34、</b></p><p> rho=norm(r);</p><p> errtol=errtol*norm(b);</p><p> error=[];%</p><p> % test for termination on entry%</p><p> error=[error,rho];&
35、lt;/p><p> total_iters=0;</p><p> if(rho < errtol) </p><p><b> return</b></p><p><b> end%%</b></p><p> v(:,1)=r/rho;</p>
36、<p><b> beta=rho;</b></p><p><b> k=0;%</b></p><p> % GMRES iteration</p><p><b> %</b></p><p> while((rho > errtol) &a
37、mp; (k < kmax))</p><p><b> k=k+1;</b></p><p> v(:,k+1)=feval(atv,v(:,k));%</p><p> % Modified Gram-Schmidt%</p><p><b> for j=1:k</b></
38、p><p> h(j,k)=v(:,k+1)'*v(:,j);</p><p> v(:,k+1)=v(:,k+1)-h(j,k)*v(:,j);</p><p><b> end</b></p><p> h(k+1,k)=norm(v(:,k+1));%</p><p> %
39、 Watch out for happy breakdown.%</p><p> if(h(k+1,k) ~= 0)</p><p> v(:,k+1)=v(:,k+1)/h(k+1,k);</p><p><b> end</b></p><p><b> %</b></p>
40、<p> % Formulate and solve the least squares problem.</p><p> % Update the residual approximation.</p><p><b> %</b></p><p> y=h(1:k+1,1:k)\(beta*eye(k+1,1));&
41、lt;/p><p> rho=norm(beta*eye(k+1,1) - h(1:k+1,1:k)*y);</p><p> error=[error,rho];</p><p><b> end</b></p><p> %% At this point either k > kmax or rho <
42、; errtol.</p><p> % It's time to compute x and leave.</p><p><b> %</b></p><p> total_iters=k;</p><p> x = x + v(1:n,1:k)*y;</p><p> fu
43、nction [ax] = atv(x)</p><p><b> global A</b></p><p><b> ax=A*x;</b></p><p><b> clear</b></p><p><b> clc</b></p>
44、;<p><b> global A;</b></p><p> format long</p><p> A=[10 -1 0; -1 10 -2; 0 -2 10];</p><p> b=[9,7,8]'; </p><p> x0=[0,0,0]';</p>
45、<p> params=[1e-14,30]; </p><p> fprintf (' Error_rk \n')</p><p> [x, error, total_iters]=gmresb(x0,b,'atv', params)</p><p> %fprintf('x的近似解
46、:\n')</p><p> %fprintf(' %10.5e\n',x)</p><p> %fprintf ('迭代次數(shù):\n')</p><p> %fprintf (' % d \n', total_iters)</p><p>
47、; %fprintf ('解的誤差:\n')</p><p> %fprintf (' %11 .5e \n', error)</p><p> fprintf (' \n')</p><p><b> 問(wèn)題二</b></p><p> function
48、 f=fun(x);</p><p> syms x1 x2 </p><p> f1=x1^2-x2-1;</p><p> f2=(x1-2)^2+(x2-0.5)^2-1;</p><p> f=[f1 f2];</p><p><b> 建立函數(shù)dfun</b></p>
49、;<p> 用來(lái)求方程組的雅克比矩陣將dfun.m保存到工作路徑中:</p><p> function df=dfun(x);</p><p> %用來(lái)求解方程組的雅克比矩陣儲(chǔ)存在dfun中</p><p><b> f=fun(x);</b></p><p> df=[diff(f,'
50、x1');diff(f,'x2')];</p><p> df=conj(df');</p><p> 編程牛頓法求解非線性方程組將newton.m保存到工作路徑中:</p><p> function x=newton(x0,eps,N);</p><p><b> con=0;</b
51、></p><p> %其中x0為迭代初值eps為精度要求N為最大迭代步數(shù)con用來(lái)記錄結(jié)果是否收斂</p><p> for i=1:N;</p><p> f=subs(fun(x0),{'x1' 'x2'},{x0(1) x0(2)});</p><p> df=subs(dfun(x0),
52、{'x1' 'x2'},{x0(1) x0(2)});</p><p> x=x0-f/df;</p><p> for j=1:length(x0);</p><p> il(i,j)=x(j);</p><p><b> end</b></p><p>
53、 if norm(x-x0)<eps</p><p><b> con=1;</b></p><p><b> break;</b></p><p><b> end</b></p><p><b> x0=x;</b></p>
54、<p><b> end</b></p><p> 將迭代過(guò)程寫(xiě)入txt文檔文件名為iteration.txt</p><p> fid=fopen('iteration.txt','w');</p><p> fprintf(fid,'iteration');</p&
55、gt;<p> for j=1:length(x0)</p><p> fprintf(fid,' x%d',j);</p><p><b> end</b></p><p><b> for j=1:i</b></p><p> fprint
56、f(fid,'\n%6d ',j);</p><p> for k=1:length(x0)</p><p> fprintf(fid,' %10.6f',il(j,k));</p><p><b> end</b></p><p><b> end</b&
57、gt;</p><p><b> if con==1</b></p><p> fprintf(fid,'\n計(jì)算結(jié)果收斂!');</p><p><b> end</b></p><p><b> if con==0</b></p>&l
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 線性方程組
- 非線性方程組求解.doc
- 非線性方程組求解.doc
- 非線性方程組求解.doc
- 非線性方程組迭代解法
- 非線性方程組求解.doc
- 數(shù)值分析課程設(shè)計(jì)(求解線性方程組)
- 數(shù)值分析課程設(shè)計(jì)---線性方程組求解
- 非線性方程組迭代法
- 《線性方程組》ppt課件
- 線性方程組求解.doc
- 數(shù)值方法課程設(shè)計(jì)---牛頓法解非線性方程組
- 線性方程組求解.doc
- 求解對(duì)稱非線性方程組的PSB算法.pdf
- 求解非線性方程組和最優(yōu)化的matlab gui設(shè)計(jì)[開(kāi)題報(bào)告]
- 求解非線性方程組和最優(yōu)化的matlab gui設(shè)計(jì)[文獻(xiàn)綜述]
- 求解無(wú)窮線性方程組.pdf
- 線性方程組的矩陣求法
- 線性方程組的矩陣求法
- 非線性方程組的同倫算法及應(yīng)用.pdf
評(píng)論
0/150
提交評(píng)論