欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      基于matlab平臺的三種迭代法求解矩陣方程

      2020-11-16 17:20:03下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了這篇《基于matlab平臺的三種迭代法求解矩陣方程》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《基于matlab平臺的三種迭代法求解矩陣方程》。

      數(shù)值分析第二次作業(yè)

      學院:電子工程學院

      基于matlab平臺的三種迭代法求解矩陣方程組

      求解系數(shù)矩陣由16階Hilbert方程組構成的線性方程組的解,其中右端項為[2877/851,3491/1431,816/409,2035/1187,2155/1423,538/395,1587/1279,573/502,947/895,1669/1691,1589/1717,414/475,337/409,905/1158,1272/1711,173/244].要求:1)Gauss_Sedel迭代法;

      2)最速下降法;

      3)共軛梯度法;

      4)將結果進行分析對比。

      解:根據(jù)題目要求,編寫了對應算法的matlab程序,求解結果如下:(求解精度為10e-4,最大迭代次數(shù)1000)

      1、方程的解:如下圖1所示

      圖1

      三種方法求解的結果對比

      圖2

      Gause_Sedel算法收斂特性

      圖3

      最速下降法收斂特性

      圖3

      共軛梯度法收斂特性

      從圖中可以看到,在相同的最大迭代次數(shù)和預設求解精度條件下,共軛梯度算法僅需要4次迭代便可求出方程組的解,耗時0.000454秒,而且求出解的精度最高;Gauss_Sedel方法需要465次迭代,耗時0.006779秒,求解精度最差;最速下降法需要398次迭代,耗時0.007595秒,求解精度與共軛梯度算法差不多,因此兩者求出的解也幾乎相同。從中可以得出結論,共軛梯度算法無論從求解精度還是求解速度上都優(yōu)于其他兩種,最速下降法在求解精度上幾乎與共軛梯度算法持平,但求解速度更慢。Gauss_Sedel方法在求解精度和速度兩方面都最差。

      具體的解為:

      Gauss_Sedel迭代法:

      (共需465次迭代,求解精度達到9.97e-5)

      X=[0.***

      1.01431732497804

      1.05286123930011

      0.***

      0.93***38

      0.***

      1.00661848511341

      1.03799789809258

      1.05***4

      1.062***

      1.04857676431223

      1.02856199041113

      1.01999170162638

      0.97***15

      0.***

      0.***].最速下降法:

      (共需398次迭代,求解精度達到9.94e-5)

      X=[0.***

      1.0***00

      0.***

      0.***

      0.***

      1.00378022225329

      1.0***78

      1.01928337905816

      1.02085909665194

      1.01930314197028

      1.01444777381651

      1.00704058989297

      0.***

      0.***

      0.***

      0.***].共軛梯度法:

      (共需4次迭代,求解精度達到3.98e-5)

      X=[

      0.***

      1.02707840189049

      0.***

      0.***

      0.986***7

      1.00128902564234

      1.0***14

      1.02047386502293

      1.02300905060565

      1.02163015083975

      1.01678089454399

      1.00920310863874

      0.***

      0.***

      0.***

      0.***].Matlab程序

      主程序:

      clc;clear;

      %%

      本程序用于計算第二次數(shù)值分析作業(yè),關于希爾伯特矩陣方程的解,用三種方法,分析并比較,也可推廣至任意n維的矩陣方程

      %%

      A=hilb(16);

      %生成希爾伯特系數(shù)矩陣

      b=[2877/851;3491/1431;816/409;2035/1187;2155/1423;538/395;1587/1279;573/502;947/895;1669/1691;1589/1717;414/475;337/409;905/1158;1272/1711;173/244];

      %右端向量

      M=1000;

      %最大迭代次數(shù)

      err=1.0e-4;

      %求解精度

      [x,n,xx,cc,jingdu]=yakebi_diedai(A,b,err,M);

      %

      雅克比算法求解

      tic;

      [x1,n1,xx1,cc1,jingdu1]=gauss_seidel(A,b,err,M);

      %

      gauss_seidel算法求解

      toc;

      tic;

      [x2,n2,xx2,jingdu2]=zuisuxiajiangfa(A,b,err,M);

      %

      最速下降法求解

      toc;

      tic;

      [x3,flag,jingdu3,n3]=bicg(A,b,err);

      %

      matlab內置雙共軛梯度算法求解

      toc;

      tic;

      [x4,xx4,n4,jingdu4]=con_grad(A,b,err,M);

      %

      教材共軛梯度算法求解

      toc;

      %%

      計算相應結果,用于作圖

      %%

      num=[1:16]';

      jie=[num,x1,x2,x4];

      %

      三者的解對比

      %

      三者的收斂情況對比

      num1=[1:n1]';

      fit1=[num1,jingdu1'];

      num2=[1:n2]';

      fit2=[num2,jingdu2'];

      num4=[1:n4]';

      fit4=[num4,jingdu4'];

      子函數(shù)1(Gause_Sedel算法):

      function

      [x,n,xx,cc,jingdu]

      =

      gauss_seidel(A,b,err,M)

      %

      利用迭代方法求解矩陣方程

      這里是高斯賽爾得迭代方法

      %

      A

      為系數(shù)矩陣

      b

      為右端向量

      err為精度大小

      返回求解所得向量x及迭代次數(shù)

      %

      M

      為最大迭代次數(shù)

      cc

      迭代矩陣普半徑

      jingdu

      求解過程的精度

      n

      所需迭代次數(shù)

      xx

      存儲求解過程中每次迭代產(chǎn)生的解

      for

      ii=1:length(b)

      if

      A(ii,ii)==0

      x='error';

      break;

      end

      end

      D=diag(diag(A));

      L=-tril(A,-1);

      U=-triu(A,1);

      B=(D-L)\U;

      cc=vrho(B);

      %迭代矩陣普半徑

      FG=(D-L)\b;

      x0=zeros(length(b),1);

      x=B*x0+FG;

      k=0;

      xx(:,1)=x;

      while

      norm(A*x-b)>err

      x0=x;

      x=B*x0+FG;

      k=k+1;

      xx(:,k+1)=x;

      if

      k>=M

      disp('迭代次數(shù)太多可能不收斂?。?;

      break;

      end

      n=k;

      jingdu(k)=norm(A*x-b);

      end

      end

      子函數(shù)2(最速下降算法):

      function

      [x,n,xx,jingdu]=zuisuxiajiangfa(A,b,eps,M)

      %

      利用迭代方法求解矩陣方程

      這里是最速下降迭代方法

      %

      A

      為系數(shù)矩陣

      b

      為右端向量

      err為精度大小

      返回求解所得向量x及迭代次數(shù)

      %

      %

      M

      為最大迭代次數(shù)

      jingdu

      求解過程的精度

      n

      所需迭代次數(shù)

      xx

      存儲求解過程中每次迭代產(chǎn)生的解

      x0=zeros(length(b),1);

      r0=b-A*x0;

      t0=r0'*r0/(r0'*A*r0);

      x=x0+t0*r0;

      r=b-A*x;

      xx(:,1)=x;

      k=0;

      while

      norm(r)>eps

      r=r;

      x=x;

      t=r'*r/(r'*A*r);

      x=x+t*r;

      r=b-A*x;

      k=k+1;

      xx(:,k+1)=x;

      if

      k>=M

      disp('迭代次數(shù)太多可能不收斂!');

      break;

      end

      n=k;

      jingdu(k)=norm(r);

      end

      end

      子函31(共軛梯度法):

      function

      [x,xx,n,jingdu]=con_grad(A,b,eps,M)

      %

      利用迭代方法求解矩陣方程

      這里是共軛梯度迭代方法

      %

      A

      為系數(shù)矩陣

      b

      為右端向量

      err為精度大小

      返回求解所得向量x及迭代次數(shù)

      %

      M

      為最大迭代次數(shù)

      jingdu

      求解過程的精度

      n

      所需迭代次數(shù)

      xx

      存儲求解過程中每次迭代產(chǎn)生的解

      x0=zeros(length(b),1);

      r0=b-A*x0;

      p0=r0;

      %

      t0=r0'*r0/(r0'*A*r0);

      %

      x=x0+t0*r0;

      %

      r=b-A*x;

      %

      xx(:,1)=x;

      k=0;

      x=x0;

      r=r0;

      p=p0;

      while

      norm(r)>eps

      x=x;

      r=r;

      p=p;

      afa=r'*r/(p'*A*p);

      x1=x+afa*p;

      r1=r-afa*A*p;

      beta=r1'*r1/(r'*r);

      p1=r1+beta*p;

      x=x1;

      r=r1;

      p=p1;

      k=k+1;

      xx(:,k)=x;

      if

      k>=M

      disp('迭代次數(shù)太多可能不收斂?。?;

      break;

      end

      n=k;

      jingdu(k)=norm(r);

      end

      end

      下載基于matlab平臺的三種迭代法求解矩陣方程word格式文檔
      下載基于matlab平臺的三種迭代法求解矩陣方程.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內容。

      相關范文推薦

        企業(yè)管理咨詢方程誰來求解?

        企業(yè)管理咨詢方程誰來求解? 中小民營企業(yè)所面臨的生存壓力最大,競爭更加激烈,市場環(huán)境更加殘酷,沈陽眾森企業(yè)管理咨詢公司在實踐中遇到了民營企業(yè)的各樣問題,有資金問題、戰(zhàn)略問......

        MATLAB實驗二 矩陣基本運算(一)答案

        實驗一 矩陣基本運算(一) (1)設A和B是兩個同維同大小的矩陣,問: 1)A*B和A.*B的值是否相等? ?A??234??415??43? B???35??367????54A=[2 3 4;4 1 5;3 6 7]; B=[4 3 1;3 5 2;5 4 9]; A*B, A.*B ans = 3......

        基于MATLAB數(shù)字圖像處理平臺設計

        基于MATLAB 數(shù)字圖像處理平臺設計 1 摘要 數(shù)字圖像處理技術在各個行業(yè)得到廣泛的應用,其交互式的圖形界面是操作者方便使用這些技術的途徑。本文主要介紹了基于MATLAB的圖形......

        非線性方程牛頓迭代法與斯特芬森迭代法的研究與比較

        非線性方程牛頓迭代法與斯特芬森迭代法的研究與比較 申林堅 (南昌航空大學 測試與光電工程學院 江西 南昌 330063) 摘要:本文針對一個具體的非線性方程3x2?ex?0進行研究,首先作出......

        LU分解法、列主元高斯法、Jacobi迭代法、Gauss-Seidel法的原理及Matlab程序

        一、實驗目的及題目 1.1 實驗目的: (1)學會用高斯列主元消去法,LU分解法,Jacobi迭代法和Gauss-Seidel迭代法解線性方程組。 (2)學會用Matlab編寫各種方法求解線性方程組的程序。 1.......

        課題_實驗六迭代(一)——方程求解mathmatic數(shù)學實驗報告王文翰實驗6

        實驗六迭代(一)——方程求解mathmatic數(shù)學實驗報告王文翰實驗6 2010級數(shù)學云亭班數(shù)學綜合實驗報告——迭代(方程求解、分形、混沌、幾何形狀的構造) 實驗一:迭代(一)——方程求解......

        初始負載均衡架設平臺LVS的三種機制

        在Linux下設置集群是通過Linux virtual severr來完成的,當然,負載平衡的建設前提也是在此之上的。那么,我們想要學會其中的設置過程,首先要了解它的基本構成原理,那么現(xiàn)在我們要......