亚洲一区爱区精品无码_无码熟妇人妻AV_日本免费一区二区三区最新_国产AV寂寞骚妇

高頻課設(shè)資料3篇(高頻課程設(shè)計)

時間:2022-12-25 11:14:24 綜合范文

  下面是范文網(wǎng)小編整理的高頻課設(shè)資料3篇(高頻課程設(shè)計),供大家品鑒。

高頻課設(shè)資料3篇(高頻課程設(shè)計)

高頻課設(shè)資料1

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  目錄

  摘要.............................................................................................2

  一、Matlab運算與應(yīng)用............................................................3 .........................................................................................3 .........................................................................................3

  二、Matlab運算與應(yīng)用設(shè)計題目分析....................................4 .........................................................................................4 .........................................................................................5 .........................................................................................6 .........................................................................................7 .......................................................................................13 .......................................................................................14 .......................................................................................15 .......................................................................................17 .......................................................................................19 .....................................................................................22

  三、matlab課程設(shè)計心得體會..............................................23 參考文獻...................................................................................23

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  摘要

  MATLAB是矩陣實驗室(Matrix Laboratory)的簡稱,是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術(shù)計算語言和交互式環(huán)境,主要包括MATLAB和Simulink兩大部分。

  Matlab和Mathematica、Maple并稱為三大數(shù)學(xué)軟件。它在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計算方面首屈一指。Matlab可以經(jīng)行矩陣運算、繪制函數(shù)和數(shù)據(jù)、實現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語言的程序等,主要應(yīng)用于工程計算、控制設(shè)計、信號處理與通訊、圖像處理、信號檢測、金融建模設(shè)計與分析等領(lǐng)域。

  本次課程設(shè)計主要通過學(xué)習(xí)了解Matlab,熟悉Matlab界面、進行簡單操作,并運用此款軟件完成安排的相關(guān)題目。

  關(guān)鍵字:Matlab、課程設(shè)計、矩陣實驗室

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  一、Matlab運算與應(yīng)用

  理論分析

  Matlab是MathWorks公司的產(chǎn)品,是一個為科學(xué)和工程計算而專門設(shè)計的高級交互式放的軟件包。Matlab環(huán)境集成了圖示與精確的數(shù)值計算,是一個可以完成各種計算和數(shù)據(jù)處理可視化的、強有力的、易于使用和理解的工具。Matlab已被證明是為解決數(shù)學(xué)、物理、化學(xué)、工程、醫(yī)藥、金融和其他涉及復(fù)雜數(shù)值計算的應(yīng)用領(lǐng)域的一個十分靈活的、便于使用的工具,也是數(shù)學(xué)、數(shù)值分析和工程等課程教學(xué)的一個優(yōu)秀的教育工具。這個程序被世界各地高等學(xué)院廣泛使用,在工業(yè)應(yīng)用中也很流行,Matlab使用于PC到超級計算機以及大多數(shù)諸如PC、Macintosb和UNIX等平臺。

  Matlab中有大量的命令集和可用函數(shù)集,也通稱為Matlab M文件,這是應(yīng)用更加容易。因此,在Matlab中求解問題通常比傳統(tǒng)編程快得多,由于是采用自然表示法,因而使代碼清晰和自釋。因為多數(shù)M文件是公開的,因此,易于修改這些函數(shù)。

  Matlab中有一些命令可以用來控制Matlab語句的執(zhí)行,如條件語句、循環(huán)語句和支持用戶交互的命令。Matlab是一種高級的程序設(shè)計語言,能幫助用戶解決矩陣戶或其它問題。

  歸納與總結(jié)

  Matlab的主要特點是:

(1)有高性能數(shù)值計算的高級算法,特別適合矩陣代數(shù)領(lǐng)域;(2)有大量事先定義的數(shù)學(xué)函數(shù),并具有用戶自定義函數(shù)的能力;(3)繪圖和顯示數(shù)據(jù),并具有教育、科學(xué)和藝術(shù)學(xué)的圖解和可視化的二維、三 維圖;

(4)基于HTML的完全幫助系統(tǒng);

(5)適合個人應(yīng)用的強有力的面向矩陣/向量的高級程序設(shè)計語言;(6)與用其他語言編寫的程序結(jié)合和輸入輸出格式化的能力;

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

(7)有在多個應(yīng)用領(lǐng)域解決難題的工具箱。

  MATLAB 的應(yīng)用范圍非常廣,包括信號和圖像處理、通訊、控制系統(tǒng)設(shè)計、測試和測量、財務(wù)建模和分析以及計算生物學(xué)等眾多應(yīng)用領(lǐng)域。附加的工具箱(單獨提供的專用 MATLAB 函數(shù)集)擴展了 MATLAB 環(huán)境,以解決這些應(yīng)用領(lǐng)域內(nèi)特定類型的問題。

  二、Matlab運算與應(yīng)用設(shè)計題目分析

  已知t=linspace(0,2*pi,6),求t的正弦和正弦的絕對值。

  理論分析

  由題目已知分析知,linspace(a,b,n)為線性分割函數(shù),在a與b之間均勻地產(chǎn)生n個點值,行成n維向量。Matlab中求解正弦的函數(shù)為sin(),求取絕對值和復(fù)數(shù)模值的函數(shù)為abs()。

  程序代碼

>> t=linspace(0,2*pi,6)%創(chuàng)建線性間隔向量t,范圍從0到2pi,元素 個數(shù)為6 >> a=cos(t)%對向量t求得余弦向量a >> b=abs(a)%對余弦向量a求絕對值得絕對值向量b 運行結(jié)果

  a =

b =

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  題目總結(jié)

  為了方便給大量元素賦值,Matlab提供了一些基本矩陣,Linspace()就是其中的均分向量函數(shù)命令,大部分的Matlab函數(shù)都適用于做元素群運算,只有專門的幾個除外,那就是*、/、、^運算符和sqrtm、expm、logm三個函數(shù)。題目中用到的正弦函數(shù)sin()和取絕對值函數(shù)abs()均可用于元素群運算,也即其自變量都可以是任意階的矩陣。

  繪制余弦曲線y=cos(x)和指數(shù)函數(shù)y=x^2曲線。

  理論分析

  本題是畫函數(shù)的曲線圖,可以利用plot,ezplot等命令進行繪圖。也可以用funtool命令直接繪制函數(shù)圖象。由于plot要設(shè)置自變量的范圍,而ezplot不需要設(shè)置,所以本題采用ezplot進行畫圖。

  程序代碼:

  syms x;%聲明變量

  y1=cos(x);%將cos(s)賦值給y1 y2=x^2;% 將x^2賦值給y2 ezplot(y1);%畫函數(shù)1圖 hold on

  grid on %保持圖形 %畫方格

  ezplot(y2)%畫函數(shù)2圖

  運行結(jié)果

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  圖 題目總結(jié)

  ezplot功能簡介:

  eZPLOT即:Easy to use function plotter。它是一個易用的一元函數(shù)繪圖函數(shù)。特別是在繪制含有符號變量的函數(shù)的圖像時,ezplot要比plot更方便。因為plot繪制圖形時要指定自變量的范圍,而ezplot無需數(shù)據(jù)準備[2],直接繪出圖形。要將兩個函數(shù)繪制到同一個圖上要使用hold on 命令。

  利用for...end循環(huán)語句,求 2+4+6…+100 的值。

  理論分析

  for語句作用是按照預(yù)先設(shè)定的循環(huán)步驟重復(fù)執(zhí)行某語句段, 其語法: for 循環(huán)控制變量=存儲著該變量依次所取值的一個向量。

  循環(huán)語句塊, 本塊重復(fù)執(zhí)行的次數(shù)由上方向量的長度決定, 每次執(zhí)行, 循

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  環(huán)控制變量依次取該向量中的值.end

  程序代碼

  sum=0;%賦初值sum為0

  for i=2:2:100 %變量i變化范圍為2到100,以2步進 sum=sum + i;%累加求和 end %結(jié)束for循環(huán)

  運行結(jié)果

>> sum sum =

  2550 題目總結(jié)

  Matlab的for 循環(huán)語句有其獨有的特點, 它使用一個向量來控制循環(huán), 循環(huán)次數(shù)由向量的長度來決定, 而每次循環(huán)都依次從向量中取值.這使得Matlab循環(huán)更靈活多樣, 其循環(huán)變量取值可以不按照特定的規(guī)律;但是另一方面, Matlab 的for循環(huán)也有獨特的限制, 當次循環(huán)中改變循環(huán)變量賦值, 不會代入下次循環(huán), 所以除非在其中用break提前退出, Matlab循環(huán)的次數(shù)是預(yù)先定好的.舉個例子: for a=1:2:7 , 將循環(huán)4次, a的取值依次是1, 3, 5, 分析下面每條指令的功能并運行,觀察執(zhí)行結(jié)果。

(1)X=0::3;Y=X.*exp(-X);plot(X,Y),xlabel(‘x’),武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  ylabel(‘y’),title(‘y=x*exp(-x)’);

(2)A=zeros(3,5)A(:)=-4:5 L=abs(A)>4 islogical(L)X=A(L)

(3)A=[1:5;6:10] pow2(A)

(4)A=zeros(3,2)A(:)=1:6 A=A*(1+i)A1=A.’;B1=A’;(5)A=ones(2,3)B=ones(2)C=eye(4)D=diag(C)E=repmat(C,1,3)程序分析

? X=0::3;%變量x的取值范圍為0 ~3,以增加 Y=X.*exp(-X);%函數(shù)y=xe?x的表達式

  plot(X,Y),xlabel(‘x’), ylabel(‘y’),title(‘y=x*exp(-x)’);

%繪制y=xe?x的圖線,橫坐標為x,縱坐標為y,標題為

  y=x*exp(-x)? A=zeros(3,5)%創(chuàng)建一個3*5的零矩陣A A(:)=-4:5 %為矩陣A賦值,得到列向量范圍為-4到5,步進為1 L=abs(A)>4 %判斷矩陣A的絕對值是否大于4

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  islogical(L)%判斷L是否為邏輯值

  X=A(L)%X為邏輯數(shù)組L對應(yīng)為1的位置的數(shù)據(jù)為列向量 ? A=[1:5;6:10] %創(chuàng)建一個2*5的矩陣A,范圍為1到10,步進為1 pow2(A)%返回數(shù)組X,依次計算A中元素以2為底的冪 ? A=zeros(3,2)%創(chuàng)建一個3*2的零矩陣 A(:)=1:6 %為矩陣A賦值,范圍為1到6,步進為1 A=A*(1+i)%將矩陣A中的每一個元素乘以(1+i)A1=A.' %對A進行數(shù)組轉(zhuǎn)置生成矩陣A1 B1=A' %對A進行矩陣轉(zhuǎn)置生成矩陣B1 ? A=ones(2,3)%創(chuàng)建一個2*3的1矩陣A B=ones(2)%創(chuàng)建一個2*2的1矩陣B C=eye(4)%創(chuàng)建一個4*4的單位矩陣C D=diag(C)%獲取單位矩陣C的對角線元素矩陣D E=repmat(C,1,3)%將矩陣C生成為1*3的新矩陣E

  運行結(jié)果

  程序運行結(jié)果一

  圖

  程序運行結(jié)果二

  a =

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

  a =

-4-1 2 5 8-3 0 3 6 9-2 1 4 7 10

  L =

  0 0 0 1 1 0 0 0 1 1 0 0 0 1 1

  ans = 1

  X = 5 6

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

8 9 10

  程序運行結(jié)果三

>> pow2(A)

  ans =

64 128 256 512 1024 程序運行結(jié)果四

>> A1=A.'

  a1 =

  0 + 0 + 0 +

  0 + 0 + 0 + >> B1=A'

  B1 =

11

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  程序運行結(jié)果五

>> A=ones(2,3)A =

  1 1 1 1 1 >> B=ones(2)B =

  1 1 1 >> C=eye(4)C =

  0 0 0

  0 1 0 0

  0 0 1 0 0 0 0 1 >> D=diag(C)D =

1

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

>> E=repmat(C,1,3)E = 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 題目總結(jié)

  對于實數(shù)矩陣,矩陣轉(zhuǎn)置和數(shù)組矩陣計算結(jié)果是一樣的,但是對于復(fù)數(shù)矩陣,數(shù)組轉(zhuǎn)置和矩陣轉(zhuǎn)置的計算結(jié)果不一致。所以,對于數(shù)組轉(zhuǎn)置運算也被稱為非共軛轉(zhuǎn)置,矩陣轉(zhuǎn)置運算則被稱為共軛矩陣。數(shù)組的運算是指數(shù)組對應(yīng)元素之間的運算,也稱點運算。

  計算多項式p(x)= x3+15x2+8x在x=3和x=0:1:8時的值。

  理論分析

  由題目已知的條件分析可知是運用MATLAB計算多項式。這里運用到的是polyval()命令。通過polyval()命令可以快速的計算出在相應(yīng)值下的多項式的值。

  程序代碼

  X=3;y= x^3+15.*x^2+8.*x 式

%賦初值3給x %寫出函數(shù)表達

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

? clear all %清除所有變量 >> syms x;%聲明變量x >> y=x^3+15.*x^2+8.*x;%寫出函數(shù)表達式

>> x=0:1:8;%生成一個0到8的數(shù)組,每相鄰兩數(shù)間間隔為1 >> p=[1 15 8];%將函數(shù)表達式的系數(shù)放在數(shù)組P中 >> polyval(p,x)%用polyval函數(shù)求得表達式的值

  運行結(jié)果

  X=3時

  186 X=0:1:8時 y =

  題目總結(jié)

  Matlab為用戶提供了解決多項式運算的和插值的函數(shù)庫,ployval()就是其中的多項式求值函數(shù)。在表達多項式系數(shù)中要把缺少的自變量系數(shù)0補充到系數(shù)矩陣中。

  隨機生成一個×3的矩陣,并繪制其柱狀圖

  理論分析

  隨機生成矩陣函數(shù)可以用rand(M,N),表示隨機產(chǎn)生一個M*N的矩陣。柱狀繪圖函數(shù)可以用bar,此函數(shù)是在平面內(nèi)繪制柱狀圖,如果要繪制立體的,用bar3。

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  程序代碼

  arry=rand(,3);

%隨機生成一個*3的矩陣

  Bar(arry)%bar函數(shù)用于繪制柱狀圖 %畫出柱狀圖

  運行結(jié)果

  圖

  利用switch…case編寫以下程序:

  某商場對顧客所購買的商品實行打折銷售,標準如下(商品價格用price來表示):

  price<200 無折扣 200?price<500 5%折扣 500?price<1000 10%折扣 Price?1000 15%折扣 輸入所售商品的價格,求其實際銷售價格。

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  理論分析

  MATLAB語言為解決多分支判斷選擇提供了switch-case語句。switch-case語句的一般表達形式為: switch〈選擇判斷量〉 Case 選擇判斷值1 選擇判斷語句1 case 選擇判斷值2 選擇判斷語句2 …… otherwise 判斷執(zhí)行語句

  程序代碼

  price = input();

%輸入商品價格

  switch fix(price/100)%價格除以100后取整 case {0,1} price=price*1;case {2,3,4} price=price*;case {5,6,7,8,9} price=price*;case others price=price*;end 16

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  運行結(jié)果

  題目總結(jié)

  與其他的程序設(shè)計語言的switch-case語句不同的是,在MATLAB語言中,當其中一個case語句后的條件為真時,switch-case語句不對其后的case語句進行判斷,也就是說在MATLAB語言中,即使有多條case判斷語句為真,也只執(zhí)行所遇到的第一條為真的語句。這樣就不必像C語言那樣,在每條case語句后加上break語句以防止繼續(xù)執(zhí)行后面為真的case條件語句。

  編程將表達式

  10(s?3)s(s-6)(s-16)進行部分分式展開

  理論分析

  計算模型

  10(s?3)s(s-6)(s-16)=k1s?k2s?6?k3s?16

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  k1?10(s?3)(s?6)(s?16)10(s?3)s(s?16)10(s?3)s(s?6),s=0;k2?,s=6;k3?,s=16。

  程序代碼

  clear,close all;syms x,x=0;syms s;

  while x<20 %判斷當x<20 時 switch x

  case 0

%清除所以變量和關(guān)閉所有打開的圖像框

  k1=10*(x+3)/((x-6)*(x-16));

  X=6;

  case 6

  k2=10*(x+3)/(x*(x-16));

  X=16;

  case 16

  k3=10*(x+3)/(x*(x-6));

  X=20;end end

  y=k1/s+k2/(s-6)+k3/(s-16);

%將計算出的k1、k2、k3帶入表達式

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  運行結(jié)果

  題目總結(jié)

  本題主要在于數(shù)學(xué)運算模型建立和計算表達式的書寫,利用while…end語句對其

  進行三次循環(huán)條件判斷并計算三個常數(shù),通過switch…end語句分別給出三個常數(shù)的計算表達式,最后再將計算出的三個常數(shù)帶入到

  10(s?3)s(s-6)(s-16)=

  k1s?k2s?6?k3s?16中即可。

  已知y?e出曲線圖-1cos(t),其中t的范圍是[0 10],計算y的微分和積分并給理論分析

  已知函數(shù)方程和自變量t的變化范圍,對于積分,可以利用函數(shù)quad()對確定自變量變化范圍進行計算,格式如quad('函數(shù)名',初值,終值)所示。對于微分,可以利用函數(shù)diff()對確定自變量變化范圍進行計算。函數(shù)圖象可用funtool指令得到。

  程序代碼

  積分運算 yt='exp(-1)*cos(t)'

%寫出函數(shù)表達式

  ic=quad(yt,0,10,1e-8)%用quad函數(shù)求積分 Funtool %進行畫圖 微分運算

  syms t y

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  y=(exp(-1)*cos(t)dydt=diff(y,t)%用diff函數(shù)求解微分 funtool %進行畫圖

  運行結(jié)果

  積分運算

程序運行結(jié)果

  ic =

-

  積分圖形

  圖 20

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

  微分運算

  程序運行結(jié)果

  dydt =

-(****sin(t))/***8 微分圖形

  圖。

  題目總結(jié)

  繪制函數(shù)圖像時還可以借助Matlab提供的專門繪制函數(shù)圖象的指令flot(),格式如flot('函數(shù)名',[初值,終值])。

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

用fminbnd求解函數(shù)f(x)?x?1/x?5在區(qū)間(1,10)上的最小值

  理論分析

  用于求某個給定函數(shù)的最小值點。使用方法是: x=fminbnd(func,x1,x2)func是函數(shù)句柄,然后x1和x2就是函數(shù)的區(qū)間,得到的結(jié)果就是使func取最小值的x值

  當然也可以使用[x,fv]=fminbnd(func,x1,x2)的方式,這個時候fv就是函數(shù) 的最小值,即有:fv=f(x)程序代碼

  f=@(x)x-1/x+5;%確定函數(shù) [x,fv]=fminbnd(f,1,10)

%求區(qū)間1到10中函數(shù)的最小值

  運行結(jié)果

  X =

  fv =

題目總結(jié)

  本題主要在于fminbnd函數(shù)的使用方法,它有兩種方式,一種是 x=fminbnd(func,x1,x2);另一種是[x,fv]=fminbnd(func,x1,x2)。運用時隨便選哪種都可以,但是如果在某個區(qū)間上是單調(diào)的,結(jié)果就有點意思了,例如clear

>> f=@(x)x^-2*x-3;

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

>> [x,fv]=fminbnd(f,2,3)

  X =

  fv =- 看樣子MATLAB是使用了定長小區(qū)間的方式計算的,而且結(jié)果也是錯誤的,這不免

  讓人對這個函數(shù)的可靠性產(chǎn)生懷疑…

  三、matlab課程設(shè)計心得體會

  這次Matlab課程設(shè)計使用了Matlab2010版本,雖然對它熟悉不過短短一個月左右時間,但也感受和學(xué)習(xí)到它的功能強大、可擴展性強和智能化程度高。它提供了豐富的操作指令,還有強大而又簡單的作圖功能。而且軟件本身還提供了演示(demo)和求助(help)的命令,讓用戶更好的學(xué)習(xí)到軟件的功能。此次課程設(shè)計學(xué)習(xí)到的不僅僅是軟件運用操作的知識,還學(xué)到了更多的學(xué)習(xí)方法。為了做好這次的課程設(shè)計,我查閱了大量的資料,并上網(wǎng)搜索了很多Matlab程序應(yīng)用的教程和詳解,這個過程使我受益匪淺,發(fā)現(xiàn)了很多關(guān)于Matlab的論壇和學(xué)習(xí)網(wǎng)站,網(wǎng)上提供了很多關(guān)于Matlab學(xué)習(xí)的方法及其自學(xué)的方法,相信這些論壇和網(wǎng)站對于將來繼續(xù)學(xué)習(xí)Matlab及其他方面的知識也都有很大的幫助。

  雖然在規(guī)定的時間內(nèi)完成了老師所布置的所有題目,但還是覺得不免有些不足,由于時間的限制,對許多Matlab所運用到的只有僅僅只是有所了解,而并沒有完全掌握,甚至可以說是只知其然,而不知其所以然。這是我認識到對于Matlab的學(xué)習(xí)任務(wù)還很艱巨,還有許多知識需要去了解,去深研。

  參考文獻

【1】陳懷身.吳大正.高西全.Matlab及在電子信息課程中的應(yīng)用[M].電子工業(yè)出版社 【2】朱習(xí)軍.張賓.劉尊年.隋思連.Matlab信號與圖像處理中的應(yīng)用[M].電子工業(yè)出版社 【3】羅建軍.Matlab教程[M].電子工業(yè)出版社.2005

  武漢理工大學(xué)《Matlab課程設(shè)計》課程設(shè)計說明書

【4】陳懷琛.Matlab及其在理工課程中的應(yīng)用指南.2000 【5】張威.Matlab基礎(chǔ)與編程入門.西安電子科技大學(xué)出版社

【5】 周開立.MATLAB基礎(chǔ)及其應(yīng)用教程.北京:北京大學(xué)出版社,2007.【5】 張智星.MAYLAB程序設(shè)計及應(yīng)用.北京:清華大學(xué)出版社,2002.【5】 陳懷琛,吳大正,高西全.MATLAB及在電子信息課程中的應(yīng)用.北京:電子工業(yè)出版社,2006.【5】 張琨.MATLAB 2010

  從入門到精通.北京:電子工業(yè)出版社,2011.

高頻課設(shè)資料2

  1設(shè)計題目

  市區(qū)地表水水廠初步設(shè)計

  2設(shè)計原始資料

用水資料

(1)生活用水

  市區(qū)規(guī)劃人口數(shù)30萬人;給水普及率按88%考慮;設(shè)定房

  屋平均層數(shù)為6層。城市用水量較均勻,時變化系數(shù)為。

(2)工業(yè)用水

  假定該市有大型工業(yè)企業(yè)2家,用水量情況如下表所示:

  工業(yè)企業(yè)用水量情況統(tǒng)計表

  企業(yè)用水

  編號

  a

  B 廠名 鋼鐵廠 化工廠 水壓 生產(chǎn)班制(時間)24 18 量(m3/d)(kg/cm2) 4000 注:上述各廠供水水質(zhì)要求同生活用水。

(3)其他

  綠化澆灑道路每日以500m計。

  原水水質(zhì)資料

  編號項目 色度 單位 度 分析結(jié)果 40 附注33 4 5 6 7 8 9 10 11

  sS 嗅和味 PH值 總硬度 溶解性總固體

  鐵 錳 氟化物 細菌總數(shù) 大腸菌群

  Mg/L 度mg/L mg/L mg/L mg/L mg/L 個/L 個/L

  600 合格 480 760 / / 6000 800

  以CaCO3計

  地形地貌與地質(zhì)

  按平坦地形設(shè)計,平均海拔高度在800米左右。

  工程地質(zhì)良好,適宜于工程建設(shè),地質(zhì)構(gòu)造一般皆為四層,耐壓力在2kg/cm2以上;

高頻課設(shè)資料3

  數(shù)值線性代數(shù)課程設(shè)計報告

  姓名:陶英 學(xué)號:0

  任課教師:楊熙

  南京航空航天大學(xué)

  2016 年 6 月 22日

  求解線性方程組的三種迭代法及其結(jié)果比較

  摘要

  當今的環(huán)境下,數(shù)值計算越來越依賴于計算機。大規(guī)模科學(xué)計算和工程技術(shù)中許多問題的解決,最終歸結(jié)為大型稀疏線性方程組的求解,其求解時間在整個問題求解時間中占有很大的比重,有的甚至達到80%。由于現(xiàn)今科學(xué)研究和大型項目中各種復(fù)雜的可以對計算精度和計算速度的要求越來越高。因此,作為大規(guī)??茖W(xué)計算基礎(chǔ)的線性代數(shù)方程組的高效數(shù)值求解引起了人們的普遍關(guān)注。這種方程組的求解一般采用迭代法。

  關(guān)于迭代法,是有很多種解決公式的:Jacobi,G-S和超松弛迭代法。這三種方法的原理大致相同,Jacobi需要給定初向量,G-S則需要給定初值,超松弛法是對Guass-Seidel迭代法的加權(quán)平均改造。而本文則是對大型稀疏線性方程組迭代求解與三種迭代法(Jacobi,Gauss-Seidel和超松弛迭代法)的收斂速度與精確解的誤差比較做出研究。

  關(guān)鍵詞:Jacobi迭代法;Gauss-Seidel迭代法;SOR迭代法;線性方程組 方法與理論的敘述

  迭代法簡介

  迭代法:

  對于非奇異線性方程組Ax=b,令A(yù)=D-L-U,其中

  則原方程組可改寫為:

  其中

  給定初始向量:

  由()可以構(gòu)造迭代公式:

  其分量形式為:

)(迭代法: 類似于Jacobi迭代法,給定初值:

  令

  則得到Guass-Seidel公式:

  其分量形式為:

  3.超松弛迭代法(SOR 迭代法):

  sOR迭代法是對Guass-Seidel迭代法的加權(quán)平均改造,即

  為Guass-Seidel迭代解,即

  它的分量形式為:

  其中ω稱為松弛因子,當ω>1時稱為超松弛;當ω<1時叫低松弛;ω=1時就是

  guass-Seidel迭代。

  上述三種經(jīng)典迭代法收斂的充分必要條件是迭代矩陣譜半徑小于1。

  譜半徑不易求解,而在一定條件下,通過系數(shù)矩陣A的性質(zhì)可判斷迭代法的收斂性。定理1:

  若系數(shù)矩陣A是嚴格對角占優(yōu)或不可約對角占優(yōu),則Jacobi迭代法和Gauss-Seidel迭代法均收斂。定理2:

(1)SOR迭代法收斂的必要條件是0

(2)若系數(shù)矩陣A嚴格對角占優(yōu)或不可約對角占優(yōu)且0

  問題

  考慮兩點邊值問題:

?d2ydy?a,0?a?1??2? dx?dx?y(0)?0,y(1)?1.??1?a(1?e?)?ax 容易知道它的精確解為:y??1/?1?ex為了將微分方程離散,把[0,1]區(qū)間n等分,令h=1/n,xi?ih,i?1,2,...n?1,得到差分方程

(??h)yi?1?(2??h)yi??yi?1?ah2,從而得到迭代方程組的系數(shù)矩陣A。

  對?=1,a=1/2,n=100,分別用jacobi,G-S,超松弛迭代法分別求線性方程組的解,要求4位有效數(shù)字,然后比較與精確解的誤差。

  對?=,?=,?=,考慮同樣問題。

  1.方程的表示及存儲

  由于本題中線性方程組的系數(shù)矩陣為三對角矩陣,所以可以采用緊縮方法存儲,即

  然后在矩陣乘法時對下標處理一下即可。但是考慮到三種迭代方法的一般性,且本題中n=200并不是很大,所以實驗中并沒有采用緊縮存儲,而是采用了直接存儲。2.邊值條件的處理

  由于差分得到的方程組的第一行和最后一行中分別出現(xiàn)了邊值y(0)與y(1)作為常數(shù)項,因此要在常向量的第一項和最后一項作一些修改:

  3.迭代終止條件

  首先確定要求的精度tol,我們希望當

  則停止迭代。對于迭代格式,若

  且,則迭代序列的

  第k 次近似解和精確解之間有估計式由題目要求知我們需要有

。,而由上面的迭代估計,只要,即取為,因此最后令迭代終止條件為

  即可。而本題中q可近似

迭代中最佳松弛因子的選取

  由于SOR 迭代法的效果和其松弛因子w的選取有關(guān),所以有必要選取合適的松弛因子。當選擇最佳松弛因子

  時,SOR 方法的迭代速度最快。

  Matlab實現(xiàn):

  迭代矩陣是n-1階的,不是n階;

  等號右端向量b的最后一項,不是ah^2,而是ah^2-eps-h

  精確解

?1?ay?(1?e?)?ax ?1/?1?ex帶入a=1/2,?=1 代碼: >> clear >> x=linspace(0,1);truy=()/(1-exp(-1/1))*(1-exp(-x./1))+x.*;figure;plot(x,truy,'g','LineWidth',);hold on;Grid

  圖:

  三種迭代法

  Jacobi法:代碼見附錄 Eps=1 結(jié)果:

  迭代次數(shù)k: 結(jié)果與精確解的比較圖(綠色粗線是精確解,黑色細線是迭代結(jié)果)

  eps= 結(jié)果:

  迭代次數(shù)k:8753 結(jié)果與精確解的比較圖(綠色粗線是精確解,黑色細線是迭代結(jié)果)

  eps= 結(jié)果:

  迭代次數(shù)k:661 結(jié)果與精確解的比較圖(綠色粗線是精確解,黑色細線是迭代結(jié)果)

  g-S迭代法:代碼見附錄 Eps=1 結(jié)果:

  迭代次數(shù)k: 結(jié)果與精確解的比較圖(綠色粗線是精確解,黑色細線是迭代結(jié)果)

  eps= 結(jié)果:

  迭代次數(shù)k:4394 結(jié)果與精確解的比較圖(綠色粗線是精確解,黑色細線是迭代結(jié)果)

  eps= 結(jié)果:

  迭代次數(shù)k:379 結(jié)果與精確解的比較圖(綠色粗線是精確解,黑色細線是迭代結(jié)果)

  超松弛法:代碼見附錄 Eps=1 w= 結(jié)果:

  迭代次數(shù)k:3503 結(jié)果與精確解的比較圖(綠色粗線是精確解,黑色細線是迭代結(jié)果)

  eps= w= 結(jié)果:

  迭代次數(shù)k:1369 結(jié)果與精確解的比較圖(綠色粗線是精確解,黑色細線是迭代結(jié)果)

  eps= w= 結(jié)果:

  迭代次數(shù)k:131 結(jié)果與精確解的比較圖(綠色粗線是精確解,黑色細線是迭代結(jié)果)分析討論及心得體會

  三種方法的比較

  Jacobi、G-S、超松弛法,三者都能夠取得對精確解的良好逼近,但是,在相同的精度條件下,三者的收斂速度是不一樣的,jacobi

  心得體會

  這次課程設(shè)計,平時感覺挺簡單的那些枯燥單調(diào)的代碼和數(shù)學(xué)公式,真正到了自己運用的時候卻無從下手,但是,解決問題的過程恰是不斷學(xué)習(xí)的過程:數(shù)學(xué)算法轉(zhuǎn)換為代碼的過程要對題目有深入的了解,然后對程序函數(shù)定義還要有一定的掌握能力,通過這個的過程讓我鞏固了自己的數(shù)學(xué)知識,對數(shù)學(xué)專業(yè)知識和MATLAB的操作有了更深的體會。

  課程設(shè)計中遇到的問題只憑自己苦思冥想是不能全部解決的,這是同學(xué)老師的建議和網(wǎng)絡(luò)給了我很大的幫助。遇到自己解決不了的問題時,多多向老師同學(xué)請教,或許問題就能迎刃而解。

  4參考文獻

[1]徐樹方.數(shù)值線性代數(shù).北京:北京大學(xué)出版社,1995.[2]馬昌鳳.現(xiàn)代數(shù)值分析.北京:國防工業(yè)出版社.2013.[3]劉春鳳,米翠蘭.實用數(shù)值分析教程.北京冶金工業(yè)出版社.2006

  5附錄

  源代碼

  function [y,k]=jacobi2(a,eps,h,delta)n=/h;A=ones(n-1);y=zeros(n-1,1);z=zeros(n-1,1);k=0;for i=1:n-1 for j=1:n-1 A(i,j)=0;end end

  for i=1:n-1 A(i,i)=-(2*eps+h);end

  for i=1:n-1 for j=1:n-1 if i==j+1 A(i,j)=eps;end

  if i==j-1 A(i,j)=eps+h;end

  end end

  B=zeros(n-1,1);for i=1:n-2 b(i,1)=a*h^2;end

  B(n-1,1)=a*h^2-eps-h;D=zeros(n-1);for i=1:n-1 D(i,i)=A(i,i);end

  L=zeros(n-1);for i=1:n-1 for j=1:n-1 if i>j L(i,j)=-A(i,j);end

  end end

  U=zeros(n-1);for i=1:n-1 for j=1:n-1 if i

  end end

  B=D(L+U);g=Db;while 1 z=B*y+g;if norm(z-y,inf)

  y=z;k=k+1;end

  X=linspace(0,1);truy=(1-a)/(1-exp(-1/eps))*(1-exp(-x./eps))+x.*a;figure;plot(100*x,truy,'g','LineWidth',5);hold on;grid hold on;plot(y,'b')

: function [y,k]=gs2(a,eps,h,delta)n=/h;A=ones(n-1);y=zeros(n-1,1);z=zeros(n-1,1);k=0;for i=1:n-1 for j=1:n-1 A(i,j)=0;end end

  for i=1:n-1 A(i,i)=-(2*eps+h);end

  for i=1:n-1 for j=1:n-1 if i==j+1 A(i,j)=eps;end

  if i==j-1 A(i,j)=eps+h;end

  end end

  B=zeros(n-1,1);for i=1:n-2 b(i,1)=a*h^2;end

  B(n-1,1)=a*h^2-eps-h;D=zeros(n-1);for i=1:n-1 D(i,i)=A(i,i);end

  L=zeros(n-1);for i=1:n-1 for j=1:n-1 if i>j L(i,j)=-A(i,j);end

  end end

  U=zeros(n-1);for i=1:n-1 for j=1:n-1 if i

  end end

  B=D(L+U);g=Db;while 1 z=(D-L)U*y+(D-L)b;if norm(z-y,inf)

  y=z;k=k+1;end

  X=linspace(0,1);truy=(1-a)/(1-exp(-1/eps))*(1-exp(-x./eps))+x.*a;figure;plot(100*x,truy,'g','LineWidth',5);hold on;grid hold on;plot(y,'b')

  function [y,k]=sor(a,eps,h,delta,w)n=/h;A=ones(n-1);y=zeros(n-1,1);z=zeros(n-1,1);k=0;for i=1:n-1 for j=1:n-1 A(i,j)=0;end end

  for i=1:n-1 A(i,i)=-(2*eps+h);end

  for i=1:n-1 for j=1:n-1 if i==j+1 A(i,j)=eps;end if i==j-1 A(i,j)=eps+h;end

  end end

  B=zeros(n-1,1);for i=1:n-2 b(i,1)=a*h^2;end

  B(n-1,1)=a*h^2-eps-h;D=zeros(n-1);for i=1:n-1 D(i,i)=A(i,i);end

  L=zeros(n-1);for i=1:n-1 for j=1:n-1 if i>j L(i,j)=-A(i,j);end

  end end

  U=zeros(n-1);for i=1:n-1 for j=1:n-1 if i

  end end

  B=D(L+U);g=Db;Lw=((D-w*L)^-1)*((1-w)*D+w*U);while 1 z=Lw*y+w*(D-w*L)^-1*b;if norm(z-y,inf)

  y=z;k=k+1;end

  X=linspace(0,1);truy=(1-a)/(1-exp(-1/eps))*(1-exp(-x./eps))+x.*a;figure;plot(100*x,truy,'g','LineWidth',5);hold on;grid hold on;plot(y,'b')

高頻課設(shè)資料3篇(高頻課程設(shè)計)相關(guān)文章: