• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      運用高斯消去法的心得體會

      2019-10-06 03:28許俊豪
      關(guān)鍵詞:線性方程組矩陣算法

      許俊豪

      【摘 要】數(shù)學(xué)上,高斯消元法(或譯:高斯消去法),是線性代數(shù)規(guī)劃中的一個算法,可用來為線性方程組求解。但其算法十分復(fù)雜,不常用于加減消元法,求出矩陣的秩,以及求出可逆方陣的逆矩陣。不過,如果有過百萬條等式時,這個算法會十分省時。一些極大的方程組通常會用迭代法以及花式消元來解決。當(dāng)用于一個矩陣時,高斯消元法會產(chǎn)生出一個“行梯陣式”。高斯消元法可以用在電腦中來解決數(shù)千條等式及未知數(shù)。亦有一些方法特地用來解決一些有特別排列系數(shù)的方程組。該方法以數(shù)學(xué)家高斯命名,由拉布扎比。伊丁特改進,發(fā)表于法國但最早出現(xiàn)于中國古籍《九章算術(shù)》,成書于約公元前150年。

      【關(guān)鍵詞】高斯消去法;線性方程組;算法;矩陣

      一、我對高斯消去法感興趣的原因

      在剛開始聽周老師講高斯消去法時我一下子提起了興趣,因為從小我就對高斯這個偉大的數(shù)學(xué)家充滿興趣,高斯是一位天才,知道他用99+1=100這種首尾相加解決了求和問題,那個故事我還記憶猶新,這也許是高斯消去法的靈感源泉,因為把矩陣化為上三角或者下三角相當(dāng)于化整,我覺得這種方法的靈感值得我們學(xué)習(xí)數(shù)學(xué)的人員借鑒,并且高斯公式也運用的很廣泛。

      當(dāng)聽到高斯這個名字,我立馬打起精神來學(xué)習(xí),然后我發(fā)現(xiàn)它和我們之前學(xué)習(xí)的高等代數(shù)有關(guān),確實是一個古老的求解線性方程的方法,而我國在古代《九章算術(shù)》中就有涉及,但我覺得越古老就越經(jīng)典,它可以拿出來用,就說明它的基本思想是很經(jīng)典的,果然在學(xué)習(xí)了數(shù)值分析的高斯消去法后,它把高斯消去法原理不斷運用衍生出選主元素消去法、三角分解法,而這兩種方法利用計算機是非常方便展示出來的。

      其最基本的原理就是:用行的初等變換將原線性方程組系數(shù)矩陣化為簡單形式(上三角矩陣),從而將求解原線性方程的問題轉(zhuǎn)化為求解簡單方程組的問題。所以在電腦上輸入代碼無論多大的矩陣計算機都可以計算,并且書中解釋了消元過程,如果A是非奇異矩陣就可以得到求解公式:

      其次書中還介紹其運用在矩陣的三角分解和列主元消去法,這些在計算機上的運用是比較重要的,矩陣的三角分解法是由消元法演變而來的解線性方程組的一類方法。設(shè)方程組的矩陣形式為Ax=b,三角分解法是將系數(shù)矩陣A分解為一個下三角矩陣L和一個上三角矩陣U之積:A=LU,然后依次解兩個三角形方程組Ly=b和Ux=y,而得到原方程組的解。

      二、高斯消去法在MATLAB中的運用

      首先是用主列元高斯消去法解線性方程組:

      %%求解任意線性方程組的解

      clc;

      clear all;

      format long e

      disp(‘線性方程組求解,請輸入?yún)?shù));

      n=input(‘維數(shù)n=);

      A=input(‘矩陣A=);

      b=input(‘右端項b=);

      eps=input('控制精度eps=');

      b=b;? %%變?yōu)榱邢蛄?/p>

      A=[A b]; %%矩陣增廣

      for k=1:n-1

      B=A(k:n,k);%%先將第k列可能作為主元的元素取出方至矩陣B

      P=max(abs(B));? %%選主元P

      if(P

      disp(‘無解);

      break;

      else

      u=find((abs(B))==P); %%計算主元所在行相對與k行的位置

      if(u~=1)

      A([k,u],:)=A([u,k],:); ?%%換行

      end

      m=A(k+1:n,k)/A(k,k);? %%求出各行行乘數(shù)并放至矩陣m

      for i=1:length(m)

      A(k+i,k:n+1)=A(k+i,k:n+1)-m(i)*A(k,k:n+1); %%消元按行進行

      end

      end

      end

      if A(n,n)==0

      disp(‘無解) %%若矩陣A不滿秩,則無解

      else

      x(n)=A(n,n+1)/A(n,n);? %%由最后一行首先求出方程組的第一個解x(n)

      for i=n-1:-1:1 %%計算第i個解x(i)

      for j=1:1:n-i %%利用回代思想

      A(i,n+1)=A(i,n+1)-A(i,i+j)*x(i+j); %%減去已知部分

      end

      x(i)=A(i,n+1)/A(i,i);

      end

      end

      disp(‘方程組的解);

      x=x? %%輸出方程組的解

      其流程圖可用如下表述:

      在書中p178頁的第二題我套用用了該代碼然后解出兩個線性方程組,還是計算時間是比較快的,不然手算的話,做半年都不一定能做的對和做的出。

      接著我又在網(wǎng)上查詢了矩陣LU的分解,了解以下程序:

      A=[1,2,3;1,3,5;1,3,6];

      b=[2,3,4];

      x=grout(A,b);

      function x=grout(B,c)

      n=size(B,1);

      L=eye(n);

      U=zeros(n);

      for i=1:n

      s=0;

      t=0;

      for j=1:i-1

      s=s+L(i,j)*U(j,i:n);

      t=t+L(i+1:n,j)*U(j,i);

      end

      U(i,i:n)= B(i,i:n)-s;

      L(i+1:n,i)=(B(i+1:n,i)-t)/U(i,i);

      end

      y=grout1(L,c);

      x=grout2(U,y);

      function y=grout1(B,c)

      n=size(B,1);

      y=zeros(n,1);

      for i=1:n

      s=0;

      for j=1:i-1

      s=s+B(i,j)*y(j);

      end

      y(i)=c(i)-s;

      end

      end

      function x=grout2(U,y)

      n=size(U,1);

      x=zeros(n,1);

      for i=n:-1:1

      s=0;

      for j=n:-1:i+1

      s=s+U(i,j)*y(j);

      end

      x(i)=(y(i)-s)/U(i,i);

      end

      end

      個人認為其核心內(nèi)容總的來說是分解獲得L和U,從而解出X。在MATLAB中僅我了解到的是這種算法很方便,但不知其實際作用,然后在好奇心驅(qū)使通過查找高斯消去法在各方面各領(lǐng)域中的應(yīng)用,結(jié)果真的令人大吃一驚!

      三、高斯消去法在實際生活中的運用:

      我通過中國知網(wǎng)的論文庫查到利用高斯消去法有效求解帶電路分析。在電路系統(tǒng)的分析和設(shè)計中,在進行交流小信號分析時,所列的方程是線性代數(shù)方程,可以采用高斯消元法或LU分解法;對于直流非線性分析,所列方程是非線性代數(shù)方程,可以采用牛頓一拉夫森方法迭代求解。

      例如在電路的直流分析中,電容開路,電感短路,計算電路的靜態(tài)工作點。在交流小信號分析中,電路也先要進行直流分析,以確定半導(dǎo)體器件的跨導(dǎo)等小信號參數(shù)。在瞬態(tài)分析中,需求出電路在指定時間區(qū)間上的解,這時電路的方程是常微分方程,求解常微分方程必須先求出電路儲能元件上的初始電流或電壓值,這也由直流分析來完成。

      線性電路的直流分析所建立的方程是線性代數(shù)方程組。對于建立電路線性代數(shù)方程組方法可以應(yīng)用節(jié)點法或改進節(jié)點法,也可以采用表矩陣法和雙圖法,這些方法都可以利用計算機自動建立。如果我們建立好了電路的代數(shù)方程組AX=B,一般可以利用高斯消去法和LU分解法來解方程組。實際上對于稍大些的電路(Cn>40),建立的矩陣A是個稀疏矩陣,矩陣含有大量的零元素??梢杂酶咚怪髟シ▉硭?。

      這相當(dāng)與建模的一部分,先列出物理模型然后再運用數(shù)學(xué)發(fā)現(xiàn)方程為大量的線性代數(shù)方程,則可以用到數(shù)學(xué)中的高斯消去法來算。我下面列出物理上高斯消去法的運用:

      以帶權(quán)圖的形式給出一個用n個結(jié)點和m個電阻連接的電路,求點1與點n兩點間的電阻。

      解法基于兩個事實:

      1.<基爾霍夫定律>:所有點的電流總流入等于總流出(除了1和n兩點)。

      2.<歐姆定律>:I=U/R=(Ex-Ey)/R

      因為電流方向不好確定,不妨令電流可正可負,那么定律1可以表示成“總流出之和等于0”,于是對每個節(jié)點列一方程,高斯消去法解之即可。

      四、掌握高斯消去法對于我的好處

      熟練掌握了高斯消去法,對于許多矩陣問題我都可以輕而易舉地解決,尤其是10階乘以上的線性方程組矩陣我可以利用計算機來求出其解,真的非常方便,我覺得這個算法的核心是化簡。運用各種方法把矩陣化簡然后把復(fù)雜的問題簡單化則成了高斯消去法。但其算法十分復(fù)雜,不常用于加減消元法,求出矩陣的秩,以及求出可逆方陣的逆矩陣。不過,如果有過百萬條等式時,這個算法會十分省時。一些極大的方程組通常會用迭代法以及花式消元來解決。當(dāng)用于一個矩陣時,高斯消元法會產(chǎn)生出一個“行梯陣式”。高斯消元法可以在電腦中來解決數(shù)千條等式及未知數(shù)。亦有一些方法特地用來解決一些有特別排列的系數(shù)的方程組。

      我覺得左方的消元過程是我最喜歡的,這就是高斯消去法的精髓,我在學(xué)習(xí)中慢慢體會到了高斯消去法能解決許多復(fù)雜問題。再熟練運用MATLAB,再難得問題也可以被計算簡化。

      五、我感受到這種算法的魔力

      在學(xué)習(xí)這種算法的過程中,我學(xué)會了一種重要的思想那就是消元,在初中高中我們也都用過消元法,這是比較經(jīng)典的,所以在大學(xué)我們學(xué)會了高斯將這種消元法衍生,所以我懂得了,我們不是不可以做到偉大,我們只需站在前人的肩膀上,將前人的智慧衍生改進,就像高斯消去法其衍生出的列主元消去法和LU解法,我們也可以像那些數(shù)學(xué)家一樣。這種算法使我著迷,使我想要了解它的一切,它既是一切的捷徑又是數(shù)學(xué)家的心血,只要我們好好讀書,好好專研,就能發(fā)現(xiàn)更優(yōu)的算法,算法的魔力是不言而喻的,讓人覺得巧妙卻又在情理之中。

      猜你喜歡
      線性方程組矩陣算法
      求解非線性方程組的Newton迭代與Newton-Kazcmarz迭代的吸引域
      基于MapReduce的改進Eclat算法
      Travellng thg World Full—time for Rree
      進位加法的兩種算法
      初等行變換與初等列變換并用求逆矩陣
      一種改進的整周模糊度去相關(guān)算法
      線性方程組解的判別
      矩陣
      矩陣
      矩陣
      彰化县| 兴宁市| 山东| 汤原县| 饶阳县| 平原县| 礼泉县| 合阳县| 彰化县| 沐川县| 方正县| 定远县| 宜阳县| 马龙县| 承德市| 清水河县| 武城县| 巴林左旗| 拉萨市| 南通市| 沁阳市| 绍兴市| 屯门区| 灌阳县| 图木舒克市| 象山县| 会理县| 依安县| 北流市| 金山区| 无为县| 都昌县| 和顺县| 宕昌县| 日照市| 双流县| 剑阁县| 蒙城县| 台湾省| 铜鼓县| 张家界市|