4.MATLAB 插值法+曲線擬合+逐步分析(習題)


1.插值法

 

 

 上代碼!!!(我抄百度文檔上的 https://wenku.baidu.com/view/52e6ad5602768e9950e73814.html

x=1200:400:4000;
y=1200:400:3600;
z=[1130  1250  1280  1230  1040   900   500   700;
   1320  1450  1420  1400  1300   700   900   850;
1390  1500  1500  1400   900  1100  1060   950;
1500    1200  1100  1350  1450  1200  1150  1010;
1500    1200  1100  1550  1600  1550  1380  1070;
1500    1550  1600  1550  1600  1600  1600  1550;
1480    1500  1550  1510  1430  1300  1200  980];

figure(1);
meshz(x,y,z)
xlabel('X'),ylabel('Y'),zlabel('Z')
title('網格面')
xi=1200:40:4000;
yi=1200:40:3600;

figure(2)
z1i=interp2(x,y,z,xi,yi','nearest');%最鄰近插值 
surfc(xi,yi,z1i)
xlabel('X'),ylabel('Y'),zlabel('Z')
title('最鄰近插值') 


figure(3)
z2i=interp2(x,y,z,xi,yi'); 
surfc(xi,yi,z2i)
xlabel('X'),ylabel('Y'),zlabel('Z')%分段線性插值
title('分段線性插值') 

figure(4)
z3i=interp2(x,y,z,xi,yi','cubic');
surfc(xi,yi,z3i)
xlabel('X'),ylabel('Y'),zlabel('Z')%立方插值
title('立方插值')

figure(5)
z4i=interp2(x,y,z,xi,yi','spline');
surfc(xi,yi,z4i)
xlabel('X'),ylabel('Y'),zlabel('Z')%三次樣條插值%
title('三次樣條插值')


figure(6)
z5i=interp2(x,y,z,xi,yi','linear');
surfc(xi,yi,z4i)
xlabel('X'),ylabel('Y'),zlabel('Z')%線性插值
title('線性插值')


figure(7)
subplot(3,2,1),contour(xi,yi,z1i,10,'r');
subplot(3,2,2),contour(xi,yi,z2i,10,'r');
subplot(3,2,3),contour(xi,yi,z3i,10,'r');
subplot(3,2,4),contour(xi,yi,z4i,10,'r');
subplot(3,2,5),contour(xi,yi,z5i,10,'r');%compare


figure(8)
contour(xi,yi,z1i,10,'r')
title('最鄰近插值')

figure(9)
contour(xi,yi,z2i,10,'r')
title('分段線性插值')         
  

figure(10)
contour(xi,yi,z3i,10,'r')
title('立方插值')

figure(11)
contour(xi,yi,z4i,10,'r')
title('三次樣條插值')

figure(12)
contour(xi,yi,z5i,10,'r')
title('線性插值')

 

 

 

 

 

 

 

 

 

 2.曲線擬合

假定某地某天的氣溫變化記錄數據見下表,誤差不超過0.5℃,試找出其這一天的氣溫變化規律。

 

時刻/h

0

1

2

3

4

5

6

7

8

9

10

11

12

13

溫度/℃

15

14

14

14

14

15

16

18

20

22

23

25

28

31

時刻/h

14

15

16

17

18

19

20

21

22

23

24

 

 

 

溫度/℃

32

31

29

27

25

24

22

20

18

07

16

 

 

 

 

對的溫度進行分析,采用多項式擬合的數學方法,建立溫度和時刻的模型

x=0:1:24;
y=[15    14    14    14    14    15    16    18    20    22    23    25    28    31  32 31    29    27    25    24    22    20    18    07    16];
plot(x,y,'r*')
hold on
a=polyfit(x,y,5);
z=a(1)*x.^5+a(2)*x.^4+a(3)*x.^3+a(4)*x.^2+a(5)*x+a(6);
plot(x,z)
grid;
hold off

 3.逐步回歸

        財政收入預測問題:財政收入與國民收入、工業總產值、農業總產值、總人口、就業人口、固定資產投資等因素有關。下表列出了1952-1981年的原始數據,試構造回歸預測模型,並利用1982-1990的數據驗證模型。

年份

國民收入(億元)

工業總產值(億元)

農業總產值(億元)

總人口(萬人)

就業人口(萬人)

固定資產投資(億元)

財政收入(億元)

1952

598

349

461

57482

20729

44

184

1953

586

455

475

58796

21364

89

216

1954

707

520

491

60266

21832

97

248

1955

737

558

529

61465

22328

98

254

1956

825

715

556

62828

23018

150

268

1957

837

798

575

64653

23711

139

286

1958

1028

1235

598

65994

26600

256

357

1959

1114

1681

509

67207

26173

338

444

1960

1079

1870

444

66207

25880

380

506

1961

757

1156

434

65859

25590

138

271

1962

677

964

461

67295

25110

66

230

1963

779

1046

514

69172

26640

85

266

1964

943

1250

584

70499

27736

129

323

1965

1152

1581

632

72538

28670

175

393

1966

1322

1911

687

74542

29805

212

466

1967

1249

1647

697

76368

30814

156

352

1968

1187

1565

680

78534

31915

127

303

1969

1372

2101

688

80671

33225

207

447

1970

1638

2747

767

82992

34432

312

564

1971

1780

3156

790

85229

35620

355

638

1972

1833

3365

789

87177

35854

354

658

1973

1978

3684

855

89211

36652

374

691

1974

1993

3696

891

90859

37369

393

655

1975

2121

4254

932

92421

38168

462

692

1976

2052

4309

955

93717

38834

443

657

1977

2189

4925

971

94974

39377

454

723

1978

2475

5590

1058

96259

39856

550

922

1979

2702

6065

1150

97542

40581

564

890

1980

2791

6592

1194

98705

41896

568

826

1981

2927

6862

1273

100072

73280

496

810


    首先,以國民收入 、工業總產值 、農業總產值 、總人口 、就業人口 、固定資產投資 的數據為全部自變量,采用最小二乘法擬合一個多元回歸模型,有

 

由上述結果得到: 檢驗通過,復判定系數與調整復判定系數的差距不大;但在t 檢驗中有若干自變量對y 的解釋作用不明顯,在此采用逐步回歸的方法對自變量集合進行調整。

利用Matlab統計工具箱中用作逐步回歸的命令stepwise(一直點Next Step),進行統計分析,得到如圖所示的結果:

 

由上圖可以看出:紅色表明從模型中移去的變量為x2,4,8,移除這三個變量后,再利用最小二乘法擬合一個多元回歸模型,有

  

兩個回歸模型相比較,得到:后者的復判定系數與調整復判定系數的差距更小,與實際更加符合,因此所做的調整是有意義的,對於預測更加有利。

 代碼

多元回歸模型建立的程序(沒看懂這個是干嘛的,而且運行報錯警告: 矩陣接近奇異值,或者縮放錯誤。結果可能不准確。RCOND =  5.420589e-17。 ):

clc,clear 
load data.txt   %表中的數據按照原來的排列存放在純文本文件data.txt中 
[n,m]=size(data);m=m-1; 
x=[ones(30,1),data(:,1:6)]; y=data(:,7); 
[b,bint,r,rint,stats]=regress(y,x)  %stats(4)返回的是殘差的樣本方差 
r2=stats(1)                  %提出復判定系數 
ad_r2=1-(1-r2)*(n- 1)/(n-m-1)   %計算調整復判斷系數 
f=stats(2)                    %提出F統計量 
tm=inv(x'*x);                 %計算X'*X的逆矩陣 
tm=diag(tm);                  %提出逆矩陣的對角線元素 
rmse=sqrt(stats(4))              %計算剩余標准差(殘差的樣本標准差) 
t=b./sqrt(tm)/ rmse              %求t統計量的值

逐步回歸代碼 

clc,clear 
x0=[1952    598    349    461    57482    20729    44    184
1953    586    455    475    58796    21364    89    216
1954    707    520    491    60266    21832    97    248
1955    737    558    529    61465    22328    98    254
1956    825    715    556    62828    23018    150    268
1957    837    798    575    64653    23711    139    286
1958    1028    1235    598    65994    26600    256    357
1959    1114    1681    509    67207    26173    338    444
1960    1079    1870    444    66207    25880    380    506
1961    757    1156    434    65859    25590    138    271
1962    677    964    461    67295    25110    66    230
1963    779    1046    514    69172    26640    85    266
1964    943    1250    584    70499    27736    129    323
1965    1152    1581    632    72538    28670    175    393
1966    1322    1911    687    74542    29805    212    466
1967    1249    1647    697    76368    30814    156    352
1968    1187    1565    680    78534    31915    127    303
1969    1372    2101    688    80671    33225    207    447
1970    1638    2747    767    82992    34432    312    564
1971    1780    3156    790    85229    35620    355    638
1972    1833    3365    789    87177    35854    354    658
1973    1978    3684    855    89211    36652    374    691
1974    1993    3696    891    90859    37369    393    655
1975    2121    4254    932    92421    38168    462    692
1976    2052    4309    955    93717    38834    443    657
1977    2189    4925    971    94974    39377    454    723
1978    2475    5590    1058    96259    39856    550    922
1979    2702    6065    1150    97542    40581    564    890
1980    2791    6592    1194    98705    41896    568    826
1981    2927    6862    1273    100072    73280    496    810]; 
x=x0(:,2:7); 
y=x0(:,8); 
stepwise(x,y,[1:6])

 4.


免責聲明!

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



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