久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

《數值分析》課程實驗報告(5篇模版)

時間:2020-10-09 07:20:16下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《《數值分析》課程實驗報告》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《《數值分析》課程實驗報告》。

第一篇:《數值分析》課程實驗報告

《數值分析》課程實驗報告 姓 名:

學 號:

學 院:

機 電 學 院 日 期:

2015 年 X 月X 日 目 錄 實驗一 函數插值方法 1 實驗二 函數逼近與曲線擬合 5 實驗三 數值積分與數值微分 7 實驗四 線方程組的直接解法 9 實驗五 解線性方程組的迭代法 15 實驗六 非線性方程求根 19 實驗七 矩陣特征值問題計算 21 實驗八 常微分方程初值問題數值解法 24 實驗一 函數插值方法 一、問題提出 對于給定的一元函數的n+1個節點值。試用Lagrange公式求其插值多項式或分段二次Lagrange插值多項式。

數據如下:

(1)0.4 0.55 0.65 0.80 0.95 1.05 0.41075 0.57815 0.69675 0.90 1.00 1.25382 求五次Lagrange多項式,和分段三次插值多項式,計算, 的值。(提示:結果為,)(2)1 2 3 4 5 6 7 0.368 0.135 0.050 0.018 0.007 0.002 0.001 試構造Lagrange多項式,計算的,值。(提示:結果為,)二、要求 1、利用Lagrange插值公式 編寫出插值多項式程序;

2、給出插值多項式或分段三次插值多項式的表達式;

3、根據節點選取原則,對問題(2)用三點插值或二點插值,其結果如何;

4、對此插值問題用Newton插值多項式其結果如何。Newton插值多項式如下:

其中:

三、目的和意義 1、學會常用的插值方法,求函數的近似表達式,以解決其它實際問題;

2、明確插值多項式和分段插值多項式各自的優缺點;

3、熟悉插值方法的程序編制;

4、如果繪出插值函數的曲線,觀察其光滑性。

四、實驗步驟(1)0.4 0.55 0.65 0.80 0.95 1.05 0.41075 0.57815 0.69675 0.90 1.00 1.25382 求五次Lagrange多項式,和分段三次插值多項式,計算, 的值。(提示:結果為,)第一步:先在matlab中定義lagran的M文件為拉格朗日函數代碼為:

function[c,l]=lagran(x,y)w=length(x);n=w-1;l=zeros(w,w);for k=1:n+1 v=1;for j=1:n+1 if(k~=j)v=conv(v,poly(x(j)))/(x(k)-x(j));end end l(k,:)=v;end c=y*l;end 第二步:然后在matlab命令窗口輸入:

>>>> x=[0.4 0.55 0.65 0.80,0.95 1.05];y=[0.41075 0.57815 0.69675 0.90 1.00 1.25382];>> lagran(x,y)回車得到:

ans =121.6264-422.7503 572.5667-377.2549 121.9718-15.0845 由此得出所求拉格朗日多項式為 p(x)=121.6264x5-422.7503x4+572.5667x3-377.2549x2+121.9718x-15.0845 第三步:在編輯窗口輸入如下命令:

>> x=[0.4 0.55 0.65 0.80,0.95 1.05];>> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718*x-15.0845;>> plot(x,y)命令執行后得到如下圖所示圖形,然后 >> x=0.596;>> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718*x-15.084 y =0.6262 得到f(0.596)=0.6262 同理得到f(0.99)=1.0547(2)1 2 3 4 5 6 7 0.368 0.135 0.050 0.018 0.007 0.002 0.001 試構造Lagrange多項式,和分段三次插值多項式,計算的,值。(提示:結果為,)實驗步驟:

第一步定義 function[c,l]=lagran(x,y)w=length(x);n=w-1;l=zeros(w,w);for k=1:n+1 v=1;for j=1:n+1 if(k~=j)v=conv(v,poly(x(j)))/(x(k)-x(j));end end l(k,:)=v;end c=y*l;end 定義完拉格朗日M文件 第二步:然后在matlab命令窗口輸入:

>>>> x=[1 2 3 4 5 6 7];y=[0.368 0.135 0.050 0.018 0.007 0.002 0.001];>> lagran(x,y)回車得到:

ans =0.0001-0.0016 0.0186-0.1175 0.4419-0.9683 0.9950 由此得出所求拉格朗日多項式為 p(x)=0.0001x6-0.0016x5+0.0186x4-0.1175x3+0.4419x2-0.9683x+0.9950 第三步:在編輯窗口輸入如下命令:

>> x=[1 2 3 4 5 6 7];>> y=0.0001*x.^6-0.0016*x.^5+0.0186*x.^4-0.1175*x.^3+0.4419*x.^2-0.9683*x+0.9950;>> plot(x,y)命令執行后得到如下圖所示圖形,然后 >> x=1.8;>> y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718*x-15.084 y =0.1650 得到f(0.596)=0.6262 同理得到f(6.15)=2.3644 五、實驗結論 插值是在離散數據的基礎上補插連續函數,使得這條連續曲線通過全部給定的離散數據點,它是離散函數逼近的重要方法,利用它可通過函數在有限個點處的取值狀況,估算出函數在其他點處的近似值。

實驗二 函數逼近與曲線擬合 一、問題提出 從隨機的數據中找出其規律性,給出其近似表達式的問題,在生產實踐和科學實驗中大量存在,通常利用數據的最小二乘法求得擬合曲線。

在某冶煉過程中,根據統計數據的含碳量與時間關系,試求含碳量與時間t的擬合曲線。

t(分)0 5 10 15 20 25 30 35 40 45 50 55 0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64 二、要求 1、用最小二乘法進行曲線擬合;

2、近似解析表達式為;

3、打印出擬合函數,并打印出與的誤差,;

4、另外選取一個近似表達式,嘗試擬合效果的比較;

5、* 繪制出曲線擬合圖。

三、目的和意義 1、掌握曲線擬合的最小二乘法;

2、最小二乘法亦可用于解超定線代數方程組;

3、探索擬合函數的選擇與擬合精度間的關系 四、實驗步驟:

第一步先寫出線性最小二乘法的M文件 function c=lspoly(x,y,m)n=length(x);b=zeros(1:m+1);f=zeros(n,m+1);for k=1:m+1 f(:,k)=x.^(k-1);end a=f'*f;b=f'*y';c=a\b;c=flipud(c);第二步在命令窗口輸入:

>>lspoly([0,5,10,15,20,25,30,35,40,45,50,55],[0,1.27,2.16,2.86,3.44,3.87,4.15,4.37,4.51,4.58,4.02,4.64],2)回車得到:

ans =-0.0024 0.2037 0.2305 即所求的擬合曲線為y=-0.0024x2+0.2037x+0.2305 在編輯窗口輸入如下命令:

>> x=[0,5,10,15,20,25,30,35,40,45,50,55];>> y=-0.0024*x.^2+0.2037*x+0.2305;>> plot(x,y)命令執行得到如下圖 五、實驗結論? 分析復雜實驗數據時,常采用分段曲線擬合方法。利用此方法在段內可以實現最佳逼近,但在段邊界上卻可能不滿足連續性和可導性。分段函數的光滑算法,給出了相應的誤差分析.給出了該方法在分段曲線擬合中的應用方法以及凸輪實驗數據自動分段擬合。

實驗三 數值積分與數值微分 一、問題提出 選用復合梯形公式,復合Simpson公式,Romberg算法,計算(1)(2)(3)(4)二、要求 1、編制數值積分算法的程序;

2、分別用兩種算法計算同一個積分,并比較其結果;

3、分別取不同步長,試比較計算結果(如n = 10, 20等);

4、給定精度要求ε,試用變步長算法,確定最佳步長。

三、目的和意義 1、深刻認識數值積分法的意義;

2、明確數值積分精度與步長的關系;

3、根據定積分的計算方法,可以考慮二重積分的計算問題。

四、實驗步驟 第一步:編寫各種積分的程序 復合梯形程序如下:

function I=TX(x,y)n=length(x);m=length(y);if n~=m error('The lengths of X and Y must be equal');return;end h=(x(n)-x(1))/(n-1);a=[1 2*ones(1,n-2)1];I=h/2*sum(a.*y);復合Simpson程序如下:

function s = simpr1(f,a,b,n)h=(b-a)/(2*n);s1=0;s2=0;for k=1:10 x=a+h*(2*k-1);s1=s1+feval(f,x);end for k=1:(10-1)x=a+h*2*k;s2=s2+feval(f,x);end s=h*(feval(f,a)+feval(f,b)+4*s1+2*s2)/3;end Romberg程序如下:

function I = Romber_yang(fun,a,b,ep)if nargin<4 ep=1e-5;end;m=1;h=b-a;I=h/2*(feval(fun,a)+feval(fun,b));T(1,1)=I;while 1 N=2^(m-1);h=h/2;I=I/2;for i=1:N I=I+h*feval(fun,a+(2*i-1)*h);end T(m+1,1)=I;M=2*N;k=1;while M>1;T(m+1,k+1)=(4^k*T(m+1,k)-T(m,k))/(4^k-1);M=M/2;k=k+1;end if abs(T(k,k)-T(k-1,k-1))

2、對于積分Ι=01sin?XXdx,f(0)=1,梯形積分T=0.94607307,辛普森積分S=0.94607308,Romberg積分R=0.94607307。

3、對于積分Ι=01eX4+X2dx,梯形積分T=0.39081248,辛普森積分S=0.39081185,Romberg積分R=0.39081885。

4、對于積分Ι=01ln1+X1+X2dx,梯形積分T=0.27218912,辛普森積分S=0.27219844,Romberg積分R=0.27219827。

五、實驗結論,通過本實驗學會復合梯形公式,復合Simpson公式,Romberg公式的編程與應用,掌握MATLAB提供的計算積分的各種函數的使用方法。

實驗四 線方程組的直接解法 一、問題提出 給出下列幾個不同類型的線性方程組,請用適當算法計算其解。

1、設線性方程組 ???????????????????????????????? 2、設對稱正定陣系數陣線方程組 ????????????????????????? 3、三對角形線性方程組 二、要求 1、對上述三個方程組分別利用Gauss順序消去法與Gauss列主元消去法;

平方根法與改進平方根法;

追趕法求解(選擇其一);

2、應用結構程序設計編出通用程序;

3、比較計算結果,分析數值解誤差的原因;

4、盡可能利用相應模塊輸出系數矩陣的三角分解式。

三、目的和意義 1、通過該課題的實驗,體會模塊化結構程序設計方法的優點;

2、運用所學的計算方法,解決各類線性方程組的直接算法;

3、提高分析和解決問題的能力,做到學以致用;

4、通過三對角形線性方程組的解法,體會稀疏線性方程組解法的特點。

四、實驗步驟:

列主元高斯消去法的matlab的M文件程序 function [x,det,index]=Gauss(A,b)% 求線形方程組的列主元Gauss消去法,其中,% A為方程組的系數矩陣;

% b為方程組的右端項;

% x為方程組的解;

% det為系數矩陣A的行列式的值;

% index為指標變量,index=0表示計算失敗,index=1表示計算成功。

[n,m]=size(A);nb=length(b);% 當方程組行與列的維數不相等時,停止計算,并輸出出錯信息。

if n~=m error('The rows and columns of matrix A must be equal!');return;end % 當方程組與右端項的維數不匹配時,停止計算,并輸出出錯信息 if m~=nb error('The columns of A must be equal the length of b!');return;end % 開始計算,先賦初值 index=1;det=1;x=zeros(n,1);for k=1:n-1 % 選主元 a_max=0;for i=k:n if abs(A(i,k))>a_max a_max=abs(A(i,k));r=i;end end if a_max<1e-10 index=0;return;end % 交換兩行 if r>k for j=k:n z=A(k,j);A(k,j)=A(r,j);A(r,j)=z;end z=b(k);b(k)=b(r);b(r)=z;det=-det;end % 消元過程 for i=k+1:n m=A(i,k)/A(k,k);for j=k+1:n A(i,j)=A(i,j)-m*A(k,j);end b(i)=b(i)-m*b(k);end det=det*A(k,k);end det=det*A(n,n);% 回代過程 if abs(A(n,n))<1e-10 index=0;return;end for k=n:-1:1 for j=k+1:n b(k)=b(k)-A(k,j)*x(j);end x(k)=b(k)/A(k,k);end 然后在命令窗口輸入 >> A=[4 2-3-1 2 1 0 0 0 0;8 6-5-3 6 5 0 1 0 0;4 2-2-1 3 2-1 0 3 1;0-2 1 5-1 3-1 1 9 4;-4 2 6-1 6 7-3 3 2 3;8 6-8 5 7 17 2 6-3 5;0 2-1 3-4 2 5 3 0 1;16 10-11-9 17 34 2-1 2 2;4 6 2-7 13 9 2 0 12 4;0 0-1 8-3-24-8 6 3-1];>> b=[5 12 3 2 3 46 13 38 19-21];>> gauss(A,b)ans = 1.0000-1.0000 0.0000 1.0000 2.0000 0.0000 3.0000 1.0000-1.0000 2.0000 高斯-約當消去法maltab的M文件程序 function [x,flag]=Gau_Jor(A,b)% 求線形方程組的列主元Gauss-約當法消去法,其中,% A為方程組的系數矩陣;

% b為方程組的右端項;

% x為方程組的解;

[n,m]=size(A);nb=length(b);% 當方程組行與列的維數不相等時,停止計算,并輸出出錯信息。

if n~=m error('The rows and columns of matrix A must be equal!');return;end % 當方程組與右端項的維數不匹配時,停止計算,并輸出出錯信息 if m~=nb error('The columns of A must be equal the length of b!');return;end % 開始計算,先賦初值 flag='ok';x=zeros(n,1);for k=1:n % 選主元 max1=0;for i=k:n if abs(A(i,k))>max1 max1=abs(A(i,k));r=i;end end if max1<1e-10 falg='failure';return;end % 交換兩行 if r>k for j=k:n z=A(k,j);A(k,j)=A(r,j);A(r,j)=z;end z=b(k);b(k)=b(r);b(r)=z;end % 消元過程 b(k)=b(k)/A(k,k);for j=k+1:n A(k,j)=A(k,j)/A(k,k);end for i=1:n if i~=k for j=k+1:n A(i,j)=A(i,j)-A(i,k)*A(k,j);end b(i)=b(i)-A(i,k)*b(k);end end end % 輸出x for i=1:n x(i)=b(i);end 然后保存后在命令窗口輸入:

>> A=[4 2-4 0 2 4 0 0;2 2-1-2 1 3 2 0;-4-1 14 1-8-3 5 6;0-2 1 6-1-4-3 3;2 1-8-1 22 4-10-3;4 3-3-4 4 11 1-4;0 2 5-3-10 1 14 2;0 0 6 3-3-4 2 19];>> b=[0-6 20 23 9-22-15 45];>> Gau_Jor(A,b)ans = 121.1481-140.1127 29.7515-60.1528 10.9120-26.7963 5.4259-2.0185 五、實驗結論 用LU法,調用matlab中的函數lu中,L往往不是一個下三角,但可以直接計算不用它的結果來計算,不用進行行變換。如果進行行變b也要變,這樣會很麻煩。

實驗五 解線性方程組的迭代法 一、問題提出 對實驗四所列目的和意義的線性方程組,試分別選用Jacobi 迭代法,Gauss-Seidel迭代法和SOR方法計算其解。

二、要求 1、體會迭代法求解線性方程組,并能與消去法做以比較;

2、分別對不同精度要求,如由迭代次數體會該迭代法的收斂快慢;

3、對方程組2,3使用SOR方法時,選取松弛因子ω=0.8,0.9,1,1.1,1.2等,試看對算法收斂性的影響,并能找出你所選用的松弛因子的最佳者;

4、給出各種算法的設計程序和計算結果。

三、目的和意義 1、通過上機計算體會迭代法求解線性方程組的特點,并能和消去法比較;

2、運用所學的迭代法算法,解決各類線性方程組,編出算法程序;

3、體會上機計算時,終止步驟或k >(給予的迭代次數),對迭代法斂散性的意義;

4、體會初始解,松弛因子的選取,對計算結果的影響。

四、實驗步驟 第一步編寫實驗所需的Jacobi迭代法,Gauss-Seidel迭代法,SOR迭代法的程序。

Jacobi迭代法:

function [x,k,index]=J(A,b,ep,itmax)if nargin<4 itmax=100;end if nargin<3 ep=1e-5;end n=length(A);k=0;x=zeros(n,1);y=zeros(n,1);index=1;while 1 for i=1:n y(i)=b(i);for j=1:n if j~=i y(i)=y(i)-A(i,j)*x(j);end end if abs(A(i,i))<1e-10|k==itmax index=0;return;end y(i)=y(i)/A(i,i);end if norm(y-x,inf)

function [x,k,index]=G(A,b,ep,itmax)if nargin<4 itmax=100;end if nargin<3 ep=1e-5;end n=length(A);k=0;x=zeros(n,1);y=zeros(n,1);index=1;while 1 y=x;for i=1:n z=b(i);for j=1:n if j~=i z=z-A(i,j)*x(j);end end if abs(A(i,i))<1e-10|k==itmax index=0;return;end z=z/A(i,i);x(i)=z;end if norm(y-x,inf)

function [x,k,index]=SOR(A,b,ep,w,itmax)if nargin<5 itmax=100;end if nargin<4 w=1;end if nargin<3 ep=1e-5;end n=length(A);k=0;x=zeros(n,1);y=zeros(n,1);index=1;while 1 y=x;for i=1:n z=b(i);for j=1:n if j~=i z=z-A(i,j)*x(j);end end if abs(A(i,i))<1e-10|k==itmax index=0;return;end z=z/A(i,i);x(i)=(1-w)*x(i)+w*z;end if norm(y-x,inf)

1、設線性方程組 ???????????????????????????????? 2、設對稱正定陣系數陣線方程組 3、三對角形線性方程組 五、實驗結論 迭代法是解線性方程組的一個重要的實用方法,特別適用于求解在實際中大量出現的,系數矩陣為稀疏陣的大型線性方程組。通過此次實驗學會了Jacobi迭代法,Gauss-Seidel迭代法,SOR迭代法的程序編寫,并掌握了它們各自的優缺點及其適用條件。

實驗六 非線性方程求根 一、問題提出 設方程有三個實根 現采用下面六種不同計算格式,求 f(x)=0的根或 1、2、3、4、5、6、二、要求 1、編制一個程序進行運算,最后打印出每種迭代格式的斂散情況;

2、用事后誤差估計來控制迭代次數,并且打印出迭代的次數;

3、初始值的選取對迭代收斂有何影響;

4、分析迭代收斂和發散的原因。

三、目的和意義 1、通過實驗進一步了解方程求根的算法;

2、認識選擇計算格式的重要性;

3、掌握迭代算法和精度控制;

4、明確迭代收斂性與初值選取的關系。

四、實驗步驟 第一步:編寫實驗所需的程序。

function [x_star,index,it]=DD(fun,x,ep,itmax)if nargin<4 itmax=100;end if nargin<3 ep=1e-5;end index=0;k=1;while k

1、,x1=0,x2=0。

2、,x1=無窮大,x2=-0.3473。

3、,x1=1.8794,x2=1.8794。

4、,x1=-0.3473,x2=-0.3473.。

5、,x1=1.8794,x2=1.8794。

6、,x1=1.8794,x2=-0.3473。

五、實驗結論 對于非線性方程,求它的解析解有時候是很困難的,但采用數值方法可以很容易地求它的近似解。此次實驗就是采用迭代法求非線性方程的根。對于一個非線性方程,選用不同的迭代形式,因為其收斂程度不一樣,造成其效率與精確度有很大的差別。

實驗七 矩陣特征值問題計算 一、問題提出 利用冪法或反冪法,求方陣的按模最大或按模最小特征值及其對應的特征向量。

設矩陣A的特征分布為:

且 試求下列矩陣之一(1)求,及 取 結果(2)求及 取 結果:

(3)求及 取 結果(4)取 這是一個收斂很慢的例子,迭代次才達到 結果(5)有一個近似特征值,試用冪法求對應的特征向量,并改進特征值(原點平移法)。

取 結果 二、要求 1、掌握冪法或反冪法求矩陣部分特征值的算法與程序設計;

2、會用原點平移法改進算法,加速收斂;

對矩陣B=A-PI取不同的P值,試求其效果;

3、試取不同的初始向量,觀察對結果的影響;

4、對矩陣特征值的其它分布,如且如何計算。

三、目的和意義 1、求矩陣的部分特征值問題具有重要實際意義,如求矩陣譜半徑,穩定性問題往往歸于求矩陣按模最小特征值;

2、進一步掌握冪法、反冪法及原點平移加速法的程序設計技巧;

3、問題中的題(5),反應了利用原點平移的反冪法可求矩陣的任何特征值及其特征向量。

四、實驗步驟 第一步:寫出實驗所需的冪法求最大特征值及反冪法求最小特征值的程序。

冪法程序:

function [m,u,index]=TZ(A,ep,itmax)if nargin<3 itmax=100;end if nargin<2 ep=1e-5;end n=length(A);u=ones(n,1);index=0;k=0;m1=0;while k<=itmax v=A*u;[vmax,i]=max(abs(v));m=v(i);u=v/m;if abs(m-m1)

function [m,u,index]=FTZ(A,ep,itmax)if nargin<3 itmax=100;end if nargin<2 ep=1e-5;end n=length(A);u=ones(n,1);index=0;k=0;m1=0;invA=inv(A);while k<=itmax v=invA*u;[vmax,i]=max(abs(v));m=v(i);u=v/m;if abs(m-m1)

λ3=3.4723,x3=(1.0000 0.5229 0.2422)T。,λ1=21.3053,X1=(0.8724 0.5401 0.9973 0.5644 0.4972 1.0000)T;

λ6=1.6214。

五、實驗結論 求n階方陣A的特征值和特征向量,也是實際中常常碰到的問題。通過此次實驗掌握了用冪法和反冪法求一個方陣的最大特征值和特征向量,絕對值最小的特征值和特征向量。

實驗八 常微分方程初值問題數值解法 一、問題提出 科學計算中經常遇到微分方程(組)初值問題,需要利用Euler法,改進Euler法,Rung-Kutta方法求其數值解,諸如以下問題:

(1)分別取h=0.1,0.2,0.4時數值解。

初值問題的精確解。

(2)用r=3的Adams顯式和預-校式求解 取步長h=0.1,用四階標準R-K方法求值。

(3)用改進Euler法或四階標準R-K方法求解 取步長0.01,計算數值解,參考結果。

(4)利用四階標準R-K方法求二階方程初值問題的數值解(I)(II)(III)(IV)? 二、要求 1、根據初值問題數值算法,分別選擇二個初值問題編程計算;

2、試分別取不同步長,考察某節點處數值解的誤差變化情況;

3、試用不同算法求解某初值問題,結果有何異常;

4、分析各個算法的優缺點。

三、目的和意義 1、熟悉各種初值問題的算法,編出算法程序;

2、明確各種算法的精度與所選步長有密切關系;

3、通過計算更加了解各種算法的優越性。

四、實驗步驟 function?[x,y]=euler(fun,x0,xfinal,y0,n);if nargin<5,n=50;end h=(xfinal-x0)/n;x(1)=x0;y(1)=y0;for i=1:n;x(i+1)=x(i)+h;y(i+1)=y(i)+h*feval(fun,x(i),y(i));end 實驗程序及分析(Ⅰ)(1)、算法程序 function E =Euler_1(fun,x0,y0,xN,N)% Euler向前公式,其中 % fun為一階微分方程的函數 % x0,y0為初始條件 % xN為取值范圍的一個端點 % h為區間步長 % N為區間個數 % x為Xn構成的向量 % y為yn構成的向量 x=zeros(1,N+1);y=zeros(1,N+1);x(1)=x0;y(1)=y0;h=(xN-x0)/N;for n=1:N x(n+1)=x(n)+h;y(n+1)=y(n)+h*feval(fun,x(n),y(n));end T=[x',y'] function z=f(x,y)z=4*x/y-x*y;(2)、運行程序 >> Euler_1('f',0,3,2,20)結果 :

>> Euler_1('f',0,3,2,20)T = 0 3.0000 0.1000 2.9836 0.2000 2.9517 0.3000 2.9058 0.4000 2.8481 0.5000 2.7810 0.6000 2.7073 0.7000 2.6297 0.8000 2.5511 0.9000 2.4739 1.0000 2.4004 1.1000 2.3325 1.2000 2.2714 1.3000 2.2177 1.4000 2.1717 1.5000 2.1332 1.6000 2.1017 1.7000 2.0765 1.8000 2.0567 1.9000 2.0414 2.0000 2.0299 五、實驗結論 很多科學技術和工程問題常用微分方程的形式建立數學模型,因此微分方程的求解是很有意義的,但對于絕大多數的微分方程問題很難或者根本不可能得到它的解析解,因此,研究微分方程的數值方法是非常有意義的。

第二篇:清華大學數值分析實驗報告

數值分析實驗報告

一、實驗3.1

題目:

考慮線性方程組,,編制一個能自動選取主元,又能手動選取主元的求解線性代數方程組的Gauss消去過程。

(1)取矩陣,則方程有解。取計算矩陣的條件數。分別用順序Gauss消元、列主元Gauss消元和完全選主元Gauss消元方法求解,結果如何?

(2)現選擇程序中手動選取主元的功能,每步消去過程都選取模最小或按模盡可能小的元素作為主元進行消元,觀察并記錄計算結果,若每步消去過程總選取按模最大的元素作為主元,結果又如何?分析實驗的結果。

(3)取矩陣階數n=20或者更大,重復上述實驗過程,觀察記錄并分析不同的問題及消去過程中選擇不同的主元時計算結果的差異,說明主元素的選取在消去過程中的作用。

(4)選取其他你感興趣的問題或者隨機生成的矩陣,計算其條件數,重復上述實驗,觀察記錄并分析實驗的結果。

1.算法介紹

首先,分析各種算法消去過程的計算公式,順序高斯消去法:

第k步消去中,設增廣矩陣中的元素(若等于零則可以判定系數矩陣為奇異矩陣,停止計算),則對k行以下各行計算,分別用乘以增廣矩陣的第行并加到第行,則可將增廣矩陣中第列中以下的元素消為零;重復此方法,從第1步進行到第n-1步,則可以得到最終的增廣矩陣,即;

列主元高斯消去法:

第k步消去中,在增廣矩陣中的子方陣中,選取使得,當時,對中第行與第行交換,然后按照和順序消去法相同的步驟進行。重復此方法,從第1步進行第n-1步,就可以得到最終的增廣矩陣,即;

完全主元高斯消去法:

第k步消去中,在增廣矩陣中對應的子方陣中,選取使得,若或,則對中第行與第行、第列與第列交換,然后按照和順序消去法相同的步驟進行即可。重復此方法,從第1步進行到第n-1步,就可以得到最終的增廣矩陣,即;

接下來,分析回代過程求解的公式,容易看出,對上述任一種消元法,均有以下計算公式:

2.實驗程序的設計

一、輸入實驗要求及初始條件;

二、計算系數矩陣A的條件數及方程組的理論解;

三、對各不同方法編程計算,并輸出最終計算結果。

3.計算結果及分析

(1)

先計算系數矩陣的條件數,結果如下,可知系數矩陣的條件數較大,故此問題屬于病態問題,b或A的擾動都可能引起解的較大誤差;

采用順序高斯消去法,計算結果為:

最終解為x=(1.***,1.***,1.***,1.***,0.***,1.***,0.***,1.***,0.***,1.***)T

使用無窮范數衡量誤差,得到=2.842***1e-14,可以發現,采用順序高斯消元法求得的解與精確解之間誤差較小。通過進一步觀察,可以發現,按照順序高斯消去法計算時,其選取的主元值和矩陣中其他元素大小相近,因此順序高斯消去法方式并沒有對結果造成特別大的影響。

若采用列主元高斯消元法,則結果為:

最終解為x=(1.***,1.***,1.***,1.***,1.***,1.***,1.***,1.***,1.***,1.***)T

同樣使用無窮范數衡量誤差,有=0;

若使用完全主元高斯消元法,則結果為

最終解x=(1.***,1.***,1.***,1.***,1.***,1.***,1.***,1.***,1.***,1.***)T

同樣使用無窮范數衡量誤差,有=0;

(2)

若每步都選取模最小或盡可能小的元素為主元,則計算結果為

最終解x=(1.***

1.***

1.***

1.***

0.***

1.***

0.***

1.***

0.***

1.***)T

使用無窮范數衡量誤差,有為2.842***1e-14;而完全主元消去法的誤差為=0。

從(1)和(2)的實驗結果可以發現,列主元消去法和完全主元消去法都得到了精確解,而順序高斯消去法和以模盡量小的元素為主元的消去法沒有得到精確解。在后兩種消去法中,由于程序計算時的舍入誤差,對最終結果產生了一定的影響,但由于方程組的維度較低,并且元素之間相差不大,所以誤差仍比較小。

為進一步分析,計算上述4種方法每步選取的主元數值,并列表進行比較,結果如下:

第n次消元

順序

列主元

完全主元

模最小

6.***

6.***

4.***

4.***

4.***

4.***

4.***3333

4.***3333

4.***

4.***

4.***

4.***

4.0***063

4.0***063

4.***

4.***

4.0039***

4.0039***

4.***

0.0***469

0.0***469

4.***

從上表可以發現,對這個方程組而言,順序高斯消去選取的主元恰好事模盡量小的元素,而由于列主元和完全主元選取的元素為8,與4在數量級上差別小,所以計算過程中的累積誤差也較小,最終4種方法的輸出結果均較為精確。

在這里,具體解釋一下順序法與模最小法的計算結果完全一致的原因。該矩陣在消元過程中,每次選取主元的一列只有兩個非零元素,對角線上的元素為4左右,而其正下方的元素為8,該列其余位置的元素均為0。在這樣的情況下,默認的主元也就是該列最小的主元,因此兩種方法所得到的計算結果是一致的。

理論上說,完全高斯消去法的誤差最小,其次是列主元高斯消去法,而選取模最小的元素作為主元時的誤差最大,但是由于方程組的特殊性(元素相差不大并且維度不高),這個理論現象在這里并沒有充分體現出來。

(3)

時,重復上述實驗過程,各種方法的計算結果如下所示,在這里,仍采用無窮范數衡量絕對誤差。

順序高斯消去法

列主元高斯消去

完全主元高斯消去

選取模最小或盡可能小元素作為主元消去

X

1.***

1.***

1.***

1.***

0.***

1.***

0.***

1.***

0.***

1.***

0.***

1.***

0.***

1.***

0.***

1.***

0.***

1.***

0.***

1.***

1.***

1.***

1.***

1.***

0.***

1.***

0.***

1.***

0.***

1.***

0.***

1.***

0.***

1.***

0.***

1.***

0.***

1.***

0.***

1.***

2.***e-11

0

0

2.***e-11

可以看出,此時列主元和完全主元的計算結果仍為精確值,而順序高斯消去和模盡可能小方法仍然產生了一定的誤差,并且兩者的誤差一致。與n=10時候的誤差比相比,n=20時的誤差增長了大約1000倍,這是由于計算過程中舍入誤差的不斷累積所致。所以,如果進一步增加矩陣的維數,應該可以看出更明顯的現象。

(4)

不同矩陣維度下的誤差如下,在這里,為方便起見,選取2-條件數對不同維度的系數矩陣進行比較。

維度

條件數

順序消去

列主元

完全主元

模盡量小

1.7e+3

2.84e-14

0

0

2.84e-14

1.8e+6

2.91e-11

0

0

2.91e-11

5.7e+7

9.31e-10

0

0

9.31e-10

1.8e+9

2.98e-08

0

0

2.98e-08

1.9e+12

3.05e-05

0

0

3.05e-05

3.8e+16

3.28e+04

3.88e-12

3.88e-12

3.28e+04

8.5e+16

3.52e+13

4.2e-3

4.2e-3

3.52e+13

從上表可以看出,隨著維度的增加,不同方法對計算誤差的影響逐漸體現,并且增長較快,這是由于舍入誤差逐步累計而造成的。不過,方法二與方法三在維度小于40的情況下都得到了精確解,這兩種方法的累計誤差遠比方法一和方法四慢;同樣地,出于與前面相同的原因,方法一與方法四的計算結果保持一致,方法二與方法三的計算結果保持一致。

4.結論

本文矩陣中的元素差別不大,模最大和模最小的元素并沒有數量級上的差異,因此,不同的主元選取方式對計算結果的影響在維度較低的情況下并不明顯,四種方法都足夠精確。

對比四種方法,可以發現采用列主元高斯消去或者完全主元高斯消去法,可以盡量抑制誤差,算法最為精確。不過,對于低階的矩陣來說,四種方法求解出來的結果誤差均較小。

另外,由于完全選主元方法在選主元的過程中計算量較大,而且可以發現列主元法已經可以達到很高的精確程度,因而在實際計算中可以選用列主元法進行計算。

附錄:程序代碼

clear

clc;

format

long;

%方法選擇

n=input('矩陣A階數:n=');

disp('選取求解方式');

disp('1

順序Gauss消元法,2

列主元Gauss消元法,3

完全選主元Gauss消元法,4

模最小或近可能小的元素作為主元');

a=input('求解方式序號:');

%賦值A和b

A=zeros(n,n);

b=zeros(n,1);

for

i=1:n

A(i,i)=6;

if

i>1

A(i,i-1)=8;

end

if

i

A(i,i+1)=1;

end

end

for

i=1:n

for

j=1:n

b(i)=b(i)+A(i,j);

end

end

disp('給定系數矩陣為:');

A

disp('右端向量為:');

b

%求條件數及理論解

disp('線性方程組的精確解:');

X=(A\b)'

fprintf('矩陣A的1-條件數:

%f

\n',cond(A,1));

fprintf('矩陣A的2-條件數:

%f

\n',cond(A));

fprintf('矩陣A的無窮-條件數:

%f

\n',cond(A,inf));

%順序Gauss消元法

if

a==1

A1=A;b1=b;

for

k=1:n

if

A1(k,k)==0

disp('主元為零,順序Gauss消元法無法進行');

break

end

fprintf('第%d次消元所選取的主元:%g\n',k,A1(k,k))

%disp('此次消元后系數矩陣為:');

%A1

for

p=k+1:n

l=A1(p,k)/A1(k,k);

A1(p,k:n)=A1(p,k:n)-l*A1(k,k:n);

b1(p)=b1(p)-l*b1(k);

end

end

x1(n)=b1(n)/A1(n,n);

for

k=n-1:-1:1

for

w=k+1:n

b1(k)=b1(k)-A1(k,w)*x1(w);

end

x1(k)=b1(k)/A1(k,k);

end

disp('順序Gauss消元法解為:');

disp(x1);

disp('所求解與精確解之差的無窮-范數為');

norm(x1-X,inf)

end

%列主元Gauss消元法

if

a==2

A2=A;b2=b;

for

k=1:n

[max_i,max_j]=find(A2(:,k)==max(abs(A2(k:n,k))));

if

max_i~=k

A2_change=A2(k,:);

A2(k,:)=A2(max_i,:);

A2(max_i,:)=A2_change;

b2_change=b2(k);

b2(k)=b2(max_i);

b2(max_i)=b2_change;

end

if

A2(k,k)==0

disp('主元為零,列主元Gauss消元法無法進行');

break

end

fprintf('第%d次消元所選取的主元:%g\n',k,A2(k,k))

%disp('此次消元后系數矩陣為:');

%A2

for

p=k+1:n

l=A2(p,k)/A2(k,k);

A2(p,k:n)=A2(p,k:n)-l*A2(k,k:n);

b2(p)=b2(p)-l*b2(k);

end

end

x2(n)=b2(n)/A2(n,n);

for

k=n-1:-1:1

for

w=k+1:n

b2(k)=b2(k)-A2(k,w)*x2(w);

end

x2(k)=b2(k)/A2(k,k);

end

disp('列主元Gauss消元法解為:');

disp(x2);

disp('所求解與精確解之差的無窮-范數為');

norm(x2-X,inf)

end

%完全選主元Gauss消元法

if

a==3

A3=A;b3=b;

for

k=1:n

VV=eye(n);

[max_i,max_j]=find(A3(k:n,k:n)==max(max(abs(A3(k:n,k:n)))));

if

numel(max_i)==0

[max_i,max_j]=find(A3(k:n,k:n)==-max(max(abs(A3(k:n,k:n)))));

end

W=eye(n);

W(max_i(1)+k-1,max_i(1)+k-1)=0;

W(k,k)=0;

W(max_i(1)+k-1,k)=1;

W(k,max_i(1)+k-1)=1;

V=eye(n);

V(k,k)=0;

V(max_j(1)+k-1,max_j(1)+k-1)=0;

V(k,max_j(1)+k-1)=1;

V(max_j(1)+k-1,k)=1;

A3=W*A3*V;

b3=W*b3;

VV=VV*V;

if

A3(k,k)==0

disp('主元為零,完全選主元Gauss消元法無法進行');

break

end

fprintf('第%d次消元所選取的主元:%g\n',k,A3(k,k))

%disp('此次消元后系數矩陣為:');

%A3

for

p=k+1:n

l=A3(p,k)/A3(k,k);

A3(p,k:n)=A3(p,k:n)-l*A3(k,k:n);

b3(p)=b3(p)-l*b3(k);

end

end

x3(n)=b3(n)/A3(n,n);

for

k=n-1:-1:1

for

w=k+1:n

b3(k)=b3(k)-A3(k,w)*x3(w);

end

x3(k)=b3(k)/A3(k,k);

end

disp('完全選主元Gauss消元法解為:');

disp(x3);

disp('所求解與精確解之差的無窮-范數為');

norm(x3-X,inf)

end

%模最小或近可能小的元素作為主元

if

a==4

A4=A;b4=b;

for

k=1:n

AA=A4;

AA(AA==0)=NaN;

[min_i,j]=find(AA(k:n,k)==min(abs(AA(k:n,k))));

if

numel(min_i)==0

[min_i,j]=find(AA(k:n,k)==-min(abs(AA(k:n,k:n))));

end

W=eye(n);

W(min_i(1)+k-1,min_i(1)+k-1)=0;

W(k,k)=0;

W(min_i(1)+k-1,k)=1;

W(k,min_i(1)+k-1)=1;

A4=W*A4;

b4=W*b4;

if

A4(k,k)==0

disp('主元為零,模最小Gauss消元法無法進行');

break

end

fprintf('第%d次消元所選取的主元:%g\n',k,A4(k,k))

%A4

for

p=k+1:n

l=A4(p,k)/A4(k,k);

A4(p,k:n)=A4(p,k:n)-l*A4(k,k:n);

b4(p)=b4(p)-l*b4(k);

end

end

x4(n)=b4(n)/A4(n,n);

for

k=n-1:-1:1

for

w=k+1:n

b4(k)=b4(k)-A4(k,w)*x4(w);

end

x4(k)=b4(k)/A4(k,k);

end

disp('模最小Gauss消元法解為:');

disp(x4);

disp('所求解與精確解之差的無窮-范數為');

norm(x4-X,inf)

end

二、實驗3.3

題目:

考慮方程組的解,其中系數矩陣H為Hilbert矩陣:

這是一個著名的病態問題。通過首先給定解(例如取為各個分量均為1)再計算出右端的辦法給出確定的問題。

(1)選擇問題的維數為6,分別用Gauss消去法(即LU分解)、J迭代法、GS迭代法和SOR迭代法求解方程組,其各自的結果如何?將計算結果與問題的解比較,結論如何。

(2)逐步增大問題的維數,仍用上述的方法來解它們,計算的結果如何?計算的結果說明的什么?

(3)討論病態問題求解的算法。

1.算法設計

對任意線性方程組,分析各種方法的計算公式如下,(1)Gauss消去法:

首先對系數矩陣進行LU分解,有,則原方程轉化為,令,則原方程可以分為兩步回代求解:

具體方法這里不再贅述。

(2)J迭代法:

首先分解,再構造迭代矩陣,其中,進行迭代計算,直到誤差滿足要求。

(3)GS迭代法:

首先分解,再構造迭代矩陣,其中,進行迭代計算,直到誤差滿足要求。

(4)SOR迭代法:

首先分解,再構造迭代矩陣,其中,進行迭代計算,直到誤差滿足要求。

2.實驗過程

一、根據維度n確定矩陣H的各個元素和b的各個分量值;

二、選擇計算方法(Gauss消去法,J迭代法,GS迭代法,SOR迭代法),對迭代法設定初值,此外SOR方法還需要設定松弛因子;

三、進行計算,直至滿足誤差要求(對迭代法,設定相鄰兩次迭代結果之差的無窮范數小于0.0001;

對SOR方法,設定為輸出迭代100次之后的結果及誤差值),輸出實驗結果。

3.計算結果及分析

(1)時,問題可以具體定義為

計算結果如下,Gauss消去法

第1次消元所選取的主元是:1

第2次消元所選取的主元是:0.0833333

第3次消元所選取的主元是:0.00555556

第4次消元所選取的主元是:0.000357143

第5次消元所選取的主元是:2.26757e-05

第6次消元所選取的主元是:1.43155e-06

解得X=(0.***

1.***

0.***

1.***

0.***

1.***)T

使用無窮范數衡量誤差,可得=4.***e-10;

J迭代法

設定迭代初值為零,計算得到

J法的迭代矩陣B的譜半徑為4.30853>1,所以J法不收斂;

GS迭代法

設定迭代初值為零,計算得到GS法的迭代矩陣G的譜半徑為:0.999998<1,故GS法收斂,經過541次迭代計算后,結果為X=(1.001***6

0.***

0.***

1.***

1.***

0.***)T

使用無窮范數衡量誤差,有=0.***;

SOR迭代法

設定迭代初值為零向量,并設定,計算得到SOR法迭代矩陣譜半徑為0.***,經過100次迭代后的計算結果為

X=(1.***

0.***

1.03***59

1.06***81

1.***

0.9***527)T;

使用無窮范數衡量誤差,有=0.***;

對SOR方法,可變,改變值,計算結果可以列表如下

迭代次數

迭代矩陣的譜半徑

0.***

0.***

0.***

0.***

X

1.***

0.***

1.01***40

1.***

1.0***681

0.***

1.***

0.***

1.***

1.***

1.***

0.***

1.***

0.***

1.***

1.***

0.***

0.***

1.05***66

0.***

1.***

0.***

1.***

0.***

0.***

0.***

0.***

0.***

可以發現,松弛因子的取值對迭代速度造成了不同的影響,上述四種方法中,松弛因子=0.5時,收斂相對較快。

綜上,四種算法的結果列表如下:

算法

Gauss消去法

Jacobi法

GS法

SOR法(取)

迭代次數

--

不收斂

541

迭代矩陣的譜半徑

--

4.30853

0.999998

0.***

X

0.***

1.***

0.***

1.***

0.***

1.***

--

1.001***6

0.***

0.***

1.***

1.***

0.***

1.***

0.***

1.03***59

1.06***81

1.***

0.9***527

4.***e-10

--

0.***

0.***

計算可得,矩陣H的條件數為>>1,所以這是一個病態問題。由上表可以看出,四種方法的求解都存在一定的誤差。下面分析誤差的來源:

LU分解方法的誤差存在主要是由于Hilbert矩陣各元素由分數形式轉換為小數形式時,不能除盡情況下會出現舍入誤差,在進行LU分解時也存在這個問題,所以最后得到的結果不是方程的精確解,但結果顯示該方法的誤差非常小;

Jacobi迭代矩陣的譜半徑為4.30853,故此迭代法不收斂;

GS迭代法在迭代次數為541次時得到了方程的近似解,其誤差約為0.05,比較大。GS迭代矩陣的譜半徑為0.999998,很接近1,所以GS迭代法收斂速度較慢;

SOR迭代法在迭代次數為100次時誤差約為0.08,誤差較大。SOR迭代矩陣的譜半徑為0.999999,也很接近1,所以時SOR迭代法收斂速度不是很快,但是相比于GS法,在迭代速度方面已經有了明顯的提高;另外,對不同的,SOR方法的迭代速度會相應有變化,如果選用最佳松弛因子,可以實現更快的收斂;

(2)

考慮不同維度的情況,時,算法

Gauss消去

J法

GS法

SOR法(w=0.5)

計算結果

0.***

1.***

0.***

1.***

0.***

1.***

0.***

1.***

--

0.***

1.***

0.***

1.***

1.***

1.***

0.9968***

0.***

1.***

0.9397***

0.***

1.***

1.***

1.***

0.***

0.***

迭代次數

--

--

356

譜半徑

--

6.04213

0.***

--

時,算法

Gauss消去法

Jacobi法

GS法

SOR法(w=0.5)

計算結果

0.***

1.***

0.***

1.000***1

0.***

1.***

0.***

1.***

0.***

1.***

0.***

--

0.***

1.***

0.***

0.***

0.***

1.02***91

1.***

1.***

1.***

0.***

0.947***7

1.0***572

0.***

0.***

0.***

1.***

1.***

1.***

1.***

0.***

0.***

0.***

迭代次數

--

--

1019

譜半徑

--

8.64964

0.***

--

算法

Gauss消去法

Jacobi法

GS法

SOR法(w=0.5)

計算結果

0.***

1.***

0.***

0.***

1.***

0.***

2.***

-2.***

7.***

-7.***

7.***

-1.***

0.***

1.***

0.***

--

不收斂

1.***

1.***

0.907***9

0.***

0.***

1.***

1.09***64

1.***

1.***

1.***

1.0385***

0.***

0.942***3

0.***

0.***

迭代次數

--

--

262

譜半徑

--

6.04213

>1

1.***

8.***

--

--

0.***

分析以上結果可以發現,隨著n值的增加,Gauss消去法誤差逐漸增大,而且誤差增大的速度很快,在維數小于等于10情況下,Gauss消去法得到的結果誤差較小;但當維數達到15時,計算結果誤差已經達到精確解的很多倍;

J法迭代不收斂,無論n如何取值,其譜半徑始終大于1,因而J法不收斂,所以J迭代法不能用于Hilbert矩陣的求解;

對于GS迭代法和SOR迭代法,兩種方法均收斂,GS迭代法是SOR迭代法松弛因子取值為1的特例,SOR方法受到取值的影響,會有不同的收斂情況。可以得出GS迭代矩陣的譜半徑小于1但是很接近1,收斂速度很慢。雖然隨著維數的增大,所需迭代的次數逐漸減少,但是當維數達到15的時候,GS法已經不再收斂。因此可以得出結論,GS迭代方法在Hilbert矩陣維數較低時,能夠在一定程度上滿足迭代求解的需求,不過迭代的速度很慢。另外,隨著矩陣維數的增加,SOR法的誤差水平基本穩定,而且誤差在可以接受的范圍之內。

經過比較可以得出結論,如果求解較低維度的Hibert矩陣問題,Gauss消去法、GS迭代法和SOR迭代法均可使用,且Gauss消去法的結果精確度較高;如果需要求解較高維度的Hibert矩陣問題,只有采用SOR迭代法。

(3)

系數矩陣的條件數較大時,為病態方程。由實驗可知,Gauss法在解上述方程時,結果存在很大的誤差。而對于收斂的迭代法,可以通過選取最優松弛因子的方法來求解,雖然迭代次數相對較多,但是結果較為精確。

總體來看,對于一般病態方程組的求解,可以采用以下方式:

1.低維度下采用Gauss消去法直接求解是可行的;

Jacobi迭代方法不適宜于求解病態問題;

GS迭代方法可以解決維數較低的病態問題,但其譜半徑非常趨近于1,導致迭代算法收斂速度很慢,維數較大的時候,GS法也不再收斂;

SOR方法較適合于求解病態問題,特別是矩陣維數較高的時候,其優勢更為明顯。

2.采用高精度的運算,如選用雙倍或更多倍字長的運算,可以提高收斂速度;

3.可以對原方程組作某些預處理,從而有效降低系數矩陣的條件數。

4.實驗結論

(1)對Hibert矩陣問題,其條件數會隨著維度的增加迅速增加,病態性會越來越明顯;在維度較低的時候,Gauss消去法、GS迭代法和SOR迭代法均可使用,且可以優先使用Gauss消去法;如果需要求解較高維度的Hibert矩陣問題,只有SOR迭代法能夠求解。

(2)SOR方法比較適合于求解病態問題,特別是矩陣維數較高的時候,其優點更為明顯。從本次實驗可以看出,隨著矩陣維數的增大,SOR方法所需的迭代次數減少,而且誤差基本穩定,是解決病態問題的適宜方法。

附錄:程序代碼

clear

all

clc;

format

long;

%矩陣賦值

n=input('矩陣H的階數:n=');

for

i=1:n

for

j=1:n

H(i,j)=1/(i+j-1);

end

end

b=H*ones(n,1);

disp('H矩陣為:');

H

disp('向量b:');

b

%方法選擇

disp('選取求解方式');

disp('1

Gauss消去法,2

J迭代法,3

GS迭代法,4

SOR迭代法');

a=input('求解方式序號:');

%Gauss消去法

if

a==1;

H1=H;b1=b;

for

k=1:n

if

H1(k,k)==0

disp('主元為零,Gauss消去法無法進行');

break

end

fprintf('第%d次消元所選取的主元是:%g\n',k,H1(k,k))

for

p=k+1:n

m5=-H1(p,k)/H1(k,k);

H1(p,k:n)=H1(p,k:n)+m5*H1(k,k:n);

b1(p)=b1(p)+m5*b1(k);

end

end

x1(n)=b1(n)/H1(n,n);

for

k=n-1:-1:1

for

v=k+1:n

b1(k)=b1(k)-H1(k,v)*x1(v);

end

x1(k)=b1(k)/H1(k,k);

end

disp('Gauss消去法解為:');

disp(x1);

disp('解與精確解之差的無窮范數');

norm((x1-a),inf)

end

D=diag(diag(H));

L=-tril(H,-1);

U=-triu(H,1);

%J迭代法

if

a==2;

%給定初始x0

ini=input('初始值設定:x0=');

x0(:,1)=ini*diag(ones(n));

disp('初始解向量為:');

x0

xj(:,1)=x0(:,1);

B=(D^(-1))*(L+U);

f=(D^(-1))*b;

fprintf('(J法B矩陣譜半徑為:%g\n',vrho(B));

if

vrho(B)<1;

for

m2=1:5000

xj(:,m2+1)=B*xj(:,m2)+fj;

if

norm((xj(:,m2+1)-xj(:,m2)),inf)<0.0001

break

end

end

disp('J法計算結果為:');

xj(:,m2+1)

disp('解與精確解之差的無窮范數');

norm((xj(:,m2+1)-diag(ones(n))),inf)

disp('J迭代法迭代次數:');

m2

else

disp('由于B矩陣譜半徑大于1,因而J法不收斂');

end

end

%GS迭代法

if

a==3;

%給定初始x0

ini=input('初始值設定:x0=');

x0(:,1)=ini*diag(ones(n));

disp('初始解向量為:');

x0

xG(:,1)=x0(:,1);

G=inv(D-L)*U;

fG=inv(D-L)*b;

fprintf('GS法G矩陣譜半徑為:%g\n',vrho(G));

if

vrho(G)<1

for

m3=1:5000

xG(:,m3+1)=G*xG(:,m3)+fG;

if

norm((xG(:,m3+1)-xG(:,m3)),inf)<0.0001

break;

end

end

disp('GS迭代法計算結果:');

xG(:,m3+1)

disp('解與精確解之差的無窮范數');

norm((xG(:,m3+1)-diag(ones(n))),inf)

disp('GS迭代法迭代次數:');

m3

else

disp('由于G矩陣譜半徑大于1,因而GS法不收斂');

end

end

%SOR迭代法

if

a==4;

%給定初始x0

ini=input('初始值設定:x0=');

x0(:,1)=ini*diag(ones(n));

disp('初始解向量為:');

x0

A=H;

for

i=1:n

b(i)=sum(A(i,:));

end

x_star=ones(n,1);

format

long

w=input('松弛因子:w=');

Lw=inv(D-w*L)*((1-w)*D+w*U);

f=w*inv(D-w*L)*b;

disp('迭代矩陣的譜半徑:')

p=vrho(Lw)

time_max=100;%迭代次數

x=zeros(n,1);%迭代初值

for

i=1:time_max

x=Lw*x+f;

end

disp('SOR迭代法得到的解為');

x

disp('解與精確解之差的無窮范數');

norm((x_star-x),inf)

end

pause

三、實驗4.1

題目:

對牛頓法和擬牛頓法。進行非線性方程組的數值求解

(1)用上述兩種方法,分別計算下面的兩個例子。在達到精度相同的前提下,比較其迭代次數、CPU時間等。

(2)取其他初值,結果又如何?反復選取不同的初值,比較其結果。

(3)總結歸納你的實驗結果,試說明各種方法適用的問題。

1.算法設計

對需要求解的非線性方程組而言,牛頓法和擬牛頓法的迭代公式如下,(1)牛頓法:

牛頓法為單步迭代法,需要取一個初值。

(2)擬牛頓法:(Broyden秩1法)

其中,擬牛頓法不需要求解的導數,因此節省了大量的運算時間,但需要給定矩陣的初值,取為。

2.實驗過程

一、輸入初值;

二、根據誤差要求,按公式進行迭代計算;

三、輸出數據;

3.計算結果及分析

(1)首先求解方程組(1),在這里,設定精度要求為,方法

牛頓法

擬牛頓法

初始值

計算結果X

x1

0.***

0.***

x2

1.***

1.0852***

x3

0.***

0.***

迭代次數

CPU計算時間/s

3.777815

2.739349

可以看出,在初始值相同情況下,牛頓法和擬牛頓法在達到同樣計算精度情況下得到的結果基本相同,但牛頓法的迭代次數明顯要少一些,但是,由于每次迭代都需要求解矩陣的逆,所以牛頓法每次迭代的CPU計算時間更長。

之后求解方程組(2),同樣設定精度要求為

方法

牛頓法

擬牛頓法

初始值

計算結果X

x1

0.***

0.***

x2

0.***

0.***

x3

-0.***

-0.***

迭代次數

CPU計算時間/s

2.722437

3.920195

同樣地,可以看出,在初始值相同情況下,牛頓法和擬牛頓法在達到同樣計算精度情況下得到的結果是基本相同的,但牛頓法的迭代次數明顯要少,但同樣的,由于每次迭代中有求解矩陣的逆的運算,牛頓法每次迭代的CPU計算時間較長。

(2)對方程組(1),取其他初值,計算結果列表如下,同樣設定精度要求為

初始值

方法

牛頓法

擬牛頓法

計算結果

0.***

1.***

0.***

9.21***94

-5.***

18.1***205

迭代次數

CPU計算時間/s

3.907164

4.818019

計算結果

0.***

1.***

0.***

9.21***91

-5.***

18.1***807

迭代次數

2735

CPU計算時間/s

8.127286

5.626023

計算結果

0.***

1.***

0.***

0.***

1.0852***

0.***

迭代次數

CPU計算時間/s

3.777815

2.739349

計算結果

0.***

1.***

0.***

0.***

1.***

0.***

迭代次數

188

CPU計算時間/s

3.835697

2.879070

計算結果

9.21***22

-5.***

18.1***605

Matlab警告矩陣接近奇異值,程序進入長期循環計算中

迭代次數

--

CPU計算時間/s

4.033868

--

計算結果

0.***

1.***

0.***

Matlab警告矩陣接近奇異值,程序進入長期循環計算中

迭代次數

--

CPU計算時間/s

12.243263

--

從上表可以發現,方程組(1)存在另一個在(9.2,-5.6,18.1)T附近的不動點,初值的選取會直接影響到牛頓法和擬牛頓法最后的收斂點。

總的來說,設定的初值離不動點越遠,需要的迭代次數越多,因而初始值的選取非常重要,合適的初值可以更快地收斂,如果初始值偏離精確解較遠,會出現迭代次數增加直至無法收斂的情況;

由于擬牛頓法是一種近似方法,擬牛頓法需要的的迭代次數明顯更多,而且收斂情況不如牛頓法好(初值不夠接近時,甚至會出現奇異矩陣的情況),但由于牛頓法的求解比較復雜,計算時間較長;

同樣的,對方程組(2),取其他初值,計算結果列表如下,同樣設定精度要求為

初始值

方法

牛頓法

擬牛頓法

計算結果

0.***

0.***

-0.***

0.***

0.***

-0.***

迭代次數

CPU計算時間/s

2.722437

3.920195

計算結果

0.***

0.***

-0.***

0.***

-0.***

76.***

迭代次數

CPU計算時間/s

5.047111

5.619752

計算結果

0.***

0.***

-0.***

1.0e+02

*

-0.***

-0.000***6

1.754***3

迭代次數

CPU計算時間/s

3.540668

3.387829

計算結果

0.***

0.***

-0.***

1.0e+04

*

0.***

-0.***

1.***

迭代次數

CPU計算時間/s

2.200571

2.640901

計算結果

0.***

0.***

-0.***

矩陣為奇異值,無法輸出準確結果

迭代次數

--

CPU計算時間/s

1.719072

--

計算結果

0.***

0.***

-0.***

矩陣為奇異值,無法輸出準確結果

迭代次數

149

--

CPU計算時間/s

2.797116

--

計算結果

矩陣為奇異值,無法輸出準確結果

矩陣為奇異值,無法輸出準確結果

迭代次數

--

--

CPU計算時間/s

--

--

在這里,與前文類似的發現不再贅述。

從這里看出,牛頓法可以在更大的區間上實現壓縮映射原理,可以在更大的范圍上選取初值并最終收斂到精確解附近;

在初始值較接近于不動點時,牛頓法和擬牛頓法計算所得到的結果是基本相同的,雖然迭代次數有所差別,但計算總的所需時間相近。

(3)

牛頓法在迭代過程中用到了矩陣的求逆,其迭代收斂的充分條件是迭代滿足區間上的映內性,對于矩陣的求逆過程比較簡單,所以在較大區間內滿足映內性的問題適合應用牛頓法進行計算。一般而言,對于函數單調或者具有單值特性的函數適合應用牛頓法,其對初始值敏感程度較低,算法具有很好的收斂性。

另外,需要說明的是,每次計算給出的CPU時間與計算機當時的運行狀態有關,同時,不同代碼的運行時間也不一定一致,所以這個數據并不具有很大的參考價值。

4.實驗結論

對牛頓法和擬牛頓法,都存在初始值越接近精確解,所需的迭代次數越小的現象;

在應用上,牛頓法和擬牛頓法各有優勢。就迭代次數來說,牛頓法由于更加精確,所需的迭代次數更少;但就單次迭代來說,牛頓法由于計算步驟更多,且計算更加復雜,因而每次迭代所需的時間更長,而擬牛頓法由于采用了簡化的近似公式,其每次迭代更加迅速。當非線性方程組求逆過程比較簡單時,如方程組1的情況時,擬牛頓法不具有明顯的優勢;而當非線性方程組求逆過程比較復雜時,如方程組2的情況,擬牛頓法就可以體現出優勢,雖然循環次數有所增加,但是CPU耗時反而更少。

另外,就方程組壓縮映射區間來說,一般而言,對于在區間內函數呈現單調或者具有單值特性的函數適合應用牛頓法,其對初始值敏感程度較低,使算法具有很好的收斂性;而擬牛頓法由于不需要在迭代過程中對矩陣求逆,而是利用差商替代了對矩陣的求導,所以即使初始誤差較大時,其倒數矩陣與差商偏差也較小,所以對初始值的敏感程度較小。

附錄:程序代碼

%方程1,牛頓法

tic;

format

long;

%%初值

disp('請輸入初值');

a=input('第1個分量為:');

b=input('第2個分量為:');

c=input('第3個分量為:');

disp('所選定初值為');

x=[a;b;c]

%%誤差要求

E=0.0001;

%%迭代

i=0;

e=2*E;

while

e>E

F=[12*x(1)-x(2)^2-4*x(3)-7;x(1)^2+10*x(2)-x(3)-11;x(2)^3+10*x(3)-8];

f=[12,-2*x(2),-4;2*x(1),10,-1;0,3*x(2)^2,10];

det_x=((f)^(-1))*(-F);

x=x+det_x;

e=max(norm(det_x));

i=i+1;

end

disp('迭代次數');

i

disp('迭代次數');

x

toc;

%方程1,擬牛頓法

tic;

format

long;

%%初值

%%初值

disp('請輸入初值');

a=input('第1個分量為:');

b=input('第2個分量為:');

c=input('第3個分量為:');

disp('所選定初值為');

x0=[a;b;c]

%%誤差要求

E=0.0001;

%%迭代

i=0;

e=2*E;

A0=eye(3);

while

e>E

F0=[12*x0(1)-x0(2)^2-4*x0(3)-7;x0(1)^2+10*x0(2)-x0(3)-11;x0(2)^3+10*x0(3)-8];

x1=x0-A0^(-1)*F0;

s=x1-x0;

F1=[12*x1(1)-x1(2)^2-4*x1(3)-7;x1(1)^2+10*x1(2)-x1(3)-11;x1(2)^3+10*x1(3)-8];

y=F1-F0;

A1=A0+(y-A0*s)*s'/(s'*s);

x0=x1;

A0=A1;

e=max(norm(s));

i=i+1;

end

disp('迭代次數');

i

disp('迭代次數');

x0

toc;

%方程2,牛頓法

tic;

format

long;

%%初值

disp('請輸入初值');

a=input('第1個分量為:');

b=input('第2個分量為:');

c=input('第3個分量為:');

disp('所選定初值為');

x=[a;b;c]

%%誤差要求

E=0.0001;

%%迭代

i=0;

e=2*E;

while

e>E

F=[3*x(1)-cos(x(2)*x(3))-0.5;x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;exp(1)^(-x(1)*x(2))+20*x(3)+(10*pi-3)/3];

f=[3,x(3)*sin(x(2)*x(3)),x(2)*sin(x(2)*x(3));2*x(1),-162*x(2)-81/5,cos(x(3));-x(2)*exp(1)^(-x(1)*x(2)),-x(1)*exp(1)^(-x(1)*x(2)),20];

det_x=((f)^(-1))*(-F);

x=x+det_x;

e=max(norm(det_x));

i=i+1;

end

disp('迭代次數');

i

disp('迭代次數');

x

toc;

%方程2,擬牛頓法

tic;

format

long;

%%初值

%%初值

disp('請輸入初值');

a=input('第1個分量為:');

b=input('第2個分量為:');

c=input('第3個分量為:');

disp('所選定初值為');

x0=[a;b;c]

%%誤差要求

E=0.0001;

%%迭代

i=0;

e=2*E;

A0=eye(3);

while

e>E

F0=[3*x0(1)-cos(x0(2)*x0(3))-0.5;x0(1)^2-81*(x0(2)+0.1)^2+sin(x0(3))+1.06;exp(1)^(-x0(1)*x0(2))+20*x0(3)+(10*pi-3)/3];

x1=x0-A0^(-1)*F0;

s=x1-x0;

F1=[3*x1(1)-cos(x1(2)*x1(3))-0.5;x1(1)^2-81*(x1(2)+0.1)^2+sin(x1(3))+1.06;exp(1)^(-x1(1)*x1(2))+20*x1(3)+(10*pi-3)/3];

y=F1-F0;

A1=A0+(y-A0*s)*s'/(s'*s);

x0=x1;

A0=A1;

e=max(norm(s));

i=i+1;

end

disp('迭代次數');

i

disp('迭代次數');

x0

toc;

第三篇:數值分析實驗報告寫作范本

學號:

姓名:

實驗二插值法

實驗2.1(多項式插值的振蕩現象)

問題提出:考慮一個固定的區間上用插值逼近一個函數。顯然拉格朗日插值中使用的節點越多,插值多項式的次數就越高。我們自然關心插值多項式的次數增加時,L(x)是否也更加靠近被逼近的函數。龍格給出了一個極著名例子。設區間[-1,1]上函數

f(x)=1/(1+25x^2)

實驗內容:考慮區間[-1,1]的一個等距劃分,分點為:

x(i)=-1+2i/n,i=0,1,2…,n

則拉格朗日插值多項式為:

L(x)=∑l(i)(x)/(1+25x(j)^2)i=0,1,…n

其中l(i)(x), i=0,1,…n,n是n次拉格朗日插值基函數。

實驗要求:

⑴ 選擇不斷增大的分點數目n=2,3…,畫出f(x)及插值多項式函數L(x)在[-1,1]上的圖象,比較分析實驗結果。

(2)選擇其它的函數,例如定義在區間[-5,5]上的函數

h(x)=x/(1+x^4),g(x)=arctanx

重復上述的實驗看其結果如何。

(3)區間[a,b]上切比雪夫點的定義為:

xk=(b+a)/2+((b-a)/2)cos((2k-1)π/(2(n+1))),k=1,2,^,n+1

以x1,x2^x(n+1)為插值節點構造上述各函數的拉格朗日插值多項式,比較其結果。

實驗過程:

程序:。。。。。。。。。。。。。。。。

數值實驗結果及分析:。。。。。。。。。。。。。。

討論。。。。。。。。。。。。。。。。。。。

實驗總結:。。。。。。。。。。。。。。。

第四篇:“數值分析”課程教學改革淺談

摘要:“數值分析”是計算機科學比較重要的基礎課之一,從多方面就“數值分析”課程教學中存在的問題以及提高教學質量、學生興趣的教學方法進行了探討。

關鍵詞:數值分析;教學方法;實踐

作者簡介:黃文芝(1978-),女,湖北武漢人,武漢工程大學計算機科學與工程學院,講師;張蕾(1982-),女,湖北武漢人,武漢工程大學計算機科學與工程學院,講師。(湖北?武漢?430073)

基金項目:本文系武漢工程大學青年科學基金項目(項目編號:q201107)的研究成果。

中圖分類號:g642.0?????文獻標識碼:a?????文章編號:1007-0079(2012)05-0039-02

“數值分析”也稱計算方法,它與計算工具發展密切相關。計算方法是數學的一個組成部分,很多方法都與當時的數學家名字相聯系,如牛頓插值公式,方程求根的牛頓法,解線性方程組的高斯消去法,多項式求值的秦九韶算法,計算積分的辛普森公式等,這表明計算方法就是數學的一部分,它沒有形成單獨的學科分支。而計算機出現以后,計算方法迅速發展并形成數學科學的一個獨立分支――計算數學。這說明了計算方法與計算機的密切聯系,以及在計算機研究領域的重要性。并且數值分析在計算機相關領域應用比較廣泛,比如在數學建模中,在圖像處理中,在信號處理中等都會用到數值分析中相關的一些知識。這些都說明“數值分析”是計算機專業學生的一門核心專業基礎課程。

“數值分析”課程的教學內容主要包括三部分,一部分是插值擬合,一部分是方程和方程組求解,另外一部分是常微分方程初值問題數值解。而數值積分也是在插值的基礎進行,故筆者把它歸為插值擬合部分。這些內容看上去都是以前學過的知識,積分是在高等數學里學過的,而方程和方程組求解更是中學就重點講解過的知識,學生剛開始接觸這門課的時候會和以前所學的純數學學習的思想結合起來。通過“數值分析”課程的教學,培養學生用計算機解決問題的能力,并且為后續階段的專業課程打下基礎。

筆者是計算機科學與技術專業的一名老師,使用的教材是清華大學出版的李慶揚等編的《數值分析》,本文就當前“數值分析”課程在計算機科學與技術專業教學中存在的一些問題和教學方法、教學模式等方面進行討論,其目的在于改進教學方法和手段,提高學生興趣和教學效果。

一、“數值分析”課程教學中存在的問題

1.數學理論強,公式繁多冗長,學生學習興趣不高

“數值分析”是數學的一部分,具有與其他數學課程一樣的理論性強的特點,但“數值分析”又還有一些和以往學生所學各類數學課程不同的特點。首先,“數值分析”研究的是計算算法,用計算機來解決問題,以前學生學習數學課程大都是從理論學習到作業聯系,涉及的知識邏輯推理的特性比較強,并且以往研究的大多數都是連續的,這種研究對象的差異使得學生不能很快接受,思想不能很快轉變過來。其次,“數值分析”比以往所學的數學課程的公式更加繁多,更加冗長,比如解線性方程組,如果用以前的知識,學生都會解,但現在解線性方程組不僅僅是要得出結果,更重要的是解線性方程組的算法以及它的實現,這就涉及到至少4個公式,而我們要弄清楚了這些公式的來歷才能通過編程實現這個算法,這也是學生不感興趣的主要原因。

另外,由于學生對數學課程以及對數學公式的害怕,對“數值分析”這門課程的重要性認識不足,當學生學習遇到困難時,容易失去學習興趣,從而放棄學習。雖然“數值分析”是計算機科學與技術專業的基礎課,是大多數課程的基礎,但學生還不能理會到“數值分析”這門課程對以后課程的重要性,對于大三的學生來說他們現在所學的課程還沒能很好地得到應用,而對他們比較實際的用處――找工作也沒有顯現出比較重要的作用,因而學生會在潛意識里無視這門課,在課程學習遇到困難的情況下,他們往往會選擇放棄學習。

2.知識點多,信息量大,掌握困難

這門課的知識點比較多,信息量比較大,對于理學的學生來說該課程學時比較多,但筆者承擔的“數值分析”課程的學時是48學時,并且完全是講授部分,然而相對于課程所包含的大量內容,這些學時數遠遠不夠,比如函數逼近與快速傅里葉變換,它涉及到范數,賦范線性空間,歐氏空間,三角插值等許多概念,想讓學生在規定的學時數內真正掌握這些概念比較困難,尤其是對計算機科學專業的學生而言。因為理學院的學生學過實變函數、泛函分析,所以理解這些概念就略顯容易些。

3.重理論,輕實踐

當前“數值分析”課程教學過程中,仍然存在理論與實踐脫離的現象,雖然這門課實踐比較重要,但鑒于課時的安排,大多數教師只能按書本知識來講,學生聽,學生沒理解理論的用處,沒能立刻就在實踐中體現出來,因此使得很多學生只是為了考試而學習,為了學習而學習,不知道它的作用,考完就還給老師。這樣他們也只獲得了知識的皮毛,而沒有抓住知識的精髓和實質。

二、“數值分析”課程教學方法淺談

1.強調課程的重要性,提高學生的學習興趣

為了讓學生正確對待這門課,應該讓學生充分認識到“數值分析”課程在計算機科學與技術專業中的重要性。在組織教學的過程中,可以安排一些有實踐經驗的學生介紹經驗(這樣學生更好理解,更容易相信,更實際),聯系具體的研究方向,給出簡單的例子,論述“數值分析”在計算機科學與技術專業方向中的應用,讓學生切實感受到“數值分析”課程是后續課程學習的基礎,應用比較廣泛。另外,在教學中教師還必須聯系實際,在課程中穿插一些有實際應用意義的例子,比如現在很多數學建模就用到“數值分析”的內容,可以就里面簡單的例子引用一個。這樣讓學生了解到“數值分析”不是空洞抽象的理論,而是能夠解決實際問題的工具,通過這些方法,使學生逐步樹立“數值分析”比較有用,應該學好“數值分析”課程的觀念。

然而僅有應該學好該課程的觀念還不夠,還應該從各個方面提高學生學習的興趣,興趣是最好的老師,只有有了興趣,學生才會真正自主去學習,而不是被動的,為了考試而學習。如何讓枯燥的課程變得生動有趣是值得研究的問題。在實際教學過程中,可以采用學生自己講解,學生之間互相提問等方法,另外也可以編一些小程序,演示計算機解題的過程,這樣讓學生體會到雖然計算機的功能比較強大,還是需要人腦來控制,靈魂還是人。這樣能使學生在整個課題中能主動思考,而不是被動接收。

2.合理取舍教學內容,把握全局,突出重點

“數值分析”課程所涉及的內容非常豐富,但現在課時有限,因此合理取舍教學內容非常重要,應該在有限的學時內,讓學生掌握比較重要的理論方法,比如根據學生專業的特點,可以將主要的教學時間安排在講解誤差分析,插值,數值積分,方程和方程組的解法上面。在矩陣特征值計算方面,有時間的條件下可以簡單介紹思想方法,而對于常微分方程初值問題的數值解可以舍去,因為本專業的學生沒有學常微分方程,所以對常微分方程初值問題的數值解會無法理解。

3.合理使用多種教學方法和手段

傳統的“黑板+粉筆”的教學模式對數學課程的教學非常重要,通過板書學生可以了解教師處理問題的思維過程,然而鑒于“數值分析”的特點,又不能完全用傳統的教學模式,因為“數值分析”課程中有大量的矩陣和公式,如果單純使用“黑板+粉筆”,黑板無法板書完整,如果擦掉原先板書的內容又無法把前后聯系起來講解,而使用多媒體就可以解決這一問題。另外,有條件的學校可以把上課安排到有投影的機房,在講解算法時教師可以演示一些程序,學生學起來就不會覺得完全是在聽數學課了。因為是計算機專業的學生,這樣和他們的聯系更緊密些,他們也可以通過編程來實現算法。

4.強調理論聯系實踐,培養解決問題的能力

“數值分析”這門課重點講授的是算法,而學生如果沒有很好的實踐,對這些算法的應用只能停留在死記硬背上,這不是學習的目的。本來計算機專業也應該突出學生的動手能力,所以對講授的每個算法都應盡可能讓學生編程來實現,這樣一來可以鞏固學生學到的知識,二來也可以讓學生明白這門課不是單純的數學課,而是和實際聯系比較緊密的一門課。當然要實現每個算法都編程,在所授課的學時內是無法完成的,這樣就要鼓勵學生自己主動去編程,可以采取一些獎勵的措施,比如對編程完成比較好的學生可以適當提高平時成績等。學生自己主動的學習有利于提高其學習興趣,開發學生智力,培養學生解決問題的能力,從而提高學生的綜合素質。

三、總結

隨著計算機的廣泛應用,“數值分析”課程作為計算機科學與技術的一門專業基礎課程,在學生學習和工作中越來越重要,因此“數值分析”課程教學也應該不斷更新知識結構,豐富教學內容,改進教學手段,以提高學生學習興趣,提高教學質量,培養學習的能力,從而為后續課程的學習和將來的工作打下堅實的基礎。

第五篇:《數值計算方法》課程教學大綱.

《數值計算方法》課程教學大綱

課程名稱:數值計算方法/Mathods of Numerical Calculation 課程代碼:0806004066 開課學期:4 學時/學分:56學時/3.5學分(課內教學 40 學時,實驗上機 16 學時,課外 0 學時)先修課程:《高等代數》、《數學分析》、《常微分方程》、《C語言程序設計》 適用專業:信息與計算科學

開課院(系):數學與計算機科學學院

一、課程的性質與任務

數值計算方法是數學與應用數學專業的核心課程之一。它是對一個數學問題通過計算機實現數值運算得到數值解答的方法及其理論的一門學科。本課程的任務是架設數學理論與計算機程序設計之間的橋梁,建立解決數學問題的有效算法,討論其收斂性和數值穩定性并尋找誤差估計式,培養學生數值計算的能力。

二、課程的教學內容、基本要求及學時分配

(一)誤差分析

2學時 了解數值計算方法的主要研究內容。2 理解誤差的概念和誤差的分析方法。熟悉在數值計算中應遵循的一些基本原則。重點:數值計算中應遵循的基本原則。難點:數值算法的穩定性。

(二)非線性方程組的求根

8學時 理解方程求根的逐步搜索法的含義和思路 掌握方程求根的二分法、迭代法、牛頓法及簡化牛頓法、非線性方程組求根的牛頓法 3 熟悉各種求根方法的算法步驟,并能編程上機調試和運行或能利用數學軟件求非線性方程的近似根。

重點:迭代方法的收斂性、牛頓迭代方法。難點:迭代方法收斂的階。

(三)線性方程組的解法

10學時 熟練掌握高斯消去法 熟練地實現矩陣的三角分解:Doolittle法、Crout法、Cholesky法、LDR方法。3 掌握線性方程組的直接解法:Doolittle法、Crout法、Cholesky法(平方根法)、改進平方根法、追趕法。

4能熟練地求向量和矩陣的1-范數、2-范數、?-范數和條件數。5 理解迭代法的基本思想,掌握迭代收斂的基本定理。掌握解線性方程組的雅可比(Jacobi)迭代法、高斯-賽德爾(Gauss-Seidel)迭代法、逐次超松馳(SOR)迭代法。7能寫出線性方程組的各種直接解法和間接解法的算法,并能編程上機運行或能利用數學軟件求解線性方程組。

重點:矩陣的三角分解。

難點:線性方程組迭代解法的收斂問題。

(四)插值法

6學時

1.了解插值的一般概念和多項式插值的存在唯一性。

2.熟練掌握Lagrange插值、Newton插值、Hermite插值、分段低次插值及三次樣條插值的求解。

3.熟悉曲線擬合的最小二乘法,能熟練地求矛盾方程組的最小二乘解。

4.能對Lagrange插值、Newton插值、Neville插值、Hermite插值、三次樣條插值、線擬合的最小二乘法等編程上機調試和運行或借助數學軟件求插值函數和曲線擬合。

重點:Lagrange插值、Newton插值、Hermite插值。難點:三次樣條插值的求解。

(五)最佳逼近多項式的一般理論

5學時 了解最佳逼近的基本問題。掌握C[a,b]空間中最佳逼近的唯一性問題。3 了解切貝紹夫定理與Vallee-Poussin定理。

(六)數值微分與數值積分

5學時 了解數值積分的基本思想,能夠熟練地確定具體求積公式的代數精度及確定求積公式的節點和系數。熟練地用Newton-cotes公式,Romberg公式,兩點、三點Gauss公式等進行數值積分 重點:確定具體求積公式的代數精度及確定求積公式的節點和系數。難點:用待定系數法確定Gauss型求積公式的節點和系數。

(七)常微分方程的數值解

4學時 理解常微分方程的數值解的含義 掌握常微分方程的歐拉解法、R—K方法、亞當姆斯方法,理解其算法思想。重點:基于數值積分的方法。難點:R—K方法。

三、推薦教材及參考書

推薦教材:

1、張韻華等編著,數值計算方法與算法,科學出版社,2001。

2、馮天祥編著,數值計算方法,四川科技出版社,2003。參考書:

1、馮天祥編著,數值計算方法理論與實踐研究,西南交通大學出版社,2005。

2、李慶揚等著,數值分析,華中理工大學出版社,2000。

3、林成森著,數值計算方法,科學出版社出版,1999。

4、李慶揚等著,現代數值分析,高等教育出版社,1998。

5封建湖等,計算方法典型題分析解集,西北工業大學出版社,1999。

四、結合近幾年的教學改革與研究,對教學大綱進行的新調整 增加了最佳逼近多項式的一般理論。

大綱制訂者:馮玉明

大綱審定者:陳小春

制訂日期:2008-11-15

下載《數值分析》課程實驗報告(5篇模版)word格式文檔
下載《數值分析》課程實驗報告(5篇模版).doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


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

相關范文推薦

    數值分析課程教學改革探索與實踐論文

    摘要:本文主要就數值分析課程教學改革這個話題提出相應的分析探討,并且認真進行了實踐初步探索,以期能夠對目前以及未來的數值分析課程教學改革有一定的幫助。關鍵詞:數值分析;教......

    數值分析學習心得體會

    數值分析學習感想一個學期的數值分析,在老師的帶領下,讓我對這門課程有了深刻的理解和感悟。這門課程是一個十分重視算法和原理的學科,同時它能夠將人的思維引入數學思考的模式......

    復數值分析習題

    2011級葫蘆島校區研究生數值分析復習參考提綱(注意例題未必出原題,給出的是題型) 一、例2-4,例2-6,例2-11, 二、86頁:1,2,3,5,6,7,8 三、1、n階線性方程組的雅可比迭代法:迭代公式、矩陣表......

    《實用會計軟件》課程實驗報告分析(★)

    2015-2016學年第二學期 《實用會計軟件》課程實驗報告 實驗一 應收應付系統初始化 一、實驗內容 設置系統參數 設置基礎資料 輸入初始數據 與總賬系統對賬 結束初始化 (應收......

    數值分析第六章學習小結

    第六章 數值積分 --------學習小結 姓名 班級 學號一、 本章學習體會 本章主要講授了數值積分的一些求積公式及各種求積公式的代數精度,重點應掌握插值型求積公式,什么樣的......

    數值分析計算實習題

    《數值分析》計算實習題姓名:學號:班級:第二章1、程序代碼Clear;clc;x1=[0.20.40.60.81.0];y1=[0.980.920.810.640.38];n=length(y1);c=y1(:);forj=2:n%求差商fori=n:-1:jc(i)=......

    數值分析學習總結感想

    數值分析學習感想 一個學期的數值分析,在老師的帶領下,讓我對這門課程有了深刻的理解和感悟。這門課程是一個十分重視算法和原理的學科,同時它能夠將人的思維引入數學思考的模......

    河海大學數值分析教學提綱

    數值分析教學提綱 第一章 誤差 有效數字 算法設計若干準則 第二章 拉格朗日插值 牛頓插值 埃爾米特插值 分段插值 三次樣條插值 插值余項 插值基函數 第三章 函數空間 正交......

主站蜘蛛池模板: 囯精品人妻无码一区二区三区99| 亚洲欧洲日产国码无码app| 人妻熟女一区二区三区app下载| 东北粗壮熟女丰满高潮| 国产精品美女久久久久av福利| 精品久久久无码中文字幕天天| 国产成人午夜精华液| 国产在线视频国产永久| 国产精品毛片久久久久久久| 精品人妻码一区二区三区| 97久久天天综合色天天综合色hd| 国产成人精品无码一区二区老年人| 99久久国产综合精品女| 看黄a大片日本真人视频直播| 国产剧情麻豆女教师在线观看| 亚洲成在人线av无码| 三上悠亚在线精品二区| 日本高清在线一区至六区不卡视频| 欧美一区二区日韩国产| 女人的精水喷出来视频| 亚洲国产精品13p| 免费观看又色又爽又湿的视频软件| 日韩av无码一区二区三区不卡| 人妻无码专区一区二区三区| 人人妻人人澡人人爽人人精品97| 国産精品久久久久久久| 在线天堂资源www在线中文| 94久久国产乱子伦精品免费| 国产精品久久久午夜夜伦鲁鲁| 欧美日韩色另类综合| 一本一道波多野结衣av黑人| 欧美颜射内射中出口爆在线| 亚洲一区二区三区含羞草| 野花社区视频在线观看| 亚洲精品无码久久久久sm| 琪琪午夜理论片福利在线观看| 欧美怡春院一区二区三区| 日本www网站色情乱码| 欧美日韩综合一区二区三区| 免费国产午夜视频在线| 国产男女爽爽爽免费视频|