![合工大計算方法實驗報告_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/7014c744-5520-4ac9-87b9-d455a9dea111/7014c744-5520-4ac9-87b9-d455a9dea1111.gif)
![合工大計算方法實驗報告_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/7014c744-5520-4ac9-87b9-d455a9dea111/7014c744-5520-4ac9-87b9-d455a9dea1112.gif)
![合工大計算方法實驗報告_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/7014c744-5520-4ac9-87b9-d455a9dea111/7014c744-5520-4ac9-87b9-d455a9dea1113.gif)
![合工大計算方法實驗報告_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/7014c744-5520-4ac9-87b9-d455a9dea111/7014c744-5520-4ac9-87b9-d455a9dea1114.gif)
![合工大計算方法實驗報告_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/16/7014c744-5520-4ac9-87b9-d455a9dea111/7014c744-5520-4ac9-87b9-d455a9dea1115.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算方法試驗報告班級:學(xué)號:姓名:實驗一、牛頓下山法1 實驗?zāi)康?1) 熟悉非線性方程求根簡單迭代法,牛頓迭代及牛頓下山法(2) 能編程實現(xiàn)簡單迭代法,牛頓迭代及牛頓下山法(3) 認(rèn)識選擇迭代格式的重要性(4) 對迭代速度建立感性的認(rèn)識;分析實驗結(jié)果體會初值對迭代的影響2 實驗內(nèi)容(1)用牛頓下山法解方程(初值為0.6)輸入:初值,誤差限,迭代最大次數(shù),下山最大次數(shù)輸出:近似根各步下山因子 (2)設(shè)方程f(x)=x- 3x 1=0 有三個實根 x=1.8793 , x=-0.34727 ,x=-1.53209現(xiàn)采用下面六種不同計算格式,求 f(x)=0的根 x 或x x = ; x = ;x
2、= ;x = ;x = ;x = x - 輸入:初值,誤差限,迭代最大次數(shù)輸出:近似根、實際迭代次數(shù)3 算法基本原理求非線性方程組的解是科學(xué)計算常遇到的問題,有很多實際背景各種算法層出不窮,其中迭代是主流算法。只有建立有效的迭代格式,迭代數(shù)列才可以收斂于所求的根。因此設(shè)計算法之前,對于一般迭代進行收斂性的判斷是至關(guān)重要的。牛頓法也叫切線法,是迭代算法中典型方法,只要初值選取適當(dāng),在單根附近,牛頓法收斂速度很快,初值對于牛頓迭代至關(guān)重要。當(dāng)初值選取不當(dāng)可以采用牛頓下山算法進行糾正。一般迭代: 牛頓公式:牛頓下山公式: 圖3.1一般迭代算法流程圖下山因子下山條件4 算法描述一般迭代算法見流程圖圖3
3、.2牛頓下山算法流程圖牛頓下山算法見流程圖:5、代碼: #include <iostream> #include <fstream> #include <cmath> using namespace std; class srrt private: int n; double *a, *xr, *xi; public: srrt (int nn) n = nn; a = new doublen+1; /動態(tài)分配內(nèi)存 xr = new doublen; xi = new doublen; void input (); /由文件讀入代數(shù)方程系數(shù) void srr
4、t_root (); /執(zhí)行牛頓下山法 void output (); /輸出根到文件并顯示 srrt () delete a, xr, xi; ; void srrt:input () /由文件讀入代數(shù)方程系數(shù) int i; char str120; cout <<"n輸入文件名: " cin >>str1; ifstream fin (str1); if (!fin) cout <<"n不能打開這個文件 " <<str1 <<endl; exit(1); for (i=n; i>=0;
5、 i-) fin >>ai; /讀入代數(shù)方程系數(shù) fin.close (); void srrt:srrt_root () /執(zhí)行牛頓下山法 int m,i,jt,k,is,it; double t,x,y,x1,y1,dx,dy,p,q,w,dd,dc,c; double g,u,v,pq,g1,u1,v1; m=n; while (m>0)&&(fabs(am)+1.0=1.0) m=m-1; if (m<=0) cout <<"n程序工作失?。?quot; <<endl; return; for (i=0; i&l
6、t;=m; i+) ai=ai/am; for (i=0; i<=m/2; i+) w=ai; ai=am-i; am-i=w; k=m; is=0; w=1.0; jt=1; while (jt=1) pq=fabs(ak); while (pq<1.0e-12) xrk-1=0.0; xik-1=0.0; k=k-1; if (k=1) xr0=-a1*w/a0; xi0=0.0; return; pq=fabs(ak); q=log(pq); q=q/(1.0*k); q=exp(q); p=q; w=w*p; for (i=1; i<=k; i+) ai=ai/q;
7、q=q*p; x=0.0001; x1=x; y=0.2; y1=y; dx=1.0; g=1.0e+37; l40: u=a0; v=0.0; for (i=1; i<=k; i+) p=u*x1; q=v*y1; pq=(u+v)*(x1+y1); u=p-q+ai; v=pq-p-q; g1=u*u+v*v; if (g1>=g) if (is!=0) it=1; if (it=0) is=1; dd=sqrt(dx*dx+dy*dy); if (dd>1.0) dd=1.0; dc=6.28/(4.5*k); c=0.0; while(1=1) c=c+dc; dx=
8、dd*cos(c); dy=dd*sin(c); x1=x+dx; y1=y+dy; if (c<=6.29) it=0; break; dd=dd/1.67; if (dd<=1.0e-07) it=1; break; c=0.0; if (it=0) goto l40; else it=1; while (it=1) t=t/1.67; it=0; x1=x-t*dx; y1=y-t*dy; if (k>=50) p=sqrt(x1*x1+y1*y1); q=exp(85.0/k); if (p>=q) it=1; if (t>=1.0e-03) goto l
9、40; if (g>1.0e-18) it=0; if (it=0) is=1; dd=sqrt(dx*dx+dy*dy); if (dd>1.0) dd=1.0; dc=6.28/(4.5*k); c=0.0; while(1=1) c=c+dc; dx=dd*cos(c); dy=dd*sin(c); x1=x+dx; y1=y+dy; if (c<=6.29) it=0; break; dd=dd/1.67; if (dd<=1.0e-07) it=1; break; c=0.0; if (it=0) goto l40; if (fabs(y)<=1.0e-
10、06) p=-x; y=0.0; q=0.0; else p=-2.0*x; q=x*x+y*y; xrk-1=x*w; xik-1=-y*w; k=k-1; for (i=1; i<=k; i+) ai=ai-ai-1*p; ai+1=ai+1-ai-1*q; xrk-1=x*w; xik-1=y*w; k=k-1; if (k=1) xr0=-a1*w/a0; xi0=0.0; else g=g1; x=x1; y=y1; is=0; if (g<=1.0e-22) if (fabs(y)<=1.0e-06) p=-x; y=0.0; q=0.0; else p=-2.0
11、*x; q=x*x+y*y; xrk-1=x*w; xik-1=-y*w; k=k-1; for (i=1; i<=k; i+) ai=ai-ai-1*p; ai+1=ai+1-ai-1*q; xrk-1=x*w; xik-1=y*w; k=k-1; if (k=1) xr0=-a1*w/a0; xi0=0.0; else u1=k*a0; v1=0.0; for (i=2; i<=k; i+) p=u1*x; q=v1*y; pq=(u1+v1)*(x+y); u1=p-q+(k-i+1)*ai-1; v1=pq-p-q; p=u1*u1+v1*v1; if (p<=1.0
12、e-20) it=0; if (it=0) is=1; dd=sqrt(dx*dx+dy*dy); if (dd>1.0) dd=1.0; dc=6.28/(4.5*k); c=0.0; while(1=1) c=c+dc; dx=dd*cos(c); dy=dd*sin(c); x1=x+dx; y1=y+dy; if (c<=6.29) it=0; break; dd=dd/1.67; if (dd<=1.0e-07) it=1; break; c=0.0; if (it=0) goto l40; if (fabs(y)<=1.0e-06) p=-x; y=0.0;
13、 q=0.0; else p=-2.0*x; q=x*x+y*y; xrk-1=x*w; xik-1=-y*w; k=k-1; for (i=1; i<=k; i+) ai=ai-ai-1*p; ai+1=ai+1-ai-1*q; xrk-1=x*w; xik-1=y*w; k=k-1; if (k=1) xr0=-a1*w/a0; xi0=0.0; else dx=(u*u1+v*v1)/p; dy=(u1*v-v1*u)/p; t=1.0+4.0/k; it=1; while (it=1) t=t/1.67; it=0; x1=x-t*dx; y1=y-t*dy; if (k>
14、=50) p=sqrt(x1*x1+y1*y1); q=exp(85.0/k); if (p>=q) it=1; if (t>=1.0e-03) goto l40; if (g>1.0e-18) it=0; if (it=0) is=1; dd=sqrt(dx*dx+dy*dy); if (dd>1.0) dd=1.0; dc=6.28/(4.5*k); c=0.0; while(1=1) c=c+dc; dx=dd*cos(c); dy=dd*sin(c); x1=x+dx; y1=y+dy; if (c<=6.29) it=0; break; dd=dd/1.
15、67; if (dd<=1.0e-07) it=1; break; c=0.0; if (it=0) goto l40; if (fabs(y)<=1.0e-06) p=-x; y=0.0; q=0.0; else p=-2.0*x; q=x*x+y*y; xrk-1=x*w; xik-1=-y*w; k=k-1; for (i=1; i<=k; i+) ai=ai-ai-1*p; ai+1=ai+1-ai-1*q; xrk-1=x*w; xik-1=y*w; k=k-1; if (k=1) xr0=-a1*w/a0; xi0=0.0; if (k=1) jt=0; else
16、 jt=1; void srrt:output () /輸出根到文件并顯示 int k; char str220; cout <<"n輸出文件名: " cin >>str2; ofstream fout (str2); if (!fout) cout <<"n不能打開這個文件 " <<str2 <<endl; exit(1); for (k=0; k<n; k+) fout <<xrk <<" " <<xik <<endl
17、; cout <<xrk <<" +j " <<xik <<endl; fout.close (); void main () /主函數(shù) srrt root(6); root.input (); /由文件讀入代數(shù)方程系數(shù) root.srrt_root (); /執(zhí)行牛頓下山法 root.output (); /輸出根到文件并顯示 6、輸入輸出輸出結(jié)果如下:7、分析體會牛頓下山法作為計算方法課程中重要的知識點,在看書學(xué)習(xí)時較易大致理解其思路,但上級編寫代碼時卻是有難度的。在學(xué)習(xí)借鑒后用如上代碼能夠?qū)崿F(xiàn)基本功能,在實驗過程中也加深
18、了我對牛頓下山法的理解。實驗二 高斯消去法1 實驗?zāi)康?1) 熟悉求解線性方程組的有關(guān)理論和方法;(2) 能編程實現(xiàn)雅可比及高斯-塞德爾迭代法、列主元高斯消去法、約當(dāng)消去,追趕法(3) 通過測試,進一步了解各種方法的優(yōu)缺點(4) 根據(jù)不同類型的方程組,選擇合適的數(shù)值方法2 實驗內(nèi)容(1)用Gauss - Seidel 迭代法求解方程組輸入:系數(shù)矩陣A,最大迭代次數(shù)N,初始向量,誤差限e輸出:解向量(2)一個城鎮(zhèn)有三個主要生產(chǎn)企業(yè):煤礦、電廠和地方鐵路作為它的經(jīng)濟系統(tǒng).煤礦:生產(chǎn)價值1元的煤,需消耗0.25元的電費和0.35元的運輸費;電廠:生產(chǎn)價值1元的電,需消耗0.40元的煤費、0.05元的
19、電費和0.10元的運輸費;鐵路:而提供價值1元的鐵路運輸服務(wù),則需消耗0.45元的煤、0.10元的電費和0.10元的運輸費.在某個星期內(nèi),除了這三個企業(yè)間的彼此需求,煤礦得到50000元的訂單,電廠得到25000元的電量供應(yīng)要求,而地方鐵路得到價值30000元的運輸需求.提問:這三個企業(yè)在這星期各應(yīng)生產(chǎn)多少產(chǎn)值才能滿足內(nèi)外需求?提示:“投入”和“產(chǎn)出”之間的平衡關(guān)系:物資消耗和新創(chuàng)造的價值等于它生產(chǎn)的總產(chǎn)值. 輸入:物資消耗和新創(chuàng)造的價值輸出:三個企業(yè)生產(chǎn)總值(3)一天文學(xué)家要確定一顆小行星繞太陽運行的軌道,他在軌道平面內(nèi)建立一個以太陽為原點的直角坐標(biāo)系,在兩坐標(biāo)軸上取天文測量單位(1天文單位
20、為地球到太陽的平均距離:9300萬里)。他五個不同時間對小行星作五次觀測,得到軌道上五個點的坐標(biāo)分別為(5.764,0.648)(6.286,1.202)(6.759,1.823)(7.168,2.562)與(7.408,3.360)。由開普勒第一定律知小行星軌道為一橢圓,試建立它的方程。(4)用選主元高斯消去求行列式值提示:A.B. 消元結(jié)果直接存儲在系數(shù)矩陣中C. 當(dāng)消元過程發(fā)生兩行對調(diào)的情況為偶數(shù)次時,行列式值為對角線乘積,否則為對角線乘積的相反數(shù)(5)用選主元約當(dāng)消去分別對矩陣求其逆矩陣,若不可逆輸出奇異標(biāo)志和提示:3 算法基本原理無論是三次樣條還是擬合問題最終都歸結(jié)為線性方程組,求解
21、線性方程組在數(shù)值分析中非常重要,在工程計算中也不容忽視。線性方程組大致分迭代法和直接法。只有收斂條件滿足時,才可以進行迭代。雅可比及高斯-塞德爾是最基本的兩類迭代方法,最大區(qū)別是迭代過程中是否引用新值進行剩下的計算。消元是最簡單的直接法,并且也十分有效的,列主元高斯消去法對求解一般的線性方程組都適用,同時可以用來求矩陣對應(yīng)的行列式。約當(dāng)消去實質(zhì)是經(jīng)過初等行變換將系數(shù)矩陣化為單位陣,主要用來求矩陣的逆。在使用直接法,要注意從空間、時間兩方面對算法進行優(yōu)化。高斯-塞德爾迭代: 列主元高斯消去法:列主元消元 回代圖4.2列主元的約當(dāng)消去圖4.1G-S迭代算法流程圖約當(dāng)消去 4 算法描述Gauss -
22、 Seidel算法見流程圖選列主元高斯消去法見流程圖選列主元約當(dāng)消去法見流程圖5計算用例的參考輸出實驗1輸出參考書本p146頁 表5-2實驗2參考輸出:三個企業(yè)產(chǎn)值X=114458, 65395, 85111實驗3參考輸出:橢圓曲線系數(shù)a=0.0508 -0.0702 0.0381 -0.4531 0.2643實驗4參考輸出:18實驗5參考輸出:圖4.3列主元的高斯消去流程圖不可逆6、代碼#include<iostream>#include<fstream>#define N 3using namespace std;int main()ifstream file(&q
23、uot;d:/a.txt");double xNN+1;double resultN;for(int i=0;i<N;i+)for(int j=0;j<N+1;j+)file>>xij;for(i=0;i<N;i+)for(int j=i+1;j<N+1;j+)xij=xij/xii;for(j=i+1;j<N;j+)for(int m=i+1;m<N+1;m+)xjm=xjm-xji*xim;for(i=N-1;i>=0;i-)resulti=xiN;for(int j=N-1;j>i;j-)resulti=resulti
24、-resultj*xij;for(i=0;i<N;i+)cout<<resulti<<' 'return 0;7、輸出實驗結(jié)果如下:8、分析體會消元過程中每次都選擇絕對值最大者作為主元,這是高斯消去法很重要的一點。用高斯消去法計算高次較為快捷方便,這種算法可以用來解決所有線性方程組。即使一個方程組不能被化為一個三角形的格式,高斯消元法仍可找出它的解。學(xué)好高斯消去法對于解線性方程組是十分重要的。實驗三 高斯-賽德爾迭代1 實驗?zāi)康?5) 熟悉求解線性方程組的有關(guān)理論和方法;(6) 能編程實現(xiàn)雅可比及高斯-塞德爾迭代法、列主元高斯消去法、約當(dāng)消去,追趕
25、法(7) 通過測試,進一步了解各種方法的優(yōu)缺點(8) 根據(jù)不同類型的方程組,選擇合適的數(shù)值方法2 實驗內(nèi)容(1)用Gauss - Seidel 迭代法求解方程組輸入:系數(shù)矩陣A,最大迭代次數(shù)N,初始向量,誤差限e輸出:解向量(2)一個城鎮(zhèn)有三個主要生產(chǎn)企業(yè):煤礦、電廠和地方鐵路作為它的經(jīng)濟系統(tǒng).煤礦:生產(chǎn)價值1元的煤,需消耗0.25元的電費和0.35元的運輸費;電廠:生產(chǎn)價值1元的電,需消耗0.40元的煤費、0.05元的電費和0.10元的運輸費;鐵路:而提供價值1元的鐵路運輸服務(wù),則需消耗0.45元的煤、0.10元的電費和0.10元的運輸費.在某個星期內(nèi),除了這三個企業(yè)間的彼此需求,煤礦得到5
26、0000元的訂單,電廠得到25000元的電量供應(yīng)要求,而地方鐵路得到價值30000元的運輸需求.提問:這三個企業(yè)在這星期各應(yīng)生產(chǎn)多少產(chǎn)值才能滿足內(nèi)外需求?提示:“投入”和“產(chǎn)出”之間的平衡關(guān)系:物資消耗和新創(chuàng)造的價值等于它生產(chǎn)的總產(chǎn)值. 輸入:物資消耗和新創(chuàng)造的價值輸出:三個企業(yè)生產(chǎn)總值(3)一天文學(xué)家要確定一顆小行星繞太陽運行的軌道,他在軌道平面內(nèi)建立一個以太陽為原點的直角坐標(biāo)系,在兩坐標(biāo)軸上取天文測量單位(1天文單位為地球到太陽的平均距離:9300萬里)。他五個不同時間對小行星作五次觀測,得到軌道上五個點的坐標(biāo)分別為(5.764,0.648)(6.286,1.202)(6.759,1.82
27、3)(7.168,2.562)與(7.408,3.360)。由開普勒第一定律知小行星軌道為一橢圓,試建立它的方程。(4)用選主元高斯消去求行列式值提示:D.E. 消元結(jié)果直接存儲在系數(shù)矩陣中F. 當(dāng)消元過程發(fā)生兩行對調(diào)的情況為偶數(shù)次時,行列式值為對角線乘積,否則為對角線乘積的相反數(shù)(5)用選主元約當(dāng)消去分別對矩陣求其逆矩陣,若不可逆輸出奇異標(biāo)志和提示:3 算法基本原理無論是三次樣條還是擬合問題最終都歸結(jié)為線性方程組,求解線性方程組在數(shù)值分析中非常重要,在工程計算中也不容忽視。線性方程組大致分迭代法和直接法。只有收斂條件滿足時,才可以進行迭代。雅可比及高斯-塞德爾是最基本的兩類迭代方法,最大區(qū)別
28、是迭代過程中是否引用新值進行剩下的計算。消元是最簡單的直接法,并且也十分有效的,列主元高斯消去法對求解一般的線性方程組都適用,同時可以用來求矩陣對應(yīng)的行列式。約當(dāng)消去實質(zhì)是經(jīng)過初等行變換將系數(shù)矩陣化為單位陣,主要用來求矩陣的逆。在使用直接法,要注意從空間、時間兩方面對算法進行優(yōu)化。高斯-塞德爾迭代: 列主元高斯消去法:列主元消元 回代圖4.2列主元的約當(dāng)消去圖4.1G-S迭代算法流程圖約當(dāng)消去 4 算法描述Gauss - Seidel算法見流程圖選列主元高斯消去法見流程圖選列主元約當(dāng)消去法見流程圖5計算用例的參考輸出實驗1輸出參考書本p146頁 表5-2實驗2參考輸出:三個企業(yè)產(chǎn)值X=1144
29、58, 65395, 85111實驗3參考輸出:橢圓曲線系數(shù)a=0.0508 -0.0702 0.0381 -0.4531 0.2643實驗4參考輸出:18實驗5參考輸出:圖4.3列主元的高斯消去流程圖不可逆6、代碼:#include<iostream>#include<fstream>using namespace std;int main()double xishu34;double x3=0;ifstream in("D:/1.txt");for(int i=0;i<3;i+)for(int j=0;j<4;j+)in>>
30、;xishuij;in.close();/ofstream out("d:/2.txt");int t=0;while(t+<7)for(int i=0;i<3;i+)xi=xishui3;for(int j=0;j<3;j+)if(!(j=i)xi-=xishuij*xj;xi/=xishuii;out<<xi<<' 'out<<endl;return 0;7、輸入與輸出8、分析體會本次試驗通過理論與實例對線性方程組的解法、收斂性及誤差分析進行了探討.在對線性方程組數(shù)值解法的討論下用到了高斯-賽德爾迭代
31、法,讓我進一步研究和總結(jié)了高斯-賽德爾迭代法的理論與應(yīng)用,使我在分析問題與編輯程序時能更好的把握對高斯-賽德爾迭代法的應(yīng)用。實驗四 最小二乘法和三次樣條插值1 實驗?zāi)康?1) 明確插值多項式和分段插值多項式各自的優(yōu)缺點;(2) 編程實現(xiàn)拉格朗日插值算法,分析實驗結(jié)果體會高次插值產(chǎn)生的龍格現(xiàn)象;(3) 理解最小二乘擬合,并編程實現(xiàn)線性擬合,掌握非線性擬合轉(zhuǎn)化為線性擬合的方法(4) 運用常用的插值和擬合方法解決實際問題。2 實驗內(nèi)容(1) 對于要求選取11個等距插值節(jié)點,分別采用拉格朗日插值和分段線性插值,計算x為0.5, 4.5處的函數(shù)值并將結(jié)果與精確值進行比較。輸入:區(qū)間長度,n(即n+1個節(jié)
32、點),預(yù)測點輸出:預(yù)測點的近似函數(shù)值,精確值,及誤差(2)對于給定的一元函數(shù) 的n+1個節(jié)點值 。數(shù)據(jù)如下:0.40.550.650.800.951.050.410750.578150.696750.901.001.25382求五次拉格朗日多項式和分段三次插值多項式,計算 的值。輸入:數(shù)據(jù)點集及個數(shù),預(yù)測點。輸出:預(yù)測點的近似函數(shù)值(3)在某冶煉過程中,根據(jù)統(tǒng)計數(shù)據(jù)的含碳量與時間關(guān)系,試求含碳量與時間的擬合曲線。分)0 5 10 15 20 25 30 35 40 45 50 550 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64輸
33、入: 數(shù)據(jù)點集及個數(shù)。輸出:擬合函數(shù),并打印出與的誤差提示:近似解析表達式為(4)用線性擬合編程實現(xiàn)給藥方案背景知識:一種新藥用于臨床之前,必須設(shè)計給藥方案.臨床上,每種藥物有一個最小有效濃度c1和一個最大有效濃度c2。設(shè)計給藥方案時,要使血藥濃度 保持在c1c2之間。 本題設(shè)c1=10,c2=25(ug/ml).在實驗方面,對某人用快速靜脈注射方式一次注入該藥物300mg后,在一定時刻t(小時)采集血藥,測得血藥濃度c(ug/ml)如下表:t (h) 0.25 0.5 1 1.5 2 3 4 6 8c (mg/ml) 19.21 18.15 15.36 14.10 12.89 9.32 7.
34、45 5.24 3.01問題:B. 在快速靜脈注射的給藥方式下,研究血藥濃度(單位體積血液中的藥物含量)的變化規(guī)律C. 設(shè)計給藥方案:每次注射劑量多大;間隔時間多長提示:A. 血藥濃度的變化規(guī)律符合指數(shù)關(guān)系B. 將指數(shù)關(guān)系轉(zhuǎn)化為線性關(guān)系3 算法基本原理當(dāng)精確函數(shù) y = f(x) 非常復(fù)雜或未知,在一系列節(jié)點 x0 xn 處測得函數(shù)值 y0 = f(x0), yn = f(xn), 希望由此構(gòu)造一個簡單易算的近似函數(shù) g(x) » f(x),滿足條件g(xi) = f(xi) (i = 0, n)。這里的 g(x) 稱為f(x) 的插值函數(shù),由插值函數(shù)可以去近似估計f(x)在一些未知
35、點處的函數(shù)值。最常用的插值函數(shù)是多項式插值。 所謂多項式插值即求 n 次多項式使得基于基函數(shù)的拉格朗日插值是構(gòu)造多項式插值最基本方法。也是推導(dǎo)數(shù)值微積分和微分方程數(shù)值解的公式的理論基礎(chǔ)。拉格朗日插值公式為: 其中當(dāng)結(jié)點比較多,次數(shù)較高的插值多項式往往發(fā)生Runge現(xiàn)象,分段低次插值是避免Runge現(xiàn)象的重要手段。分段一次插值將整個區(qū)間分段,在每個小區(qū)間上,用一次多項式逼近 f (x),直觀上即用折線代替曲線,只要區(qū)間足夠小就可以保證很好的逼近效果,但曲線缺乏光滑性。除了插值,逼近復(fù)雜函數(shù)f(x)的另一種方法是擬合。結(jié)點數(shù)據(jù)比較多,或者不夠精確,往往采用擬合的方法。用來擬合的簡單函數(shù)p(x),不
36、需嚴(yán)格通過給定結(jié)點,但在這些結(jié)點處總體誤差達到極小,即滿足最小二乘擬合的條件。線性擬合是最簡單的擬合方法,許多非線性問題都可以轉(zhuǎn)化為線性擬合。令線性函數(shù)為a0+a1x,要確定a0和a1,最終求解如下線性方程組:圖1.1拉格朗日插值算法4 算法描述 (2) 拉格朗日插值算法見流程圖(3) 分段線性插值算法要注意以下關(guān)鍵點:A. 定位:預(yù)測點x在第幾個區(qū)間?B. 假定x在第k個區(qū)間,即 一次插值公式為(3) 線性擬合算法在沒有討論線性方程組數(shù)值解法的前提下,用最原始的消元法求解線性方程組5 計算用例的參考輸出(1)實驗1參考輸出如下X y(精確) y(拉格朗日) y(分段線性) 誤差(拉) 誤差(
37、分)0.5000000.8000000.8434080.750000 -0.043408 0.0500004.5000000.0470591.578721 0.048643 -1.537662 -0.001584(2)實驗2參考輸出如下模型中參數(shù) k=0.2347 v=15.02故可制定給藥方案:首次注射 375 mg, 其余每次注射 225 mg, 注射的間隔時間為 4 小時6 代碼最小二乘法:#include <iostream>#include <fstream>using namespace std;void main()ifstream in("d:
38、/2.txt"); float *a,x,result; int n; float k,b; void smallest(float *a,int n,float*k,float *b);/ cout<<"輸入點數(shù):" in>>n; a=new float *n; for(int i=0;i<n;i+)ai=new float2;/ cout<<"輸入各個點:"<<endl; for(i=0;i<n;i+)for(int j=0;j<2;j+)in>>aij; sma
39、llest(a,n,&b,&k);/ cout<<"輸入自變量的值:" in>>x; result=b+k*x; out<<"擬合曲線方程:nY="<<b<<"+"<<k<<"X"<<endl; out<<"x="<<x<<"時運算結(jié)果是:"<<result<<endl;void smallest(floa
40、t *a,int n,float*k,float *b) float can23=n,0,0,0,0,0; for(int i=0;i<n;i+) can01+=ai0; can02+=ai1; can11+=ai0*ai0; can12+=ai0*ai1; can10=can01; for(i=2;i>=0;i-)can1i=can1i-can0i*can10/can00; *b=can12/can11; *k=(can02-can01*b)/can00;三次樣條插值:#include<iostream>#include<iomanip>#include<fstream>using namespace std;const int MAX = 50;float xMAX, yMAX, hMAX;float cMAX, aMAX, fxymMAX;float f(int x1, int x2, int x3) float a = (yx3 - yx2) / (xx3 - xx2); float b = (yx2 - yx1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代辦公環(huán)境下的家校協(xié)同教育模式探討
- 新課改下的小學(xué)數(shù)學(xué)教學(xué)策略變化與影響
- 算法優(yōu)化在嵌入式辦公系統(tǒng)中的實踐案例
- 針對學(xué)習(xí)障礙學(xué)生的專業(yè)輔導(dǎo)課程設(shè)置
- 個人倉儲租賃合同模板
- 上海市商品買賣合同范本
- 買賣合同爭議解決協(xié)議書模板
- 不動產(chǎn)附負擔(dān)租賃合同
- 個人培訓(xùn)機構(gòu)與教師簽訂勞動合同的法律效力解析
- 個人借車合同范本
- 2024美團簡化版商家合作合同標(biāo)準(zhǔn)文本一
- 2025年貴州黔源電力股份有限公司招聘筆試參考題庫含答案解析
- 《休閑食品加工技術(shù)》 課件 1 休閑食品生產(chǎn)與職業(yè)生活
- 春季開學(xué)安全第一課
- 2025年新生兒黃疸診斷與治療研究進展
- 廣東大灣區(qū)2024-2025學(xué)年度高一上學(xué)期期末統(tǒng)一測試英語試題(無答案)
- 課題申報書:數(shù)智賦能高職院校思想政治理論課“金課”實踐路徑研究
- 公司安全生產(chǎn)事故隱患內(nèi)部報告獎勵工作制度
- H3CNE認(rèn)證考試題庫官網(wǎng)2022版
- 感統(tǒng)訓(xùn)練培訓(xùn)手冊(適合3-13歲兒童)
- 公司章程范本(完整版)
評論
0/150
提交評論