实验Matlab数值运算,MATLAB数值实验一(数据的插值运算及其应用完整版
《MATLAB數值實驗一(數據的插值運算及其應用完整版》由會員分享,可在線閱讀,更多相關《MATLAB數值實驗一(數據的插值運算及其應用完整版(6頁珍藏版)》請在人人文庫網上搜索。
1、佛山科學技術學院實 驗 報 告課程名稱 數值分析 實驗項目 插值法與數據擬合 專業班級 機械工程 姓 名 余紅杰 學 號 指導教師 陳劍 成 績 日 期 月 日 一、實驗目的1、學會Lagrange 插值、牛頓插值和三次樣條插值等基本插值方法;2、討論插值的Runge現象3、學會Matlab提供的插值函數的使用方法,會用這些函數解決實際問題。二、實驗原理1、拉格朗日插值多項式2、牛頓插值多項式3、三次樣條插值三、實驗步驟1、用MATLAB編寫獨立的拉格朗日插值多項式函數2、用MATLAB編寫獨立的牛頓插值多項式函數3、用MATLAB編寫獨立的三次樣條函數(邊界條件為第一、二種情形)4、已知函數。
2、在下列各點的值為:0.20.40.60.81.00.980.920.810.640.38根據步驟1,2,3編好的程序,試分別用4次拉格朗日多項式、牛頓插值多項式以及三次樣條函數(自然邊界條件)對數據進行插值,并用圖給出,、和。5、在區間-1,1上分別取用兩組等距節點對龍格函數作多項式插值,對不同值,分別畫出插值函數及的圖形。6、下列數據點的插值01491625364964012345678可以得到平方根函數的近似,在區間0,64上作圖。(1) 用這9個點作8次多項式插值。(2) 用三次樣條(第一邊界條件)程序求。7、對于給函數在區間-1,1上取,試求3次曲線擬合,試畫出擬合曲線并打印出方程,與。
3、第5題的結果比較。四、實驗過程與結果:1、Lagrange 插值多項式源代碼:function ya=lag(x,y,xa)%x 所有已知插值點%y 插值點對應函數值%xa 所求點,自變量%ya 所求點插值估計量ya=0;mu=1;%初始化%循環方式求L系數,并求和:for i = 1:length(y)for j = 1:length(x)if i = jmu = mu * (xa - x(j) ) / ( x(i) - x(j) );elsecontinueendendya = ya + y(i) * mu ; mu = 1;end2、 Newton源代碼:function ya = ne。
4、wton(x,y,xa)%x 所有已知插值點%y 插值點對應函數值%xa 所求點,自變量%ya 所求點插值估計量%建立系數零矩陣D及初始化:D = zeros(length(x)-1);ya = y(1);xi = 1;%求出矩陣D,該矩陣第一行為牛頓插值多項式系數:for i=1:(length(x)-1)D(i,1) = (y(i+1) -y(i)/(x(i+1) -x(i);endfor j=2:(length(x)-1)for i=1:(length(x)-j)D(i,j) = (D(i+1,j-1) - D(i,j-1) / (x(i+j) - x(i);endend%xi為單個多項。
5、式(x-x(1)(x-x(2).的值for i=1:(length(x)-1)for j=1:ixi = xi*(xa - x(j);endya = ya + D(1,i)*xi;xi = 1;end3、 三次樣條插值多項式(1)(第一邊界條件)源代碼:function y=yt1(x0,y0,f_0,f_n,x) _____________(1)%第一類邊界條件下三次樣條插值;%xi 所求點;%yi 所求點函數值;%x 已知插值點;%y 已知插值點函數值;%f_0左端點一次導數值;%f_n右端點一次導數值;n = length(x0);z = length(y0);h = zeros(n-1。
6、,1);k=zeros(n-2,1);l=zeros(n-2,1);S=2*eye(n);for i=1:n-1h(i)= x0(i+1)-x0(i);endfor i=1:n-2k(i)= h(i+1)/(h(i+1)+h(i);l(i)= 1-k(i);end%對于第一種邊界條件: k = 1;k; _______________________(2)l = l;1; _______________________(3)%構建系數矩陣S:for i = 1:n-1S(i,i+1) = k(i);S(i+1,i) = l(i);end%建立均差表:F=zeros(n-1,2);for i =。
7、 1:n-1F(i,1) = (y0(i+1)-y0(i)/(x0(i+1)-x0(i);endD = zeros(n-2,1);for i = 1:n-2F(i,2) = (F(i+1,1)-F(i,1)/(x0(i+2)-x0(i);D(i,1) = 6 * F(i,2);end%構建函數D:d0 = 6*(F(1,2)-f_0)/h(1); ___________(4)dn = 6*(f_n-F(n-1,2)/h(n-1); ___________(5)D = d0;D;dn; ______________(6)m= SD;%尋找x所在位置,并求出對應插值:for i = 1:lengt。
8、h(x)for j = 1:n-1if (x(i)=x0(j)y(i) =( m(j)*(x0(j+1)-x(i)3)/(6*h(j)+.(m(j+1)*(x(i)-x0(j)3)/(6*h(j)+.(y0(j)-(m(j)*h(j)2)/6)*(x0(j+1)-x(i)/h(j)+.(y0(j+1)-(m(j+1)*h(j)2)/6)*(x(i)-x0(j)/h(j) ;break;else continue;endendend (2)(自然邊界條件)源代碼:僅僅需要對上面部分標注的位置做如下修改:__(1):function y=yt2(x0,y0,x)__(2):k=0;k__(3):l。
9、=l;0__(4)+(5):刪除(6):D=0:D:04、PS:另建了一個f方程文件,后面有一題也有用到。function y=f(x0)y = 1./(1+25.*x0.2);___________________________clc;clear;x1=0.2,0.4,0.6,0.8,1.0;y1=0.98,0.92,0.81,0.64,0.38;plot(x1,y1,.);hold onxo=0.2:0.08:1;y=lag(x1,y1,xo);plot(xo,y,o)hold on;y=newton(x1,y1,xo);plot(xo,y,r);hold on;y=yt2(x1,y1,。
10、xo);plot(xo,y,*)h = legend(原始,拉格,牛頓,自樣,4);5、clc,clear;x1=linspace(-1,1,10);x2=linspace(-1,1,20);xo=-1:0.02:1;yo=f(xo);plot(xo,yo);hold on;y=f(x1);y=newton(x1,y,xo);plot(xo,y,k);hold on;y=f(x2);y=newton(x2,y,xo);plot(xo,y,r)h = legend(原始,10插,20插,3); 6、clc,clear;x1=0 1 4 9 16 25 36 49 64;y1=0 1 2 3 4 。
11、5 6 7 8 ;xo=0:1:64;y=lag(x1,y1,xo)plot(xo,y,k);hold ony=yt2(x1,y1,xo)plot(xo,y,r)h = legend(拉格,自然樣條,2);7、clc,clear; x1=linspace(-1,1,11);xo=-1:0.02:1;y=f(x1);yo=f(xo);plot(xo,yo,r);hold onp=polyfit(x1,y,3);y1=polyval(p,xo);plot(xo,y1)h = legend(原圖,三次曲線擬合,2);p%該曲線的三次多項式系數依次顯示5、 討論分析及感想個人感覺就是在數據點比較少,要。
12、求比較低的情況下,使用拉格朗日或是牛頓插值就足夠了。但是當數據點比較多的時候,使用樣條曲線就更好。當數據更多時,就可以使用曲線擬合方法來求近似值。工程數學的基礎知識并不是很苦難,但是很實用,是有必要好好學下的。Matlab也是比較強大的工具,比較符合人的思維邏輯,上手很快。看書上的程序例子和實際編寫還是有區別的,看得懂不一定編寫的好,主要還是思維方式的鍛煉吧格式方法之類,只要了解了其基本功能,然后就是一系列的組合,多訓練就熟悉了,比較有趣的課程吧,關鍵是有數據,有輸出圖像,看的清晰明白。而且出現的錯誤,都有清晰的指導,修改起來也很快捷。至于具體的分析,在編寫三次樣條的時候發現,使用矩陣的思想分析世界是有很大優勢的,以后自己會多加訓練。
總結
以上是生活随笔為你收集整理的实验Matlab数值运算,MATLAB数值实验一(数据的插值运算及其应用完整版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql派生数据,在数据库中,应该何时
- 下一篇: 正则表达式笔试题php,2017年初级P