版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 數(shù)值分析課程設(shè)計(jì)報(bào)告</p><p> 設(shè)計(jì)題4、6、8、11、12 </p><p> 姓 名 </p><p> 學(xué) 號(hào) </p><p> 院 系 數(shù)學(xué)與信息科學(xué)學(xué)院 </
2、p><p> 專 業(yè) 信息與計(jì)算科學(xué) </p><p> 年 級(jí) 2013 級(jí) </p><p> 指導(dǎo)教師 </p><p> 2016年04月25日</p><p><b> 目
3、錄</b></p><p><b> 設(shè)計(jì)題四3</b></p><p> 1.1問題分析與設(shè)計(jì)思路3</p><p><b> 1.2程序清單4</b></p><p> 1.4 結(jié)果分析7</p><p><b> 1.5設(shè)計(jì)總結(jié)
4、7</b></p><p><b> 設(shè)計(jì)題六8</b></p><p> 2.1問題分析與設(shè)計(jì)思路8</p><p><b> 2.2程序清單8</b></p><p> 2.3 運(yùn)行結(jié)果10</p><p> 2.4結(jié)果分析與設(shè)計(jì)總結(jié)10&
5、lt;/p><p><b> 設(shè)計(jì)題八11</b></p><p> 3.1問題分析與設(shè)計(jì)思路11</p><p> 3.2程序清單11</p><p> 3.3 運(yùn)行結(jié)果13</p><p> 3.4結(jié)果分析與設(shè)計(jì)總結(jié)13</p><p><b>
6、; 設(shè)計(jì)題十一14</b></p><p> 4.1問題分析與設(shè)計(jì)思路14</p><p> 4.2程序清單15</p><p> 4.3 運(yùn)行結(jié)果20</p><p> 4.4結(jié)果分析21</p><p> 設(shè)計(jì)題十二………………………………………………………………………………………
7、..22</p><p> 5.1問題分析與設(shè)計(jì)思路……………………………………………………………………22</p><p> 5.2程序清單…………………………………………………………………………………22</p><p> 5.3運(yùn)行結(jié)果…………………………………………………………………………………22</p><p> 5.4結(jié)
8、果分析…………………………………………………………………………………22</p><p> 數(shù)值分析課程設(shè)計(jì)總結(jié)22</p><p><b> 設(shè)計(jì)題四</b></p><p><b> 龍格現(xiàn)象實(shí)驗(yàn)</b></p><p> 1.1問題分析與設(shè)計(jì)思路</p><p&g
9、t; 在計(jì)算方法中,有利用多項(xiàng)式對(duì)某一函數(shù)的近似逼近,這樣,利用多項(xiàng)式就可以計(jì)算相應(yīng)的函數(shù)值。例如,在事先不知道某一函數(shù)的具體形式的情況下,只能測(cè)量得知某一些分散的函數(shù)值。例如我們不知道氣溫隨日期變化的具體函數(shù)關(guān)系,但是我們可以測(cè)量一些孤立的日期的氣溫值,并假定此氣溫隨日期變化的函數(shù)滿足某一多項(xiàng)式。這樣,利用已經(jīng)測(cè)的數(shù)據(jù),應(yīng)用待定系數(shù)法便可以求得一個(gè)多項(xiàng)式函數(shù)。應(yīng)用此函數(shù)就可以計(jì)算或者說預(yù)測(cè)其他日期的氣溫值。一般情況下,多項(xiàng)式的次數(shù)越
10、多,需要的數(shù)據(jù)就越多,而預(yù)測(cè)也就越準(zhǔn)確,這就是龍格現(xiàn)象。</p><p> 對(duì)于函數(shù)進(jìn)行拉格朗日插值, 取不同的節(jié)點(diǎn)數(shù)n,在區(qū)間[-5,5]上取等距間隔的節(jié)點(diǎn)為插值點(diǎn),把和插值多項(xiàng)式的曲線畫在同一張圖上進(jìn)行比較。</p><p><b> 1.2程序清單</b></p><p> (1)編寫拉格朗日插值函數(shù),將其存到當(dāng)前路徑的M文件中:&
11、lt;/p><p> function y=lagrange(x0,y0,x) </p><p> n=length(x0);m=length(x);</p><p> for i=1:m </p><p><b> z=x(i); </b></p><p><b> L=
12、0.0; </b></p><p> for j=1:n </p><p> T=1.0; </p><p> for k=1:n </p><p> if k~=j </p><p> T=T*(z-x0(k))/(x0(j)-x0(k));
13、 </p><p><b> end</b></p><p><b> end</b></p><p> L=T*y0(j)+L; </p><p><b> end</b></p><p><b> y(i)=L;<
14、;/b></p><p><b> end</b></p><p> ?。?)分別取不同的n值,作出相對(duì)應(yīng)n值的插值多項(xiàng)式的曲線圖。</p><p><b> n=4時(shí),</b></p><p> x0=-5:10/4:5;</p><p> y0=1./(1+
15、x0.^2);</p><p> x=-5:0.1:5;</p><p> y=lagrange(x0,y0,x);</p><p> y1=1./(1+x.^2);</p><p> plot(x,y,'-k')</p><p><b> hold on</b><
16、/p><p> plot(x,y,'-.r')</p><p><b> n=6時(shí),</b></p><p> x0=-5:10/6:5;</p><p> y0=1./(1+x0.^2);</p><p> x=-5:0.1:5;</p><p>
17、 y=lagrange(x0,y0,x);</p><p> >> y1=1./(1+x.^2);</p><p> >> plot(x,y1,'-k')</p><p> >> hold on</p><p> >> plot(x,y,'--h')<
18、;/p><p><b> n=8時(shí),</b></p><p> x0=-5:10/8:5;</p><p> y0=1./(1+x0.^2);</p><p> x=-5:0.1:5;</p><p> y=lagrange(x0,y0,x);</p><p> y
19、1=1./(1+x.^2);</p><p> plot(x,y1,'-k')</p><p><b> hold on</b></p><p> plot(x,y,'--g')</p><p><b> n=10時(shí),</b></p><p
20、> x0=-5:1:5;</p><p> y0=1./(1+x0.^2);</p><p> x=-5:0.1:5;</p><p> y=lagrange(x0,y0,x);</p><p> y1=1./(1+x.^2);</p><p> plot(x,y1,'-k')<
21、/p><p><b> hold on</b></p><p> plot(x,y,'--m')</p><p><b> 1.3 結(jié)果分析</b></p><p><b> 1.4設(shè)計(jì)總結(jié)</b></p><p> 上述現(xiàn)象及結(jié)果
22、告訴我們,在進(jìn)行數(shù)值計(jì)算時(shí),并不是插值多項(xiàng)式的次數(shù)越高(即插值節(jié)點(diǎn)越多),插值效果越好,精度也不一定隨次數(shù)的提高而升高,這種現(xiàn)象稱為Runge現(xiàn)象。從數(shù)值計(jì)算上可解釋為高次插值多項(xiàng)式的計(jì)算會(huì)帶來舍入誤差的增大,從而引起計(jì)算失真。因此,實(shí)際應(yīng)用做插值時(shí)一般只用一次、二次最多用三次插值多項(xiàng)式。</p><p><b> 設(shè)計(jì)題六</b></p><p> 函數(shù)逼近Ma
23、tlab實(shí)現(xiàn)及其應(yīng)用</p><p> 2.1問題思路與設(shè)計(jì)思路</p><p> 在數(shù)值計(jì)算中經(jīng)常要計(jì)算函數(shù)值,如計(jì)算機(jī)中計(jì)算基本初等函數(shù)及其他特殊函數(shù);當(dāng)函數(shù)只在有限點(diǎn)集上給定函數(shù)值,要在包含該點(diǎn)集的區(qū)間上用公式給出函數(shù)的簡(jiǎn)單表達(dá)式,這些都涉及在區(qū)間[a,b]上用簡(jiǎn)單函數(shù)逼近已知復(fù)雜函數(shù)的問題,這就是函數(shù)逼近問題。常用的有最佳平方逼近、最小二乘法。</p><p
24、><b> 2.2程序清單</b></p><p> (1)最佳平方逼近:</p><p> legendre(N)函數(shù):</p><p> function p=legendre(N)</p><p> syms t x;%定義符號(hào)變量t x</p><p><b>
25、 for n=1:N</b></p><p> pp(n)=diff((t^2-1)^(n-1),n-1);%diff函數(shù),求函數(shù)的n階導(dǎo)數(shù)</p><p> Q(n)=2^(n-1)*prod([1:n-1]);%prod函數(shù),計(jì)算數(shù)組元素的連乘積</p><p><b> end</b></p><p&
26、gt;<b> pp(1)=1;</b></p><p><b> Q=sym(Q);</b></p><p> p=pp*(inv(diag(Q)));</p><p> 用M文件建立被逼近函數(shù):</p><p> function F=creat(x)</p><p
27、> n=length(x);</p><p> F=x.*cos(x(1:n));</p><p><b> 區(qū)間變換函數(shù)程序:</b></p><p> function f=convert(a,b,F)</p><p><b> syms x t;</b></p>
28、<p> s=2\((b-a)*t+a+b);</p><p> f=subs(F,x,s);</p><p> 變步長(zhǎng)復(fù)化梯形求積公式:</p><p> function I=tx(g)</p><p><b> m=1;</b></p><p><b> h=
29、1-(-1);</b></p><p> T=zeros(1,100);</p><p> T(1)=h*(feval(g,-1)+feval(g,1))/2;</p><p><b> i=1;</b></p><p> while i<100</p><p><
30、b> m=2*m;</b></p><p><b> h=h/2;</b></p><p><b> s=0;</b></p><p> for k=1:m/2</p><p> x=-1+h*(2*k-1);</p><p> s=s+feva
31、l(g,x);</p><p><b> end</b></p><p> T(i+1)=T(i)/2+h*s;</p><p> if abs(T(i+1)-T(i))<0.00001</p><p><b> I=T(i+1);</b></p><p>&l
32、t;b> break;</b></p><p><b> end</b></p><p><b> i=i+1;</b></p><p><b> end</b></p><p> 最佳平法逼近函數(shù)leastp:</p><p&g
33、t; function [c s]=leastp(a,b,N)</p><p><b> syms t x;</b></p><p> F=creat(x);</p><p> p=legendre(N);</p><p> f=convert(a,b,F);</p><p> f=p
34、*diag(f);</p><p><b> for i=1:N</b></p><p> g=inline(f(i));</p><p><b> I=tx(g);</b></p><p><b> u(i)=I;</b></p><p>
35、Q(i)=2\(2*(i-1)+1);</p><p><b> end</b></p><p><b> Q=sym(Q);</b></p><p> c=double(u*diag(Q));</p><p><b> S=c*p';</b></p>
36、;<p> s=subs(S,t,(2*x-a-b)/(b-a));</p><p> subplot(211),</p><p> ezplot(s,[a:0.01:b]);</p><p> subplot(212),</p><p> ezplot(F,[a,b]);</p><p>
37、在命令窗口輸入以下代碼:</p><p> a=0;b=4;N=2;</p><p> [c s]= leastp(a,b,N);</p><p> a=0;b=4;N=4; </p><p> [c s]= leastp(a,b, N);</p><p> a=0;b=4;N=7;</p>&
38、lt;p> [c s]= leastp(a,b, N);</p><p><b> ?。?)最小二乘法</b></p><p> x=[1:1:30]; y=[9,10,11,12,13,14,13,12,11,9,10,11,12,13,14,12,11,10,9,8,7,8,9,11,9,7,6,5,3,1]; a1=polyfit(x,y,3)
39、 </p><p> a2= polyfit(x,y,9) </p><p> a3= polyfit(x,y,15) </p><p> b1=polyval(a1,x) </p><p> b2= polyval(a2,x) </p><p> b3= poly
40、val(a3,x) </p><p> r1= sum((y-b1).^2) </p><p> r2= sum((y-b2).^2) </p><p> r3= sum((y-b3).^2) </p><p><b> 2.3結(jié)果分析</b></p&
41、gt;<p><b> ?。?)最佳平方逼近</b></p><p><b> N=2時(shí),</b></p><p><b> N=4時(shí),</b></p><p><b> N=7時(shí), </b></p><p><b> ?。?
42、)最小二乘法</b></p><p><b> 在命令窗口輸入:</b></p><p> plot(x,y,'*') </p><p> hold on plot(x,b1, 'r') </p><p> hold on plo
43、t(x,b2, 'g') </p><p> hold on plot(x,b3, 'b:o') </p><p><b> 運(yùn)行結(jié)果:</b></p><p><b> 2.4設(shè)計(jì)總結(jié)</b></p><p> 通過本次實(shí)驗(yàn),我不僅對(duì)從前
44、所學(xué)的數(shù)值線性代數(shù)的知識(shí)有了一定的復(fù)習(xí)和理解,包括最小二乘法,擬合數(shù)據(jù),擬合多項(xiàng)式等有了更好的把握,并且練習(xí)了如何更準(zhǔn)確和熟練地使用Matlab 軟件,該款軟件非常適用于計(jì)算量大的問題,不僅簡(jiǎn)單易學(xué)而且編程效率高。它包含很多軟件包,方便又實(shí)用。當(dāng)然,我在實(shí)驗(yàn)過程中也遇到了不少問題,但是在同學(xué)的幫助下都得到了妥善的解決,我認(rèn)為,此次最大的收獲并不是解決了某一個(gè)問題和認(rèn)識(shí)了一個(gè)軟件,而是教會(huì)我們?nèi)绾巫约喝チ私夂蛯W(xué)習(xí)使用計(jì)算工具,這
45、對(duì)我們今后的學(xué)習(xí)和工作有很大的幫助。</p><p><b> 設(shè)計(jì)題八</b></p><p> 常見數(shù)值積分方法的Matlab實(shí)現(xiàn)及其應(yīng)用</p><p> 3.1 問題思路與設(shè)計(jì)思路</p><p> 實(shí)際問題當(dāng)中常常需要計(jì)算積分,有些數(shù)值方法,如微分方程和積分方程的求解,也都和積分計(jì)算相聯(lián)系。依據(jù)人們所熟
46、知的微積分基本定理,對(duì)于積分只要找到被積函數(shù)f(x)的原函數(shù)F(x),便有牛頓—萊布尼茨公式:但實(shí)際使用這種求積方法往往有困難,因?yàn)橛写罅康谋环e函數(shù)其原函數(shù)不能用初等函數(shù)表達(dá),故不能用上述公式計(jì)算,因此有必要研究積分的數(shù)值計(jì)算問題。但實(shí)際使用這種求積方法往往有困難,因?yàn)橛写罅康谋环e函數(shù)其原函數(shù)不能用初等函數(shù)表達(dá),故不能用上述公式計(jì)算,因此有必要研究積分的數(shù)值計(jì)算問題。數(shù)值求積方法是近似方法,為要保證精度,我們自然希望求積公式能對(duì)盡可能
47、多的函數(shù)準(zhǔn)確的成立,這就提出了所謂代數(shù)精度的概念:如果某個(gè)求積公式對(duì)于次數(shù)不超過m的多項(xiàng)式均能準(zhǔn)確的成立,但對(duì)于m+1次多項(xiàng)式就不準(zhǔn)確成立,則稱該求積公式具有m次代數(shù)精度。構(gòu)造數(shù)值積分公式最通常的方法是用積分區(qū)間上的n 次插值多項(xiàng)式代替被積函數(shù),由此導(dǎo)出的求積公式稱為插值型求積公式。</p><p><b> 3.2 程序清單</b></p><p> 復(fù)合辛普森
48、公式求解: </p><p> function s=xinpusen(fun,a,b,n)</p><p><b> h=(b-a)/n</b></p><p> s1=0;s2=0;</p><p> for k=0:(n-1)</p><p><b> x=a+h*k;&
49、lt;/b></p><p> s1=s1+feval(fun,x);</p><p><b> end</b></p><p> for k=0:(n-1)</p><p> x=a+h*(k+1/2);</p><p> s2=s2+feval(fun,x);</p>
50、;<p><b> end</b></p><p> s=h/6*(feval(fun,a)+feval(fun,b)+2*s1+4*s2);</p><p><b> 高斯求積公式求解:</b></p><p> function g=gaosi(fname,a,b,n,m) </p>
51、<p> switch m </p><p> case 1 </p><p><b> t=0;</b></p><p><b> A=1; </b></p><p> case 2 </p><p> t
52、=[-1/sqrt(3),1/sqrt(3)];</p><p> A=[1,1]; </p><p> case 3 </p><p> t=[-sqrt(0.6),0.0,sqrt(0.6)];</p><p> A=[5/9,8/9,5/9]; </p><p> case 4
53、 </p><p> t=[-0.8612136,-0.339981,0.339981,0.861136]; </p><p> A=[0.347855,0.652145,0.652145,0.347855]; </p><p> case 5 </p><p> t=[-0.906180,-
54、0.538469,0.0,0.538469,0.906180]; </p><p> A=[0.236927,0.478629,0.568889,0.478629,0.236927]; </p><p> case 6 </p><p> t=[-0.932470,-0.661209,-0.238619,0.238619,0.66120
55、9,0.932470]; </p><p> A=[0.171325,0.360762,0.467914,0.467914,0.360762,0.171325]; </p><p><b> otherwise</b></p><p><b> error</b></p><p><b&
56、gt; end</b></p><p> x=linspace(a,b,n+1);</p><p><b> g=0;</b></p><p><b> for i=1:n</b></p><p> g=g+gsint(fname,x(i),x(i+1),A,t);</p
57、><p><b> end</b></p><p> function g=gsint(fname,a,b,A,t) </p><p> g=(b-a)/2*sum(A.*feval(fname,(b-a)/2*t+(a+b)/2));</p><p> 龍貝格求積公式求解:</p><p>
58、; function[t]=romberg(f,a,b,e) </p><p> t=zeros(15,4); </p><p> t(1,1)=(b-a)/2*(f(a)+f(b)); </p><p> for k=2:4 </p
59、><p><b> sum=0;</b></p><p> for i=1:2^(k-2)</p><p> sum=sum+f(a+(2*i-1)*(b-a)/2^(k-1));</p><p><b> end</b></p><p> t(k,1)=0.5*t(k
60、-1,1)+(b-a)/2^(k-1)*sum;</p><p><b> for i=2:k</b></p><p> t(k,i)=(4^(i-1)*t(k,i-1)-t(k-1,i-1))/(4^(i-1)-1);</p><p><b> end</b></p><p><b&g
61、t; end</b></p><p> for k=5:15 </p><p><b> sum=0;</b></p><p> for i=1:2^(k-2)</p><p> sum=sum+f(a+(2*i-1)*(b-a)/2^(k-1));</p
62、><p><b> end</b></p><p> t(k,1)=0.5*t(k-1,1)+(b-a)/2^(k-1)*sum;</p><p><b> for i=2:4</b></p><p> t(k,i)=(4^(i-1)*t(k,i-1)-t(k-1,i-1))/(4^(i-1)-
63、1);</p><p><b> end </b></p><p> if k>6 </p><p> if abs(t(k,4)-t(k-1,4))<e </p><p> disp([num2str(t(k,4))]); </p><
64、;p><b> break;</b></p><p><b> end</b></p><p><b> end</b></p><p><b> end</b></p><p><b> if k>=15</b>
65、;</p><p> disp(['溢出']); </p><p><b> end</b></p><p><b> 3.3 結(jié)果分析</b></p><p><b> 復(fù)合辛普森公式</b></p><p> 在命令窗
66、口輸入:fun=inline(‘1./(1+x.^2)’);</p><p> xinpusen(fun,01,10)</p><p><b> 運(yùn)行結(jié)果如下:</b></p><p><b> 高斯求解高斯</b></p><p> 在命令窗口輸入:gaosi(inline(‘1./(1+
67、x.^2)’),0,1,2,3)</p><p><b> 運(yùn)行結(jié)果如下:</b></p><p><b> 龍貝格求積公式</b></p><p><b> 運(yùn)行結(jié)果如下:</b></p><p><b> 3.4 設(shè)計(jì)總結(jié)</b></p&
68、gt;<p> 實(shí)驗(yàn)結(jié)果顯示每一個(gè)算法都接近真實(shí)值,但龍貝格算法相比較復(fù)合辛普森算法,高斯算法來說更加接近.對(duì)于代數(shù)精度來說,復(fù)合辛普森的代數(shù)精度為11,龍貝格代數(shù)精度為11,高斯代數(shù)精度為11??梢姶鷶?shù)精度相同時(shí),龍貝格的求積精度最小,所以相同條件下龍貝格求積公式最能接近準(zhǔn)確值。這次課程設(shè)計(jì),用MATLAB實(shí)驗(yàn)對(duì)數(shù)值積分進(jìn)行了實(shí)現(xiàn),用了3種不同的數(shù)值積分的方法,實(shí)現(xiàn)過程中發(fā)現(xiàn)了各種方法之間的區(qū)別和聯(lián)系.并且在實(shí)驗(yàn)過程中
69、,使自己對(duì)數(shù)值積分和MATLAB更加的熟悉.做到了學(xué)習(xí)和實(shí)踐相聯(lián)系。</p><p><b> 設(shè)計(jì)題十一 </b></p><p> 非線性方程的數(shù)值解法的Matlab實(shí)現(xiàn)及其應(yīng)用 </p><p> 4.1 問題思路與設(shè)計(jì)思路</p><p> 非線性是實(shí)際問題中經(jīng)常出現(xiàn)的,并且在科學(xué)與工程計(jì)算中的地位越來越
70、重要,很多我們熟悉的線性模型都是在一定條件下由非線性問題簡(jiǎn)化得到的。非線性問題一般不存在直接的求解公式,故沒有直接方法求解,都要使用迭代法求解,迭代法要求先給出根的一個(gè)近似,若且,根據(jù)連續(xù)函數(shù)性質(zhì)可知在內(nèi)至少有一個(gè)實(shí)根,這時(shí)稱為方程的有根區(qū)間,通常可通過逐次搜索法求得方程的有根區(qū)間。對(duì)于方程,如果是線性函數(shù),則它的求根是容易的。牛頓法實(shí)質(zhì)上是一種線性化方法,其基本思想是將非線性方程逐步歸結(jié)為某種線性方程來求解。設(shè)已知方程有近似根,將函數(shù)
71、在點(diǎn)展開,有,于是方程可近似地表示為: ,這是個(gè)線性方程</p><p> 記其根為 ,則 的計(jì)算公式為: ,這就是牛頓法。二分法的基本思想是將方程根的區(qū)間平分為兩個(gè)小區(qū)間,把有根的小區(qū)間再平分為兩個(gè)更小的區(qū)間,進(jìn)一步考察根在哪個(gè)更小的區(qū)間內(nèi)。如此繼續(xù)下去,直到求出滿足精度要求的近似值。</p><p><b> 4.2 程序清單</b></p>&
72、lt;p> 迭代法:求方程的一個(gè)近似解,給定初值為,誤差不超過。</p><p> function[p,k,err,P]=fixpt(f1021,p0,tol,max1)</p><p> P(1) = p0; </p><p> for k = 2:max1 </p><p> P(k) = feval
73、('f1021', P(k-1)); </p><p> k, err = abs(P(k) - P(k-1)) </p><p> p = P(k); </p><p> if(err<tol), </p><p><b> break;
74、 </b></p><p><b> end</b></p><p> if k == max1 </p><p> disp('maximum number of iterations exceeded'); </p><p><b> end<
75、;/b></p><p><b> end</b></p><p><b> P=P;</b></p><p> 定義一個(gè)名為f1021.m的函數(shù)文件</p><p> function y = f1021(x) </p><p> y = sin(x
76、)/x;</p><p> 割線法:求方程的一個(gè)近似解,給定初值-1.5,-1.52,誤差不超過。</p><p> function [p1, err, k, y] = secant(f1042, p0, p1, delta, max1) </p><p> p0, p1, feval('f1042', p0), feval('f10
77、42',p1), k = 0; </p><p> for k = 1:max1</p><p> p2 = p1 - feval('f1042',p1)*(p1-p0)/(feval('f1042',p1) - feval('f1042',p0)); </p><p> err = abs(p
78、2-p1); </p><p> p0 = p1; </p><p> p1 = p2; </p><p> p1, err, k, y = feval('f1042', p1); </p><p> if (err < delta) | (y == 0),</p>&
79、lt;p> break, </p><p><b> end</b></p><p><b> end</b></p><p> 先定義一個(gè)名為f1042.m的函數(shù)文件</p><p> function y = f1042(x) </p><
80、;p> y = x^3-x + 2;</p><p> 建立一個(gè)主程序prog1042.m</p><p><b> clc</b></p><p><b> clear</b></p><p> secant(‘f1042’,-1.5,-1.52,10^(-6),11)</p
81、><p> 牛頓法:求解方程的一個(gè)近似解,給定初值為1.2,誤差不超過。</p><p> function [p1,err,k,y]=newton(f1041,df1041,p0,delta,max1) </p><p> p0, feval('f1041',p0) </p><p> for k=1:max1
82、 </p><p> p1=p0-feval('f1041',p0)/feval('df1041',p0); </p><p> err=abs(p1-p0); </p><p> p0=p1; </p><p> p1,err,k,y=feval('
83、;f1041', p1) </p><p> if (err < delta)| (y == 0), </p><p> break, </p><p><b> end</b></p><p> p1,err,k,y=feval('f104
84、1', p1)</p><p><b> end</b></p><p> 先用m文件定義兩個(gè)名為f1014.m和df1041.m的函數(shù)文件</p><p> function y=f1041(x) </p><p> y=x^4-4*x+2;</p><p> func
85、tion y=df1041(x)</p><p> y=4*x^3-4;</p><p> 建立一個(gè)主程序prog1041.m</p><p><b> clear</b></p><p> newton(‘f1041’,’df1041’,1.2,10^(-6),18)</p><p>&
86、lt;b> 二分法:</b></p><p> function er_fen(f,a,b,esp);</p><p> f1=subs(f,a);</p><p> f2=subs(f,b);</p><p> if f1*f2>0</p><p> disp('該方程在【
87、a,b】上無解');</p><p> elseif f1==0</p><p><b> root=a;</b></p><p> elseif f2==0</p><p><b> root=b;</b></p><p><b> else&l
88、t;/b></p><p><b> a0=a;</b></p><p><b> b0=b;</b></p><p><b> A=[];</b></p><p> while abs((b0-a0)/2)>=esp</p><p>
89、; half=(a0+b0)/2;</p><p> fa=subs(f,a0);</p><p> fb=subs(f,b0);</p><p> fhalf=subs(f,half);</p><p> if fhalf==0</p><p> root=half;</p><p&g
90、t;<b> break;</b></p><p> elseif fa*fhalf<0</p><p><b> b0=half;</b></p><p><b> else</b></p><p><b> a0=half;</b>&l
91、t;/p><p><b> end </b></p><p> A=[A,half];</p><p><b> end</b></p><p> root=(b0+a0)/2;</p><p><b> end</b></p>
92、<p><b> root</b></p><p><b> A</b></p><p><b> 4.3 結(jié)果分析</b></p><p><b> 迭代法:</b></p><p><b> 在命令窗口輸入:</b&
93、gt;</p><p><b> clc</b></p><p><b> clear all</b></p><p> fixpt(‘f1021’,0.5,10^(-5),20)</p><p><b> 運(yùn)行結(jié)果如下:</b></p><p>
94、;<b> k = 2</b></p><p> err =0.4589</p><p><b> k = 3</b></p><p> err = 0.1052</p><p><b> k = 4</b></p><p> err = 0
95、.0292</p><p><b> k =5</b></p><p> err = 0.0078</p><p><b> k = 6</b></p><p> err = 0.0021</p><p><b> k = 7</b></
96、p><p> err = 5.7408e-004</p><p><b> k = 8</b></p><p> err = 1.5525e-004</p><p><b> k = 9</b></p><p> err = 4.1975e-005</p>
97、<p><b> k = 10</b></p><p> err =1.1350e-005</p><p><b> k =11</b></p><p> err =3.0688e-006</p><p> ans =0.8767</p><p><
98、;b> 割線法:</b></p><p> 在命令窗口輸入:clc</p><p><b> clear </b></p><p> secant('f1042',-1.5,-1.52,10^(-6),11)</p><p><b> 運(yùn)行結(jié)果如下:</b>
99、;</p><p> p0 =-1.5000</p><p> p1 =-1.5200</p><p> ans =0.1250</p><p> ans =0.0082</p><p> p1 =-1.5214</p><p> err = 0.0014</p>&l
100、t;p><b> k = 1</b></p><p> p1 =-1.5214</p><p> err =2.2961e-005</p><p><b> k =2</b></p><p> p1 =-1.5214</p><p> err =2.431
101、8e-008</p><p><b> k =3</b></p><p> ans = -1.5214</p><p><b> 牛頓法:</b></p><p> 在命令窗口輸入:clear </p><p> newton('f1041',
102、39;df1041',1.2, 10^(-6), 18)</p><p><b> 運(yùn)行結(jié)果如下:</b></p><p> p0 =1.2000</p><p> ans =-0.7264</p><p> p1 =1.4495</p><p> err =0.2495<
103、/p><p><b> k =1</b></p><p> y = 0.6160</p><p> p1 =1.4495</p><p> err = 0.2495</p><p><b> k =1</b></p><p> y = 0.61
104、60</p><p> p1 =1.3741</p><p> err = 0.0753</p><p><b> k =2</b></p><p> y = 0.0690</p><p> p1 = 1.3741</p><p> err = 0.0753&l
105、t;/p><p><b> k = 2</b></p><p><b> y =0.0690</b></p><p> p1 =1.3633</p><p> err = 0.0108</p><p><b> k = 3</b></p>
106、;<p><b> y =0.0013</b></p><p> p1 = 1.3633</p><p> err = 0.0108</p><p><b> k = 3</b></p><p><b> y =0.0013</b></p>
107、<p> p1 = 1.3631</p><p> err =2.1510e-004</p><p><b> k = 4</b></p><p> y =5.1591e-007</p><p> p1 =1.3631</p><p> err =2.1510e-004&l
108、t;/p><p><b> k =4</b></p><p> y =5.1591e-007</p><p> p1 = 1.3631</p><p> err = 8.4146e-008</p><p><b> k = 5</b></p><p&
109、gt; y = 7.9048e-014</p><p> ans = 1.3631</p><p><b> 二分法:</b></p><p> 在命令窗口輸入:syms x;er_fen(sin(x),-2,1,1.0e-2)</p><p><b> 運(yùn)行結(jié)果如下:</b></p
110、><p><b> 4.4 設(shè)計(jì)總結(jié)</b></p><p> 求解非線性方程的問題有以下幾種基本方法。二分法簡(jiǎn)單易行,但收斂較慢,僅有線性收斂速度。而且該方法不能用于求偶數(shù)重根或復(fù)根,但可以用來確定迭代法的初始值。牛頓法是方程求根中常用的一種迭代方法,它除了具有簡(jiǎn)單迭代法的優(yōu)點(diǎn)外,還具有二階收斂速度(在單根鄰近處)的特點(diǎn),但牛頓法對(duì)初始值選取比較苛刻(必須充分靠近方
111、程的根)否則牛頓法可能不收斂。根據(jù)二分法求解非線性方程根的原理,將所求方程根所在的區(qū)間平分為兩個(gè)小區(qū)間,在判斷根屬于哪個(gè)小區(qū)間;把有根的小區(qū)間再平分為二,再判斷根所在的更小的區(qū)間對(duì)分;重復(fù)這一過程,最后求出所要的近似值。當(dāng)所分的小區(qū)間的間距越小的時(shí)候,得出的方程根結(jié)果就越精確,其原因就是所分的小區(qū)間間距越小,則就越接近方程等于0的根。所以最后的結(jié)果的精度越高,得到的誤差越??;而對(duì)于簡(jiǎn)單迭代法,只有在滿足一定條件的情況下,才能求解出在區(qū)間
112、上有唯一根使迭代序列收斂于。根據(jù)牛頓迭代法的原理,求解出非線性方程根的結(jié)果可以看出,牛頓迭代法具有平方收斂的速度,所以在迭代過程中只要迭代幾次就會(huì)得到比較精確的解,并不像簡(jiǎn)單迭代法,需要迭代多次才能解出較為精確的結(jié)果,但是用牛頓迭代法求解時(shí)選定的初值要接</p><p><b> 設(shè)計(jì)題十二 </b></p><p> 常微分方程的數(shù)值解法及Matlab實(shí)現(xiàn)
113、</p><p> 5.1 問題思路與設(shè)計(jì)思路</p><p> 歐拉方法是解常微分方程初值問題最簡(jiǎn)單最古老的一種數(shù)值方法,其基本思路就是把中的導(dǎo)數(shù)項(xiàng)用差商逼近,從而將一個(gè)微分方程轉(zhuǎn)化為一個(gè)代數(shù)方程,以便求解。</p><p> 龍格-庫(kù)塔方法的基本思路是想辦法計(jì)算f(x,y)在某些點(diǎn)上的函數(shù)值,然后對(duì)這些函數(shù)值做數(shù)值線性組合,構(gòu)造出一個(gè)近似的計(jì)算公式;再把近
114、似的計(jì)算公式和解的泰勒展開式相比較,使得前面的若干項(xiàng)相吻合,從而達(dá)到較高的精度。</p><p><b> 5.2 程序清單</b></p><p><b> ?。?)歐拉法:</b></p><p> 創(chuàng)建M文件euler.m</p><p> function [x,y]=euler1(f
115、un,x0,xfinal,y0,n)</p><p> if nargin<5,n=50;</p><p><b> end</b></p><p> h=(xfinal-x0)/n;</p><p> x(1)=x0;y(1)=y0;</p><p><b> for
116、i=1:n</b></p><p> x(i+1)=x(i)+h;</p><p> y(i+1)=y(i)+h*feval(fun,x(i),y(i));</p><p><b> end</b></p><p> 定義函數(shù)方程組中的函數(shù)f1,創(chuàng)建f1.m文件</p><p>
117、; function f=f1(x,y)</p><p><b> f=y-2*x/y</b></p><p> 在matlab命令窗口輸入:</p><p> (2)龍格-庫(kù)塔方法:</p><p> function [ ] = LGKT(h,x0,y0,X,Y)</p><p>
118、 format long </p><p> h=input('h='); </p><p> x0=input('x0='); </p><p> y0=input('y0=');</p><p> disp('輸入的范圍是:');</p><p&g
119、t; X=input('X=');Y=input('Y=');</p><p> n=round((Y-X)/h); </p><p> i=1;x1=0;k1=0;k2=0;k3=0;k4=0;</p><p> for i=1:1:n </p><p><b> x1=x0+h;<
120、;/b></p><p> k1=-x0*y0^2; </p><p> k2=(-(x0+h/2)*(y0+h/2*k1)^2); </p><p> k3=(-(x0+h/2)*(y0+h/2*k2)^2);</p><p> k4=(-(x1)*(y0+h*k3)^2);</p><p> y1=
121、y0+h/6*(k1+2*k2+2*k3+k4);</p><p> x0=x1;y0=y1;</p><p> y=2/(1+x0^2); </p><p> fprintf('結(jié)果=%.3f,%.7f,%.7f\n',x1,y1,y); </p><p><b> end</b></p
122、><p><b> end</b></p><p><b> 5.3 結(jié)果分析</b></p><p><b> ?。?)歐拉法</b></p><p> 在matlab命令窗口輸入:</p><p> plot(x,y,'r*-‘,x,sq
123、rt(1+2*x),’g+--‘;xlabel(‘x’);ylabel(‘y’);title(‘y’=y-2x/y’);legend(‘?dāng)?shù)值解’,’精確解’)</p><p><b> 運(yùn)行結(jié)果如下:</b></p><p><b> (2)龍格-庫(kù)塔法</b></p><p> 在命令窗口輸入:LGKT</p
124、><p><b> h=0.25</b></p><p><b> x0=0</b></p><p><b> y0=2</b></p><p> 運(yùn)行結(jié)果如下: LGKT</p><p><b> h=0.25</b>&
125、lt;/p><p><b> x0=0</b></p><p><b> y0=2</b></p><p><b> h=0.25</b></p><p><b> x0=0</b></p><p><b> y0=
126、2</b></p><p><b> 輸入的范圍是:</b></p><p><b> X=0</b></p><p><b> Y=5</b></p><p> 結(jié)果=0.250,1.8823080,1.8823529</p><p&g
127、t; 結(jié)果=0.500,1.5998962,1.6000000</p><p> 結(jié)果=0.750,1.2799478,1.2800000</p><p> 結(jié)果=1.000,1.0000271,1.0000000</p><p> 結(jié)果=1.250,0.7805556,0.7804878</p><p> 結(jié)果=1.500,0.6
128、154594,0.6153846</p><p> 結(jié)果=1.750,0.4923742,0.4923077</p><p> 結(jié)果=2.000,0.4000543,0.4000000</p><p> 結(jié)果=2.250,0.3299396,0.3298969</p><p> 結(jié)果=2.500,0.2758952,0.2758621
129、</p><p> 結(jié)果=2.750,0.2336023,0.2335766</p><p> 結(jié)果=3.000,0.2000200,0.2000000</p><p> 結(jié)果=3.250,0.1729886,0.1729730</p><p> 結(jié)果=3.500,0.1509558,0.1509434</p><
130、p> 結(jié)果=3.750,0.1327899,0.1327801</p><p> 結(jié)果=4.000,0.1176550,0.1176471</p><p> 結(jié)果=4.250,0.1049245,0.1049180</p><p> 結(jié)果=4.500,0.0941229,0.0941176</p><p> 結(jié)果=4.750,
131、0.0848850,0.0848806</p><p> 結(jié)果=5.000,0.0769267,0.0769231</p><p><b> 5.4 設(shè)計(jì)總結(jié)</b></p><p> 常微分方程在科學(xué)技術(shù)和工程中占有重要的地位,這里主要應(yīng)用的是歐拉方法、龍格-庫(kù)塔法。它們都是都是采用單步法求常微分方程的數(shù)值解。從構(gòu)造過程看來,它們互相聯(lián)
132、系,但它們又互有差異,它們的精度不同,在每步的迭代過程產(chǎn)生的誤差不一樣。一般來說,歐拉方法較大,而龍格-庫(kù)塔法法產(chǎn)生的誤差較小。因此,我們可以根據(jù)實(shí)際的需要,采取不同的方法求常微分方程的數(shù)值解。</p><p> 數(shù)值分析課程設(shè)計(jì)總結(jié)</p><p> 通過此次課程設(shè)計(jì),使我更加扎實(shí)的掌握了MATLAB方面的知識(shí),在設(shè)計(jì)過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查
133、終于找出了原因所在,也暴露出了前期我在這方面的知識(shí)欠缺和經(jīng)驗(yàn)不足。實(shí)踐出真知,通過親自動(dòng)手制作,使我們掌握的知識(shí)不再是紙上談兵。由于能力有限,部分功能尚未實(shí)現(xiàn),但是我想至少我做了,也掌握了不少課外的知識(shí)。 過而能改,善莫大焉。在課程設(shè)計(jì)過程中,我們不斷發(fā)現(xiàn)錯(cuò)誤,不斷改正,不斷領(lǐng)悟,不斷獲取。最終的檢測(cè)調(diào)試環(huán)節(jié),本身就是在踐行“過而能改,善莫大焉”的知行觀。這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多問題,最后在老師的指導(dǎo)下,終于游逆
134、而解。在今后社會(huì)的發(fā)展和學(xué)習(xí)實(shí)踐過程中,一定要不懈努力,不能遇到問題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問題所在,然后一一進(jìn)行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上劈荊斬棘,而不是知難而退,那樣永遠(yuǎn)不可能收獲成功,收獲喜悅,也永遠(yuǎn)不可能得到社會(huì)及他人對(duì)你的認(rèn)可! 課程設(shè)計(jì)誠(chéng)然是一門專業(yè)課,給我很多專業(yè)知識(shí)以及專業(yè)技能上的提升,同時(shí)又是一門講道課,一門辯思課,給了我許多道,給了我很多思,給了我莫大的空間。</p&
135、gt;<p> 我認(rèn)為,在這學(xué)期的課程設(shè)計(jì)中,不僅培養(yǎng)了獨(dú)立思考、動(dòng)手操作的能力,在各種其它能力上也都有了提高。更重要的是,在實(shí)驗(yàn)課上,我們學(xué)會(huì)了很多學(xué)習(xí)的方法。而這是日后最實(shí)用的,真的是受益匪淺。要面對(duì)社會(huì)的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐。這對(duì)于我們的將來也有很大的幫助。</p><p> 回顧起此課程設(shè)計(jì),至今我仍感慨頗多,從理論到實(shí)踐,在這段日子里,可以說得是苦多于甜,但是可以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)值分析課程設(shè)計(jì)
- 數(shù)值分析課程設(shè)計(jì)
- 數(shù)值分析課程設(shè)計(jì)報(bào)告
- 數(shù)值分析課程設(shè)計(jì)題目
- 數(shù)值分析課程設(shè)計(jì)報(bào)告
- 數(shù)值分析課程設(shè)計(jì)報(bào)告書
- 地鐵車站ansys數(shù)值分析課程設(shè)計(jì)
- 數(shù)值逼近課程設(shè)計(jì)
- 數(shù)值分析課程設(shè)計(jì)說明書
- 數(shù)值分析課程設(shè)計(jì)--最速下降法
- 數(shù)值計(jì)算課程設(shè)計(jì)
- 數(shù)值轉(zhuǎn)換 課程設(shè)計(jì)報(bào)告
- 數(shù)值積分課程設(shè)計(jì)
- 數(shù)值分析課程設(shè)計(jì)說明書.doc
- 數(shù)值轉(zhuǎn)換課程設(shè)計(jì)報(bào)告
- [數(shù)學(xué)]數(shù)值計(jì)算課程設(shè)計(jì)
- 數(shù)值分析課程設(shè)計(jì)--初值問題、邊值問題
- 《數(shù)值分析》課程設(shè)計(jì)實(shí)踐教學(xué)的幾點(diǎn)探討
- 數(shù)值分析課程設(shè)計(jì)--newton_迭代法
- 數(shù)值分析課程設(shè)計(jì)---牛頓插值、高斯消去法
評(píng)論
0/150
提交評(píng)論