Matlab擬合


實驗目的

  (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_MATLAB

  程序運行

  原系數: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  
題2_MATLAB

  運行示例,

   由圖示,擬合效果良好,解得t0=3.5269,v0=5.6221。也就是τ=3.5269。

小結

   使用曲線擬合之前最好對該曲線的的可能擬合的方程做大致的估計,並且在擬合完成之后,應當使用其他數據進行檢驗。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM