實驗目的
(1)掌握曲線擬合的相應算法;
(2)將擬合與插值法進行比較。
實驗要求
實驗步驟要有模型建立,模型求解、結果分析。
實驗內容
(1)用給定的多項式,如y=x3-6x2+5x-3,產生一組數據(xi,yi,i=1,2,…,n),再在yi上添加隨機干擾(可用rand產生(0,1)均勻分布隨機數,或用rands產生N(0,1)分布隨機數),然后用xi和添加了隨機干擾的yi作的3次多項式擬合,與原系數比較。如果作2或4次多項式擬合,結果如何?
(2)用電壓V=10伏的電池給電容器充電,電容器上t時刻的電壓為 ,其中V0是電容器的初始電壓, 是充電常數。試由下面一組t,V數據確定V0,τ。
t(秒) |
0.5 |
1 |
2 |
3 |
4 |
5 |
7 |
9 |
V(伏) |
6.36 |
6.48 |
7.26 |
8.22 |
8.66 |
8.99 |
9.43 |
9.63 |
實驗步驟
(1)解:編程解題,取[1,23]為例展示,代碼

1 %% 給定x,得到y 2 x=1:0.1:23; 3 y=x.^3-6*x.^2+5*x-3; 4 y0=y+rand;%隨機干擾 5 %% 輸出多項式系數 6 f1=[1 -6 5 -3];%原系數 7 f2=polyfit(x,y0,2);%2次多項式 8 f3=polyfit(x,y0,3);%3次多項式 9 f4=polyfit(x,y0,4);%4次多項式 10 %% 輸出圖像 11 % 計算各x點擬合值 12 y2=polyval(f2,x); 13 y3=polyval(f3,x); 14 y4=polyval(f4,x); 15 % 畫圖 16 figure,subplot(2,2,1) 17 plot(x,y,'r','LineWidth',3);%原圖像 18 legend('原函數','Location','northwest'); 19 title('[1,23]原函數圖像'); 20 xlabel('x軸'); 21 ylabel('y軸'); 22 23 subplot(2,2,2) 24 plot(x,y,'r',x,y2,'b','LineWidth',1,'LineWidth',2)%2次多項式擬合 25 legend('原函數','2次多項式擬合','Location','northwest'); 26 title('[1,23]的2次擬合函數及原函數圖像'); 27 xlabel('x軸'); 28 ylabel('y軸'); 29 30 subplot(2,2,3) 31 plot(x,y,'rs',x,y3,'y','LineWidth',1,'LineWidth',2)%3次多項式擬合 32 legend('原函數','3次多項式擬合','Location','northwest'); 33 title('[1,23]的3次擬合函數及原函數圖像'); 34 xlabel('x軸'); 35 ylabel('y軸'); 36 37 subplot(2,2,4) 38 plot(x,y,'rs',x,y4,'g','LineWidth',1,'LineWidth',2);%4次多項式擬合 39 legend('原函數','4次多項式擬合','Location','northwest'); 40 title('[1,23]的4次擬合函數及原函數圖像'); 41 xlabel('x軸'); 42 ylabel('y軸'); 43 44 45
程序運行
原系數:1,-6,5,-3;
二次擬合系數:30,-353.7420,846.8601;
三次擬合系數:1,-6,5,-2.0439;
四次擬合系數:-4.6603e-17,1,-6,5,-2.0439。
右上述運行的結論,得出三次擬合系數與原系數相差不大,只有常數項不一樣;四次系數的四次項的系數幾乎為0,而接下來的系數與原系數相差就在常數項中;只有二次擬合的系數相差巨大。
由圖可見,三次多項式和四次多項式的擬合效果較好。二次多項式擬合效果較差。
(2)解:根據題意得,v(t)與T呈指數變化關系,本報告使用指數曲線擬合(非線性擬合),對題干中的變量做新的闡述,v1代替v(t),t0代替τ,v2是擬合后的曲線方程,對v(t)=v-(v-v0)e(-t/τ)取對數,有
令
,
,則
,
。編程解題,代碼

1 %題2 2 t=[0.5 1 2 3 4 5 7 9]; 3 v1=[6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63]; 4 y=log(10-v1); 5 f=polyfit(t,y,1); 6 t0=-1/f(1); 7 v0=10-exp(f(2)); 8 v2=10-(10-v0)*exp(-t/t0); 9 plot(t,v1,'rx',t,v2,'k:','LineWidth',2,... 10 'LineWidth',2); 11 grid on 12 legend('原始數據','曲線擬合','Location','northwest'); 13 xlabel('時間t(s)'),ylabel('充電電壓(V)'); 14 title('電容器充電電壓與時間t的曲線'); 15
運行示例,
由圖示,擬合效果良好,解得t0=3.5269,v0=5.6221。也就是τ=3.5269。
小結
使用曲線擬合之前最好對該曲線的的可能擬合的方程做大致的估計,並且在擬合完成之后,應當使用其他數據進行檢驗。