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

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

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

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

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

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

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

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

      《數(shù)值分析》課程實驗報告 姓 名:

      學(xué) 號:

      學(xué) 院:

      機 電 學(xué) 院 日 期:

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

      數(shù)據(jù)如下:

      (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多項式,和分段三次插值多項式,計算, 的值。(提示:結(jié)果為,)(2)1 2 3 4 5 6 7 0.368 0.135 0.050 0.018 0.007 0.002 0.001 試構(gòu)造Lagrange多項式,計算的,值。(提示:結(jié)果為,)二、要求 1、利用Lagrange插值公式 編寫出插值多項式程序;

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

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

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

      其中:

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

      2、明確插值多項式和分段插值多項式各自的優(yōu)缺點;

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

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

      四、實驗步驟(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多項式,和分段三次插值多項式,計算, 的值。(提示:結(jié)果為,)第一步:先在matlab中定義lagran的M文件為拉格朗日函數(shù)代碼為:

      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)命令執(zhí)行后得到如下圖所示圖形,然后 >> 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 試構(gòu)造Lagrange多項式,和分段三次插值多項式,計算的,值。(提示:結(jié)果為,)實驗步驟:

      第一步定義 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)命令執(zhí)行后得到如下圖所示圖形,然后 >> 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 五、實驗結(jié)論 插值是在離散數(shù)據(jù)的基礎(chǔ)上補插連續(xù)函數(shù),使得這條連續(xù)曲線通過全部給定的離散數(shù)據(jù)點,它是離散函數(shù)逼近的重要方法,利用它可通過函數(shù)在有限個點處的取值狀況,估算出函數(shù)在其他點處的近似值。

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

      在某冶煉過程中,根據(jù)統(tǒng)計數(shù)據(jù)的含碳量與時間關(guān)系,試求含碳量與時間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、打印出擬合函數(shù),并打印出與的誤差,;

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

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

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

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

      3、探索擬合函數(shù)的選擇與擬合精度間的關(guān)系 四、實驗步驟:

      第一步先寫出線性最小二乘法的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)命令執(zhí)行得到如下圖 五、實驗結(jié)論? 分析復(fù)雜實驗數(shù)據(jù)時,常采用分段曲線擬合方法。利用此方法在段內(nèi)可以實現(xiàn)最佳逼近,但在段邊界上卻可能不滿足連續(xù)性和可導(dǎo)性。分段函數(shù)的光滑算法,給出了相應(yīng)的誤差分析.給出了該方法在分段曲線擬合中的應(yīng)用方法以及凸輪實驗數(shù)據(jù)自動分段擬合。

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

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

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

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

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

      2、明確數(shù)值積分精度與步長的關(guān)系;

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

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

      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);復(fù)合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。

      五、實驗結(jié)論,通過本實驗學(xué)會復(fù)合梯形公式,復(fù)合Simpson公式,Romberg公式的編程與應(yīng)用,掌握MATLAB提供的計算積分的各種函數(shù)的使用方法。

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

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

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

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

      2、應(yīng)用結(jié)構(gòu)程序設(shè)計編出通用程序;

      3、比較計算結(jié)果,分析數(shù)值解誤差的原因;

      4、盡可能利用相應(yīng)模塊輸出系數(shù)矩陣的三角分解式。

      三、目的和意義 1、通過該課題的實驗,體會模塊化結(jié)構(gòu)程序設(shè)計方法的優(yōu)點;

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

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

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

      四、實驗步驟:

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

      % b為方程組的右端項;

      % x為方程組的解;

      % det為系數(shù)矩陣A的行列式的值;

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

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

      if n~=m error('The rows and columns of matrix A must be equal!');return;end % 當(dāng)方程組與右端項的維數(shù)不匹配時,停止計算,并輸出出錯信息 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 高斯-約當(dāng)消去法maltab的M文件程序 function [x,flag]=Gau_Jor(A,b)% 求線形方程組的列主元Gauss-約當(dāng)法消去法,其中,% A為方程組的系數(shù)矩陣;

      % b為方程組的右端項;

      % x為方程組的解;

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

      if n~=m error('The rows and columns of matrix A must be equal!');return;end % 當(dāng)方程組與右端項的維數(shù)不匹配時,停止計算,并輸出出錯信息 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 五、實驗結(jié)論 用LU法,調(diào)用matlab中的函數(shù)lu中,L往往不是一個下三角,但可以直接計算不用它的結(jié)果來計算,不用進行行變換。如果進行行變b也要變,這樣會很麻煩。

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

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

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

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

      4、給出各種算法的設(shè)計程序和計算結(jié)果。

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

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

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

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

      四、實驗步驟 第一步編寫實驗所需的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、設(shè)線性方程組 ???????????????????????????????? 2、設(shè)對稱正定陣系數(shù)陣線方程組 3、三對角形線性方程組 五、實驗結(jié)論 迭代法是解線性方程組的一個重要的實用方法,特別適用于求解在實際中大量出現(xiàn)的,系數(shù)矩陣為稀疏陣的大型線性方程組。通過此次實驗學(xué)會了Jacobi迭代法,Gauss-Seidel迭代法,SOR迭代法的程序編寫,并掌握了它們各自的優(yōu)缺點及其適用條件。

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

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

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

      4、分析迭代收斂和發(fā)散的原因。

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

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

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

      4、明確迭代收斂性與初值選取的關(guān)系。

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

      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。

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

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

      設(shè)矩陣A的特征分布為:

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

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

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

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

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

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

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

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

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

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

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

      冪法程序:

      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。

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

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

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

      初值問題的精確解。

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

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

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

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

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

      4、分析各個算法的優(yōu)缺點。

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

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

      3、通過計算更加了解各種算法的優(yōu)越性。

      四、實驗步驟 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為一階微分方程的函數(shù) % x0,y0為初始條件 % xN為取值范圍的一個端點 % h為區(qū)間步長 % N為區(qū)間個數(shù) % x為Xn構(gòu)成的向量 % y為yn構(gòu)成的向量 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)結(jié)果 :

      >> 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 五、實驗結(jié)論 很多科學(xué)技術(shù)和工程問題常用微分方程的形式建立數(shù)學(xué)模型,因此微分方程的求解是很有意義的,但對于絕大多數(shù)的微分方程問題很難或者根本不可能得到它的解析解,因此,研究微分方程的數(shù)值方法是非常有意義的。

      第二篇:清華大學(xué)數(shù)值分析實驗報告

      數(shù)值分析實驗報告

      一、實驗3.1

      題目:

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

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

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

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

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

      1.算法介紹

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

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

      列主元高斯消去法:

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

      完全主元高斯消去法:

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

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

      2.實驗程序的設(shè)計

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

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

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

      3.計算結(jié)果及分析

      (1)

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

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

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

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

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

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

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

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

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

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

      (2)

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

      最終解x=(1.***

      1.***

      1.***

      1.***

      0.***

      1.***

      0.***

      1.***

      0.***

      1.***)T

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

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

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

      第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.***

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

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

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

      (3)

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

      順序高斯消去法

      列主元高斯消去

      完全主元高斯消去

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

      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

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

      (4)

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

      維度

      條件數(shù)

      順序消去

      列主元

      完全主元

      模盡量小

      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

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

      4.結(jié)論

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

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

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

      附錄:程序代碼

      clear

      clc;

      format

      long;

      %方法選擇

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

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

      disp('1

      順序Gauss消元法,2

      列主元Gauss消元法,3

      完全選主元Gauss消元法,4

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

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

      %賦值A(chǔ)和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('給定系數(shù)矩陣為:');

      A

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

      b

      %求條件數(shù)及理論解

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

      X=(A\b)'

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

      %f

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

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

      %f

      \n',cond(A));

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

      %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('此次消元后系數(shù)矩陣為:');

      %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('所求解與精確解之差的無窮-范數(shù)為');

      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('此次消元后系數(shù)矩陣為:');

      %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('所求解與精確解之差的無窮-范數(shù)為');

      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('此次消元后系數(shù)矩陣為:');

      %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('所求解與精確解之差的無窮-范數(shù)為');

      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('所求解與精確解之差的無窮-范數(shù)為');

      norm(x4-X,inf)

      end

      二、實驗3.3

      題目:

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

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

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

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

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

      1.算法設(shè)計

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

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

      具體方法這里不再贅述。

      (2)J迭代法:

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

      (3)GS迭代法:

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

      (4)SOR迭代法:

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

      2.實驗過程

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

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

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

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

      3.計算結(jié)果及分析

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

      計算結(jié)果如下,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

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

      J迭代法

      設(shè)定迭代初值為零,計算得到

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

      GS迭代法

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

      0.***

      0.***

      1.***

      1.***

      0.***)T

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

      SOR迭代法

      設(shè)定迭代初值為零向量,并設(shè)定,計算得到SOR法迭代矩陣譜半徑為0.***,經(jīng)過100次迭代后的計算結(jié)果為

      X=(1.***

      0.***

      1.03***59

      1.06***81

      1.***

      0.9***527)T;

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

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

      迭代次數(shù)

      迭代矩陣的譜半徑

      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.***

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

      綜上,四種算法的結(jié)果列表如下:

      算法

      Gauss消去法

      Jacobi法

      GS法

      SOR法(取)

      迭代次數(shù)

      --

      不收斂

      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的條件數(shù)為>>1,所以這是一個病態(tài)問題。由上表可以看出,四種方法的求解都存在一定的誤差。下面分析誤差的來源:

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

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

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

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

      (2)

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

      Gauss消去

      J法

      GS法

      SOR法(w=0.5)

      計算結(jié)果

      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.***

      迭代次數(shù)

      --

      --

      356

      譜半徑

      --

      6.04213

      0.***

      --

      時,算法

      Gauss消去法

      Jacobi法

      GS法

      SOR法(w=0.5)

      計算結(jié)果

      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.***

      迭代次數(shù)

      --

      --

      1019

      譜半徑

      --

      8.64964

      0.***

      --

      算法

      Gauss消去法

      Jacobi法

      GS法

      SOR法(w=0.5)

      計算結(jié)果

      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.***

      迭代次數(shù)

      --

      --

      262

      譜半徑

      --

      6.04213

      >1

      1.***

      8.***

      --

      --

      0.***

      分析以上結(jié)果可以發(fā)現(xiàn),隨著n值的增加,Gauss消去法誤差逐漸增大,而且誤差增大的速度很快,在維數(shù)小于等于10情況下,Gauss消去法得到的結(jié)果誤差較?。坏?dāng)維數(shù)達到15時,計算結(jié)果誤差已經(jīng)達到精確解的很多倍;

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

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

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

      (3)

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

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

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

      Jacobi迭代方法不適宜于求解病態(tài)問題;

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

      SOR方法較適合于求解病態(tài)問題,特別是矩陣維數(shù)較高的時候,其優(yōu)勢更為明顯。

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

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

      4.實驗結(jié)論

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

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

      附錄:程序代碼

      clear

      all

      clc;

      format

      long;

      %矩陣賦值

      n=input('矩陣H的階數(shù):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('解與精確解之差的無窮范數(shù)');

      norm((x1-a),inf)

      end

      D=diag(diag(H));

      L=-tril(H,-1);

      U=-triu(H,1);

      %J迭代法

      if

      a==2;

      %給定初始x0

      ini=input('初始值設(shè)定: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法計算結(jié)果為:');

      xj(:,m2+1)

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

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

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

      m2

      else

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

      end

      end

      %GS迭代法

      if

      a==3;

      %給定初始x0

      ini=input('初始值設(shè)定: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迭代法計算結(jié)果:');

      xG(:,m3+1)

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

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

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

      m3

      else

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

      end

      end

      %SOR迭代法

      if

      a==4;

      %給定初始x0

      ini=input('初始值設(shè)定: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;%迭代次數(shù)

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

      for

      i=1:time_max

      x=Lw*x+f;

      end

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

      x

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

      norm((x_star-x),inf)

      end

      pause

      三、實驗4.1

      題目:

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

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

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

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

      1.算法設(shè)計

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

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

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

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

      2.實驗過程

      一、輸入初值;

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

      三、輸出數(shù)據(jù);

      3.計算結(jié)果及分析

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

      牛頓法

      擬牛頓法

      初始值

      計算結(jié)果X

      x1

      0.***

      0.***

      x2

      1.***

      1.0852***

      x3

      0.***

      0.***

      迭代次數(shù)

      CPU計算時間/s

      3.777815

      2.739349

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

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

      方法

      牛頓法

      擬牛頓法

      初始值

      計算結(jié)果X

      x1

      0.***

      0.***

      x2

      0.***

      0.***

      x3

      -0.***

      -0.***

      迭代次數(shù)

      CPU計算時間/s

      2.722437

      3.920195

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

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

      初始值

      方法

      牛頓法

      擬牛頓法

      計算結(jié)果

      0.***

      1.***

      0.***

      9.21***94

      -5.***

      18.1***205

      迭代次數(shù)

      CPU計算時間/s

      3.907164

      4.818019

      計算結(jié)果

      0.***

      1.***

      0.***

      9.21***91

      -5.***

      18.1***807

      迭代次數(shù)

      2735

      CPU計算時間/s

      8.127286

      5.626023

      計算結(jié)果

      0.***

      1.***

      0.***

      0.***

      1.0852***

      0.***

      迭代次數(shù)

      CPU計算時間/s

      3.777815

      2.739349

      計算結(jié)果

      0.***

      1.***

      0.***

      0.***

      1.***

      0.***

      迭代次數(shù)

      188

      CPU計算時間/s

      3.835697

      2.879070

      計算結(jié)果

      9.21***22

      -5.***

      18.1***605

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

      迭代次數(shù)

      --

      CPU計算時間/s

      4.033868

      --

      計算結(jié)果

      0.***

      1.***

      0.***

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

      迭代次數(shù)

      --

      CPU計算時間/s

      12.243263

      --

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

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

      由于擬牛頓法是一種近似方法,擬牛頓法需要的的迭代次數(shù)明顯更多,而且收斂情況不如牛頓法好(初值不夠接近時,甚至?xí)霈F(xiàn)奇異矩陣的情況),但由于牛頓法的求解比較復(fù)雜,計算時間較長;

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

      初始值

      方法

      牛頓法

      擬牛頓法

      計算結(jié)果

      0.***

      0.***

      -0.***

      0.***

      0.***

      -0.***

      迭代次數(shù)

      CPU計算時間/s

      2.722437

      3.920195

      計算結(jié)果

      0.***

      0.***

      -0.***

      0.***

      -0.***

      76.***

      迭代次數(shù)

      CPU計算時間/s

      5.047111

      5.619752

      計算結(jié)果

      0.***

      0.***

      -0.***

      1.0e+02

      *

      -0.***

      -0.000***6

      1.754***3

      迭代次數(shù)

      CPU計算時間/s

      3.540668

      3.387829

      計算結(jié)果

      0.***

      0.***

      -0.***

      1.0e+04

      *

      0.***

      -0.***

      1.***

      迭代次數(shù)

      CPU計算時間/s

      2.200571

      2.640901

      計算結(jié)果

      0.***

      0.***

      -0.***

      矩陣為奇異值,無法輸出準確結(jié)果

      迭代次數(shù)

      --

      CPU計算時間/s

      1.719072

      --

      計算結(jié)果

      0.***

      0.***

      -0.***

      矩陣為奇異值,無法輸出準確結(jié)果

      迭代次數(shù)

      149

      --

      CPU計算時間/s

      2.797116

      --

      計算結(jié)果

      矩陣為奇異值,無法輸出準確結(jié)果

      矩陣為奇異值,無法輸出準確結(jié)果

      迭代次數(shù)

      --

      --

      CPU計算時間/s

      --

      --

      在這里,與前文類似的發(fā)現(xiàn)不再贅述。

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

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

      (3)

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

      另外,需要說明的是,每次計算給出的CPU時間與計算機當(dāng)時的運行狀態(tài)有關(guān),同時,不同代碼的運行時間也不一定一致,所以這個數(shù)據(jù)并不具有很大的參考價值。

      4.實驗結(jié)論

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

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

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

      附錄:程序代碼

      %方程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('迭代次數(shù)');

      i

      disp('迭代次數(shù)');

      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('迭代次數(shù)');

      i

      disp('迭代次數(shù)');

      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('迭代次數(shù)');

      i

      disp('迭代次數(shù)');

      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('迭代次數(shù)');

      i

      disp('迭代次數(shù)');

      x0

      toc;

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

      學(xué)號:

      姓名:

      實驗二插值法

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

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

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

      實驗內(nèi)容:考慮區(qū)間[-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(wèi)(i)(x), i=0,1,…n,n是n次拉格朗日插值基函數(shù)。

      實驗要求:

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

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

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

      重復(fù)上述的實驗看其結(jié)果如何。

      (3)區(qū)間[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)為插值節(jié)點構(gòu)造上述各函數(shù)的拉格朗日插值多項式,比較其結(jié)果。

      實驗過程:

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

      數(shù)值實驗結(jié)果及分析:。。。。。。。。。。。。。。

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

      實驗總結(jié):。。。。。。。。。。。。。。。

      第四篇:“數(shù)值分析”課程教學(xué)改革淺談

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

      關(guān)鍵詞:數(shù)值分析;教學(xué)方法;實踐

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

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

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

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

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

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

      一、“數(shù)值分析”課程教學(xué)中存在的問題

      1.數(shù)學(xué)理論強,公式繁多冗長,學(xué)生學(xué)習(xí)興趣不高

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

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

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

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

      3.重理論,輕實踐

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

      二、“數(shù)值分析”課程教學(xué)方法淺談

      1.強調(diào)課程的重要性,提高學(xué)生的學(xué)習(xí)興趣

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

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

      2.合理取舍教學(xué)內(nèi)容,把握全局,突出重點

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

      3.合理使用多種教學(xué)方法和手段

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

      4.強調(diào)理論聯(lián)系實踐,培養(yǎng)解決問題的能力

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

      三、總結(jié)

      隨著計算機的廣泛應(yīng)用,“數(shù)值分析”課程作為計算機科學(xué)與技術(shù)的一門專業(yè)基礎(chǔ)課程,在學(xué)生學(xué)習(xí)和工作中越來越重要,因此“數(shù)值分析”課程教學(xué)也應(yīng)該不斷更新知識結(jié)構(gòu),豐富教學(xué)內(nèi)容,改進教學(xué)手段,以提高學(xué)生學(xué)習(xí)興趣,提高教學(xué)質(zhì)量,培養(yǎng)學(xué)習(xí)的能力,從而為后續(xù)課程的學(xué)習(xí)和將來的工作打下堅實的基礎(chǔ)。

      第五篇:《數(shù)值計算方法》課程教學(xué)大綱.

      《數(shù)值計算方法》課程教學(xué)大綱

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

      開課院(系):數(shù)學(xué)與計算機科學(xué)學(xué)院

      一、課程的性質(zhì)與任務(wù)

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

      二、課程的教學(xué)內(nèi)容、基本要求及學(xué)時分配

      (一)誤差分析

      2學(xué)時 了解數(shù)值計算方法的主要研究內(nèi)容。2 理解誤差的概念和誤差的分析方法。熟悉在數(shù)值計算中應(yīng)遵循的一些基本原則。重點:數(shù)值計算中應(yīng)遵循的基本原則。難點:數(shù)值算法的穩(wěn)定性。

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

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

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

      (三)線性方程組的解法

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

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

      重點:矩陣的三角分解。

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

      (四)插值法

      6學(xué)時

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

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

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

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

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

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

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

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

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

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

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

      三、推薦教材及參考書

      推薦教材:

      1、張韻華等編著,數(shù)值計算方法與算法,科學(xué)出版社,2001。

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

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

      2、李慶揚等著,數(shù)值分析,華中理工大學(xué)出版社,2000。

      3、林成森著,數(shù)值計算方法,科學(xué)出版社出版,1999。

      4、李慶揚等著,現(xiàn)代數(shù)值分析,高等教育出版社,1998。

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

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

      大綱制訂者:馮玉明

      大綱審定者:陳小春

      制訂日期:2008-11-15

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

      文檔為doc格式


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

      相關(guān)范文推薦

        數(shù)值分析課程教學(xué)改革探索與實踐論文

        摘要:本文主要就數(shù)值分析課程教學(xué)改革這個話題提出相應(yīng)的分析探討,并且認真進行了實踐初步探索,以期能夠?qū)δ壳耙约拔磥淼臄?shù)值分析課程教學(xué)改革有一定的幫助。關(guān)鍵詞:數(shù)值分析;教......

        數(shù)值分析學(xué)習(xí)心得體會

        數(shù)值分析學(xué)習(xí)感想一個學(xué)期的數(shù)值分析,在老師的帶領(lǐng)下,讓我對這門課程有了深刻的理解和感悟。這門課程是一個十分重視算法和原理的學(xué)科,同時它能夠?qū)⑷说乃季S引入數(shù)學(xué)思考的模式......

        復(fù)數(shù)值分析習(xí)題

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

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

        2015-2016學(xué)年第二學(xué)期 《實用會計軟件》課程實驗報告 實驗一 應(yīng)收應(yīng)付系統(tǒng)初始化 一、實驗內(nèi)容 設(shè)置系統(tǒng)參數(shù) 設(shè)置基礎(chǔ)資料 輸入初始數(shù)據(jù) 與總賬系統(tǒng)對賬 結(jié)束初始化 (應(yīng)收......

        數(shù)值分析第六章學(xué)習(xí)小結(jié)

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

        數(shù)值分析計算實習(xí)題

        《數(shù)值分析》計算實習(xí)題姓名:學(xué)號:班級:第二章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)=......

        數(shù)值分析學(xué)習(xí)總結(jié)感想

        數(shù)值分析學(xué)習(xí)感想 一個學(xué)期的數(shù)值分析,在老師的帶領(lǐng)下,讓我對這門課程有了深刻的理解和感悟。這門課程是一個十分重視算法和原理的學(xué)科,同時它能夠?qū)⑷说乃季S引入數(shù)學(xué)思考的模......

        河海大學(xué)數(shù)值分析教學(xué)提綱

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