版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 數(shù)</b></p><p><b> 值</b></p><p><b> 逼</b></p><p><b> 近</b></p><p><b> 課</b></p><p
2、><b> 程</b></p><p><b> 設(shè)</b></p><p><b> 計(jì)</b></p><p><b> 報(bào)</b></p><p><b> 告</b></p><p>&
3、lt;b> 作業(yè)一</b></p><p> 多項(xiàng)式插值的Runge現(xiàn)象</p><p> 對(duì)于Runge函數(shù)f(x)= ,在[-1,1]上作等距節(jié)點(diǎn)插值,分別取n=4,n=8,n=12,編出程序,畫出此插值的圖像。</p><p> 程序代碼(matlab實(shí)現(xiàn)):</p><p> lagrange.m<
4、/p><p> function y=lagrange(x0,y0,x)</p><p> ii=1:length(x0);y=zeros(size(x));</p><p><b> for i=ii</b></p><p> ij=find(ii~=i);y1=1;</p><p> f
5、or j=1:length(ij),y1=y1.*(x-x0(ij(j)));</p><p><b> end</b></p><p> y=y+y1*y0(i)/prod(x0(i)-x0(ij));</p><p><b> end</b></p><p><b> rung
6、e.m</b></p><p> function runge(m1,m2,m3)</p><p> x1=-1+2*[0:m1]/m1;</p><p> y1=1./(1+25*x1.^2);</p><p> x=-1:0.01:1;</p><p> y4=lagrange(x1,y1,x
7、);</p><p> x2=-1+2*[0:m2]/m2;</p><p> y2=1./(1+25*x2.^2);</p><p> x=-1:0.01:1;</p><p> y5=lagrange(x2,y2,x);</p><p> x3=-1+2*[0:m3]/m3;</p><
8、;p> y3=1./(1+25*x3.^2);</p><p> x=-1:0.01:1;</p><p> y6=lagrange(x3,y3,x);</p><p> x=-1:0.01:1;</p><p> y=1./(1+25*x.^2);</p><p> plot(x,y,'k-
9、',x,y4,'r--',x,y5,'b-.',x,y6,'m:')</p><p> legend('原函數(shù)','n=4','n=8','n=12')</p><p> 三、運(yùn)行結(jié)果(運(yùn)行過程):</p><p> 輸入runge(4,8,
10、12),可得插值圖像:</p><p><b> 作業(yè)二</b></p><p><b> Remez算法</b></p><p> 求函數(shù)f(x)= 在[-1,1]上的二次多項(xiàng)式逼近。</p><p> 參考文獻(xiàn):數(shù)值分析算法描述與習(xí)題解答(徐士良著)</p><p&g
11、t; 二、程序代碼(C語言實(shí)現(xiàn)):</p><p> #include<stdio.h></p><p> #include<math.h></p><p> double remezf(double x)</p><p><b> {</b></p><p>&
12、lt;b> double y;</b></p><p><b> y=exp(x);</b></p><p> return(y);</p><p><b> }</b></p><p> void remez(double a,double b,double p[],i
13、nt n,double eps)</p><p> { int i,j,k,m;</p><p> double x[21],g[21],d,t,u,s,xx,x0,h,yy;</p><p> if(n>20) n=20;</p><p> m=n+1; d=1.0e+35;</p><p> f
14、or(k=0;k<=n;k++)</p><p><b> { </b></p><p> t=cos((n-k)*3.1415926/(1.0*n));</p><p> x[k]=(b+a+(b-a)*t)/2.0;</p><p><b> }</b></p>&l
15、t;p> while(1==1){</p><p><b> u=1.0;</b></p><p> for(i=0;i<=m-1;i++){</p><p> p[i]=remezf(x[i]);</p><p><b> g[i]=-u; </b></p>&
16、lt;p><b> u=-u;</b></p><p><b> }</b></p><p> for(j=0;j<=n-1;j++){</p><p><b> k=m; </b></p><p><b> s=p[k-1];</b>
17、;</p><p> xx=g[k-1];</p><p> for(i=j;i<=n-1;i++){</p><p> t=p[n-i+j-1]; </p><p> x0=g[n-i+j-1];</p><p> p[k-1]=(s-t)/(x[k-1]-x[m-i-2]);</p>
18、<p> g[k-1]=(xx-x0)/(x[k-1]-x[m-i-2]);</p><p><b> k=n-i+j; </b></p><p><b> s=t; </b></p><p><b> xx=x0;</b></p><p><b>
19、 }</b></p><p><b> }</b></p><p> u=-p[m-1]/g[m-1];</p><p> for(i=0;i<=m-1;i++)</p><p> p[i]=p[i]+g[i]*u;</p><p> for(j=1;j<=n-
20、1;j++){</p><p><b> k=n-j; </b></p><p><b> h=x[k-1];</b></p><p><b> s=p[k-1];</b></p><p> for(i=m-j;i<=n;i++){</p><
21、p> t=p[i-1]; </p><p> p[k-1]=s-h*t;</p><p><b> s=t; </b></p><p><b> k=i;</b></p><p><b> }</b></p><p><b>
22、 }</b></p><p> p[m-1]=fabs(u); </p><p><b> u=p[m-1];</b></p><p> if(fabs(u-d)<=eps) return;</p><p><b> d=u; </b></p><p&g
23、t; h=0.1*(b-a)/(1.0*n);</p><p><b> xx=a; </b></p><p><b> x0=a;</b></p><p> while(x0<=b){</p><p> s=remezf(x0); </p><p><
24、b> t=p[n-1];</b></p><p> for(i=n-2;i>=0;i--)</p><p> t=t*x0+p[i];</p><p> s=fabs(s-t);</p><p> if(s>u) { u=s; xx=x0;}</p><p><b>
25、 x0=x0+h;</b></p><p><b> }</b></p><p> s=remezf(xx);</p><p><b> t=p[n-1];</b></p><p> for(i=n-2;i>=0;i--)</p><p> t=t
26、*xx+p[i];</p><p> yy=s-t; i=1; j=n+1;</p><p> while((j-i)!=1){</p><p> k=(i+j)/2;</p><p> if(xx<x[k-1])j=k;</p><p><b> else i=k;</b><
27、;/p><p><b> }</b></p><p> if(xx<x[0]){</p><p> s=remezf(x[0]); </p><p><b> t=p[n-1];</b></p><p> for(k=n-2;k>=0;k--)</p&
28、gt;<p> t=t*x[0]+p[k];</p><p><b> s=s-t;</b></p><p> if(s*yy>0.0)x[0]=xx;</p><p><b> else{ </b></p><p> for(k=n-1; k>=0; k--)&
29、lt;/p><p> x[k+1]=x[k];</p><p><b> x[0]=xx; </b></p><p><b> }</b></p><p><b> }</b></p><p><b> else{</b>&l
30、t;/p><p> if(xx>x[n])</p><p><b> {</b></p><p> s=remezf(x[n]); </p><p><b> t=p[n-1];</b></p><p> for(k=n-2;k>=0;k--)</p&
31、gt;<p> t=t*x[n]+p[k];</p><p><b> s=s-t;</b></p><p> if(s*yy>0.0)x[n]=xx;</p><p><b> else{</b></p><p> for(k=0;k<=n-1;k++)<
32、/p><p> x[k]=x[k+1];</p><p><b> x[n]=xx;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else{</b></p
33、><p> i=i-1; j=j-1;</p><p> s=remezf(x[i]); </p><p><b> t=p[n-1];</b></p><p> for(k=n-2;k>=0;k--)</p><p> t=t*x[i]+p[k];</p><p&
34、gt;<b> s=s-t;</b></p><p> if(s*yy>0.0) x[i]=xx;</p><p> else x[j]=xx;</p><p><b> }</b></p><p><b> }</b></p><p>
35、<b> }</b></p><p><b> }</b></p><p> void main()</p><p> { double a,b,eps,p[4];</p><p> a=-1.0; b=1.0; eps=1.0e-10;</p><p> r
36、emez(a,b,p,3,eps);</p><p> printf("a0=%e\n",p[0]);</p><p> printf("a1=%e\n",p[1]);</p><p> printf("a2=%e\n",p[2]);</p><p> printf(&quo
37、t;\n");</p><p> printf("MAX(p-f)=%e\n",p[3]);</p><p> printf("\n");</p><p><b> }</b></p><p> 三、運(yùn)行結(jié)果及說明:</p><p> 其
38、中a0,a1,a2分別為二次多項(xiàng)式零次,一次,二次的系數(shù)。</p><p><b> 作業(yè)三</b></p><p><b> 復(fù)化公式</b></p><p> 用復(fù)化公式計(jì)算積分。</p><p> 程序代碼(C++實(shí)現(xiàn)):</p><p> #include&
39、lt;iostream.h></p><p> #include<math.h></p><p> #include<stdlib.h></p><p> #include<iomanip.h></p><p> double f(double x) //被積分函數(shù)f(x)</p>
40、;<p><b> {</b></p><p> return exp(x);</p><p><b> }</b></p><p> int fun(int n)</p><p><b> {</b></p><p><b
41、> if(n>=0)</b></p><p><b> {</b></p><p> if(n==0)return 1;</p><p> else return 2*fun(n-1);</p><p><b> }</b></p><p>
42、 else exit(0);</p><p><b> }</b></p><p> double T(int n) //復(fù)化梯形公式</p><p><b> {</b></p><p> double a=0,b=1,sum=0,h=(b-a)/n;</p><p
43、><b> long i;</b></p><p> for(i=1;i<n;i++)</p><p><b> {</b></p><p> sum+=f(a+i*h);</p><p><b> }</b></p><p>
44、sum+=(f(a)+f(b))/2;</p><p> return (h*sum);</p><p><b> }</b></p><p> double S(int n) //復(fù)化Simpson公式</p><p><b> {</b></p><p> do
45、uble Sn;</p><p> Sn=(4*T(2*n)-T(n))/3;</p><p> return (Sn);</p><p><b> }</b></p><p> double C(int n) //復(fù)化Cotes公式</p><p><b> {</b&
46、gt;</p><p> double Cn;</p><p> Cn=(16*S(2*n)-S(n))/15;</p><p> return (Cn);</p><p><b> }</b></p><p> void main()</p><p><b
47、> {</b></p><p><b> int i;</b></p><p> cout<<"1復(fù)化梯形公式,2復(fù)化Simpson公式,3復(fù)化Cotes公式:\n ";</p><p> for(i=1;i<=10;i++)</p><p><b&g
48、t; {</b></p><p> cout<<fun(i)<<" ";</p><p> cout<<setiosflags(ios::showpoint)<<setprecision(16);</p><p> cout<<T(fun(i))<<&q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ù)值計(jì)算課程設(shè)計(jì)
- 數(shù)值分析課程設(shè)計(jì)
- 數(shù)值轉(zhuǎn)換 課程設(shè)計(jì)報(bào)告
- 數(shù)值積分課程設(shè)計(jì)
- 數(shù)值分析課程設(shè)計(jì)報(bào)告
- 數(shù)值轉(zhuǎn)換課程設(shè)計(jì)報(bào)告
- 數(shù)值分析課程設(shè)計(jì)報(bào)告
- 數(shù)值分析課程設(shè)計(jì)題目
- [數(shù)學(xué)]數(shù)值計(jì)算課程設(shè)計(jì)
- 數(shù)控課程設(shè)計(jì)--數(shù)控中非圓曲線逼近的算法實(shí)現(xiàn)
- 匯編課程設(shè)計(jì)--數(shù)值的數(shù)制轉(zhuǎn)換
- 數(shù)值分析課程設(shè)計(jì)報(bào)告書
- 地鐵車站ansys數(shù)值分析課程設(shè)計(jì)
- 數(shù)值分析課程設(shè)計(jì)說明書
- 數(shù)值分析課程設(shè)計(jì)--最速下降法
- 數(shù)值插值與擬合課程設(shè)計(jì)論文
- 數(shù)值計(jì)算課程設(shè)計(jì)--典型數(shù)值算法的c++語言程序設(shè)計(jì)
- 數(shù)值方法課程設(shè)計(jì)--典型數(shù)值算法的c++語言程序設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論