




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、#include <iostream>#include <fstream>#include <string>#include<iomanip.h>#defineF1(t)(1+(t)*(t)*(2*(t)-3)#defineF2(t)(t)*(t)*(-2*(t)+3)#defineF3(t)(t)*(1+(t)*(t)-2)#defineF4(t)(t)*(t)*(t)-1)using namespace std;void tangent(double *y,double *dy,int n)/ 計算各個節(jié)點的切矢,采用自由端點條件/ 追趕法求
2、解三對角方程組int i;double *a,*b,*c,*d; a=new doublen;b=new doublen; c=new doublen;d=new doublen; / 追趕法計算系數(shù) for(i=1;i <n;i+) ai=1;b0=2;bn-1=2;for(i=1;i <n-1;i+) bi=4;for(i=0;i <n-1;i+) ci=1; d0=3*(y1-y0); dn-1=3*(yn-1-yn-2);for(i=1;i <n-1;i+) di=3*(yi+1-yi-1);/ 追趕法回代double *L,*U;L=new doublen;
3、U=new doublen;U0=b0; for(i=1;i <n;i+)Li=ai/Ui-1;Ui=bi-Li*ci-1;double *yy;yy=new doublen;yy0=d0;for(i=1;i <n;i+)yyi=di-Li*yyi-1; dyn-1=yyn-1/Un-1;for(i=n-2;i>=0;i-) dyi=(yyi-ci*dyi+1)/Ui; /delete a,b,c,d,L,U,yy;xa,int n)double spline(double *x,double *y,double *dy,double / 三次 Hermite 插值/ 數(shù)據(jù)點
4、 xn,yn, 切矢 dyn/ 返回 xa 處的插值數(shù)值/ 要求 x 嚴格遞增, x0 <=xa <=xn-1int i;for(i=0;i <n-1;i+)if(xa <=xi+1)break;double t = (xa-xi)/(xi+1-xi);return F1(t)*yi+F2(t)*yi+1+F3(t)*dyi+F4(t)*dyi+1;int main()doubles_ua,xa_ua;/A 類型循環(huán)變量doubles_ub,xa_ub;/B 類型循環(huán)變量doubles_uc,xa_uc; /C 類型循環(huán)變量doubles_a_result,xa_a_r
5、esult;/doubles_b_result,xa_b_result;/doubleaverage_s,average_xa;doubledy_ua4;doubledy_ub4;doubledy_uc4;doublex_ua4=0.000,0,0,0;doubley_ua4=0.0000,0,0,0;doublex_ub4=0.000,0,0,0;doubley_ub4=0.0000,0,0,0;double x_uc4=0.000,0,0,0;double y_uc4=0.0000,0,0,0;/DNA/double X10 0.000,7.000,11.197,17.910,28.649
6、,45.826,73.301,117.251,187.551,300.00;/double Y10 = 272,3008,5854,10287,18398,32204,56751,95727,151346,232604; /HCG/double X10 0.000,0.500,1.000,5.000,10.000,50.000,100.000,500.000,1000.000,5000.000;/double Y10 = 1477,1869,1920,4279,7010,28345,55156,245217,415291,1294682; /HSV-M/double X10 = 0.000,0
7、.500,0.645,0.832,1.073,1.385,1.786,2.304,2.973,3.835; /double Y10 = 349,4273,5487,7054,9072,11685,15043,19381,24984,32203;/Trepdouble X10 = 0.000,0.400,0.761,1.450,2.760,5.254,10.001,19.039,36.245,70.000; double Y10 = 988,2620,4889,9686,19423,39364,81962,152041,249416,398202; int n;/*string s_a;/ 用于
8、 a b c 段線string s_b;/ 用于 b c 段線string s_c;/ 用于 c 段線string s_avarage;/ 用于 b c 段線 求均值*/for(n=0;n<9;n+) /computing(X,Y ,n);int k_a,k_b,k_c;/ 插值函數(shù)調(diào)用,并把結(jié)果輸入到文件if(n = 0) cout<<n<<endl; for(k_a=0;k_a<4;k_a+)x_uak_a = Xk_a+n;y_uak_a = Yk_a+n;/ 給 x、y 賦初值。ofstream ofs_all("d:spline_all.
9、txt");/ 寫文件流 if(!ofs_all) return 10000;tangent(y_ua,dy_ua,4);for(xa_ua = X0;xa_ua <= X1;xa_ua += 0.01)s_ua=spline(x_ua,y_ua,dy_ua,xa_ua,4);/fprintf(ofs_all,"%f#%fn ",xa,s); ofs_all<<setw(15)<<xa_ua<<setw(15)<<s_ua<<endl;/ ofs_all.close();/ 寫入第一部分else i
10、f(n = 1)cout<<n<<endl; for(k_a=0;k_a<4;k_a+)x_uak_a = Xk_a; y_uak_a = Yk_a;/ 給 x、y 賦初值。 tangent(y_ua,dy_ua,4);ofstream ofs_all("d:spline_all.txt",ios_base:app);/ 寫文件流 if(!ofs_all) return 10000;for(xa_ua = X1;xa_ua <= X2;xa_ua += 0.01) s_ua=spline(x_ua,y_ua,dy_ua,xa_ua,4);
11、 xa_a_result = xa_ua;s_a_result= s_ua;for(k_b=0;k_b<4;k_b+)x_ubk_b = Xk_b+1;y_ubk_b = Yk_b+1; tangent(y_ub,dy_ub,4);/for(xa_ub = X1;xa_ub <= X2;xa_ub += 0.01) / xa_ub = xa_ua-0.01;s_ub=spline(x_ub,y_ub,dy_ub,xa_ua,4); average_s = (s_a_result+s_ub)/2; average_xa = (xa_a_result+xa_ub)/2;ofs_all&
12、lt;<setw(15)<<average_xa<<setw(15)<<average_s<<endl;/ofs_all.close();/C x2x3else if(n = 2) cout<<n<<endl;for(k_a=0;k_a<4;k_a+)x_uak_a = Xk_a+n-2;y_uak_a = Yk_a+n-2;/ 給 x、y 賦初值。寫文件流tangent(y_ua,dy_ua,4);ofstream ofs_all("d:spline_all.txt",ios_base:a
13、pp);/ if(!ofs_all) return 10000;for(xa_ua = X2;xa_ua <= X3;xa_ua += 0.01)s_ua=spline(x_ua,y_ua,dy_ua,xa_ua,4); xa_a_result = xa_ua;s_a_result = s_ua;/bfor(k_b=0;k_b<4;k_b+)x_ubk_b = Xk_b+n-1; y_ubk_b = Yk_b+n-1;tangent(y_ub,dy_ub,4);xa_ub = xa_ua-0.01;xa_uc = xa_ub;s_ub=spline(x_ub,y_ub,dy_ub,
14、xa_ua,4); /average_s = (s_a_result+s_ub)/ 2; /average_xa = (xa_a_result+xa_ub)/ 2;/cfor(k_c=0;k_c<4;k_c+)x_uck_c = Xk_c+n;y_uck_c = Yk_c+n;tangent(y_uc,dy_uc,4); s_uc=spline(x_uc,y_uc,dy_uc,xa_ua,4); average_s = (s_a_result+s_ub+s_uc)/3; average_xa = (xa_a_result+xa_ub+xa_uc)/3;ofs_all<<set
15、w(15)<<average_xa<<setw(15)<<average_s<<endl;/ofs_all.close();else if(n = 3)cout<<n<<endl;for(k_a=0;k_a<4;k_a+)x_uak_a = Xk_a+n-2;y_uak_a = Yk_a+n-2;/ 給 x、y 賦初值。寫文件流tangent(y_ua,dy_ua,4);ofstream ofs_all("d:spline_all.txt",ios_base:app);/ if(!ofs_all)
16、 return 10000;for(xa_ua = X3;xa_ua <= X4;xa_ua += 0.01)s_ua=spline(x_ua,y_ua,dy_ua,xa_ua,4); xa_a_result = xa_ua;s_a_result = s_ua;/bfor(k_b=0;k_b<4;k_b+)x_ubk_b = Xk_b+n-1;y_ubk_b = Yk_b+n-1;tangent(y_ub,dy_ub,4);xa_ub = xa_ua-0.01;xa_uc = xa_ub;s_ub=spline(x_ub,y_ub,dy_ub,xa_ua,4); /average_
17、s = (s_a_result+s_ub)/ 2; /average_xa = (xa_a_result+xa_ub)/ 2;/cfor(k_c=0;k_c<4;k_c+)x_uck_c = Xk_c+n;y_uck_c = Yk_c+n;tangent(y_uc,dy_uc,4); s_uc=spline(x_uc,y_uc,dy_uc,xa_ua,4); average_s = (s_a_result+s_ub+s_uc)/3; average_xa = (xa_a_result+xa_ub+xa_uc)/3; ofs_all<<setw(15)<<avera
18、ge_xa<<setw(15)<<average_s<<endl;/ofs_all.close();else if(n = 4)cout<<n<<endl;for(k_a=0;k_a<4;k_a+)x_uak_a = Xk_a+n-2;y_uak_a = Yk_a+n-2;/ 給 x、y 賦初值。tangent(y_ua,dy_ua,4);ofstream ofs_all("d:spline_all.txt",ios_base:app);/ 寫文件流 if(!ofs_all) return 10000;for
19、(xa_ua = X4;xa_ua <= X5;xa_ua += 0.01)s_ua=spline(x_ua,y_ua,dy_ua,xa_ua,4);xa_a_result = xa_ua;s_a_result = s_ua;/bfor(k_b=0;k_b<4;k_b+)x_ubk_b = Xk_b+n-1;y_ubk_b = Yk_b+n-1;tangent(y_ub,dy_ub,4);xa_ub = xa_ua-0.01;xa_uc = xa_ub;s_ub=spline(x_ub,y_ub,dy_ub,xa_ua,4);/average_s = (s_a_result+s_u
20、b)/ 2;/average_xa = (xa_a_result+xa_ub)/ 2;/cfor(k_c=0;k_c<4;k_c+)x_uck_c = Xk_c+n;y_uck_c = Yk_c+n;tangent(y_uc,dy_uc,4); s_uc=spline(x_uc,y_uc,dy_uc,xa_ua,4); average_s = (s_a_result+s_ub+s_uc)/3;average_xa = (xa_a_result+xa_ub+xa_uc)/3;ofs_all<<setw(15)<<average_xa<<setw(15)&
21、lt;<average_s<<endl;/ofs_all.close();else if(n = 5)cout<<n<<endl;for(k_a=0;k_a<4;k_a+)x_uak_a = Xk_a+n-2;y_uak_a = Yk_a+n-2;/ 給 x、y 賦初值。tangent(y_ua,dy_ua,4);ofstream ofs_all("d:spline_all.txt",ios_base:app);/ 寫文件流 if(!ofs_all) return 10000;for(xa_ua = X5;xa_ua <
22、= X6;xa_ua += 0.01)s_ua=spline(x_ua,y_ua,dy_ua,xa_ua,4);xa_a_result = xa_ua;s_a_result = s_ua;/bfor(k_b=0;k_b<4;k_b+)x_ubk_b = Xk_b+n-1;y_ubk_b = Yk_b+n-1;tangent(y_ub,dy_ub,4);xa_ub = xa_ua-0.01;xa_uc = xa_ub;s_ub=spline(x_ub,y_ub,dy_ub,xa_ua,4);/average_s = (s_a_result+s_ub)/ 2;/average_xa = (x
23、a_a_result+xa_ub)/ 2;/cfor(k_c=0;k_c<4;k_c+)x_uck_c = Xk_c+n;y_uck_c = Yk_c+n;tangent(y_uc,dy_uc,4); s_uc=spline(x_uc,y_uc,dy_uc,xa_ua,4); average_s = (s_a_result+s_ub+s_uc)/3;average_xa = (xa_a_result+xa_ub+xa_uc)/3;ofs_all<<setw(15)<<average_xa<<setw(15)<<average_s<&l
24、t;endl;/ofs_all.close();else if(n = 6)cout<<n<<endl;for(k_a=0;k_a<4;k_a+)x_uak_a = Xk_a+n-2;y_uak_a = Yk_a+n-2;/ 給 x、y 賦初值。tangent(y_ua,dy_ua,4);ofstream ofs_all("d:spline_all.txt",ios_base:app);/ 寫文件流 if(!ofs_all) return 10000;for(xa_ua = X6;xa_ua <= X7;xa_ua += 0.01)s_u
25、a=spline(x_ua,y_ua,dy_ua,xa_ua,4);xa_a_result = xa_ua;s_a_result = s_ua;/bfor(k_b=0;k_b<4;k_b+)x_ubk_b = Xk_b+n-1;y_ubk_b = Yk_b+n-1;tangent(y_ub,dy_ub,4);xa_ub = xa_ua-0.01;xa_uc = xa_ub;s_ub=spline(x_ub,y_ub,dy_ub,xa_ua,4);/average_s = (s_a_result+s_ub)/ 2;/average_xa = (xa_a_result+xa_ub)/ 2;/
26、cfor(k_c=0;k_c<4;k_c+)x_uck_c = Xk_c+n;y_uck_c = Yk_c+n;tangent(y_uc,dy_uc,4); s_uc=spline(x_uc,y_uc,dy_uc,xa_ua,4); average_s = (s_a_result+s_ub+s_uc)/3;average_xa = (xa_a_result+xa_ub+xa_uc)/3;ofs_all<<setw(15)<<average_xa<<setw(15)<<average_s<<endl;/ofs_all.close(
27、);else if(n = 7)cout<<n<<endl;for(k_a=0;k_a<4;k_a+)x_uak_a = Xk_a+n-2;y_uak_a = Yk_a+n-2;/ 給 x、y 賦初值。tangent(y_ua,dy_ua,4);ofstream ofs_all("d:spline_all.txt",ios_base:app);/ 寫文件流 if(!ofs_all) return 10000;for(xa_ua = X7;xa_ua <= X8;xa_ua += 0.01)s_ua=spline(x_ua,y_ua,dy_
28、ua,xa_ua,4);xa_a_result = xa_ua;s_a_result= s_ua;for(k_b=0;k_b<4;k_b+)x_ubk_b = Xk_b+n-1; y_ubk_b = Yk_b+n-1;tangent(y_ub,dy_ub,4);/for(xa_ub = X1;xa_ub <= X2;xa_ub += 0.01)/xa_ub = xa_ua-0.01; s_ub=spline(x_ub,y_ub,dy_ub,xa_ua,4);average_s = (s_a_result+s_ub)/2;average_xa = (xa_a_result+xa_ub
29、)/2;ofs_all<<setw(15)<<average_xa<<setw(15)<<average_s<<endl;/ofs_all.close();else if(n =8)cout<<n<<endl;for(k_a=0;k_a<4;k_a+)x_uak_a = Xk_a+n-2;y_uak_a = Yk_a+n-2;/ 給 x、y 賦初值。ofstream ofs_all("d:spline_all.txt",ios_base:app);if(!ofs_all) return 10000;tangent(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圓形草屋 施工方案
- 電梯鋼結(jié)構(gòu)施工方案
- 2025年度木工雕刻技藝傳承與勞務(wù)合作合同
- 2025年度旅游管理公司高層管理人員聘用合同
- 二零二五年度茶葉電商平臺合作合同
- 二零二五年度學校臨時教師聘用合同書-體育教練員合作合同
- 2025年度飯店員工績效考核與薪酬管理合同
- 二零二五年度無固定期限勞動合同解除賠償金支付及賠償金執(zhí)行協(xié)議
- 2025年度汽修廠修理工勞動合同續(xù)簽與調(diào)整合同
- 二零二五年度彩鋼棚建筑綠色生態(tài)施工合同
- 2024-2030年中國稅務(wù)師事務(wù)所行業(yè)管理模式及投資前景展望報告版
- 2024年全國高考英語試題及答案-湖南卷
- 《少兒汽車知識講座》課件
- 部編人教版小學四年級下冊道德與法治全冊教案及每課教學反思
- 中建吊籃安拆專項施工方案(專家論證版)
- 《汽車維修接待實務(wù)》 課件全套 孫麗學習情景1-8 汽車維修服務(wù)接待認知 -新能源汽車維修接待
- 2020年礦建監(jiān)理工作總結(jié)
- 獸醫(yī)學英語詞匯【參考】
- WS 308-2019 醫(yī)療機構(gòu)消防安全管理
- (高鴻業(yè))微觀經(jīng)濟學習題解析+微觀經(jīng)濟學題庫解析
- 浙江省溫州市2024-2025學年高三上學期一模英語試題 含解析
評論
0/150
提交評論