最小二乘法的应用(2015A题A题太阳影子定位)
生活随笔
收集整理的這篇文章主要介紹了
最小二乘法的应用(2015A题A题太阳影子定位)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、題目回顧(第二問為例)
題:
根據某固定直桿在水平地面上的太陽影子頂點坐標數據,建立數學模型確定直桿所處的地點。將你們的模型應用于附件1的影子頂點坐標數據,給出若干個可能的地點。
二、題目數據:
| 14:42 | 1.0365 | 0.4973 |
| 14:45 | 1.0699 | 0.5029 |
| 14:48 | 1.1038 | 0.5085 |
| 14:51 | 1.1383 | 0.5142 |
| 14:54 | 1.1732 | 0.5198 |
| 14:57 | 1.2087 | 0.5255 |
| 15:00 | 1.2448 | 0.5311 |
| 15:03 | 1.2815 | 0.5368 |
| 15:06 | 1.3189 | 0.5426 |
| 15:09 | 1.3568 | 0.5483 |
| 15:12 | 1.3955 | 0.5541 |
| 15:15 | 1.4349 | 0.5598 |
| 15:18 | 1.4751 | 0.5657 |
| 15:21 | 1.516 | 0.5715 |
| 15:24 | 1.5577 | 0.5774 |
| 15:27 | 1.6003 | 0.5833 |
| 15:30 | 1.6438 | 0.5892 |
| 15:33 | 1.6882 | 0.5952 |
| 15:36 | 1.7337 | 0.6013 |
| 15:39 | 1.7801 | 0.6074 |
| 15:42 | 1.8277 | 0.6135 |
三、問題分析
由附件數據可知,真實的影長L′=x2+y2L' = \sqrt{x^2 + y^2}L′=x2+y2?
得到時間影長列表:
| 14:42 | 1.1496 |
| 14:45 | 1.1822 |
| 14:48 | 1.2153 |
| 14:51 | 1.2491 |
| 14:54 | 1.2832 |
| 14:57 | 1.3180 |
| 15:00 | 1.3534 |
| 15:03 | 1.3894 |
| 15:06 | 1.4262 |
| 15:09 | 1.4634 |
| 15:12 | 1.5015 |
| 15:15 | 1.5402 |
| 15:18 | 1.5799 |
| 15:21 | 1.6201 |
| 15:24 | 1.6613 |
| 15:27 | 1.7033 |
| 15:30 | 1.7462 |
| 15:33 | 1.7901 |
| 15:36 | 1.8350 |
| 15:39 | 1.8809 |
| 15:42 | 1.9279 |
由建模分析知道:
影長與五個變量有關,分別是太陽高度角、桿高、時間、當地經度和當地緯度。影長由太陽高度角決定,而太陽高度角由桿高、時間、當地經度和當地緯度決定,由此我們采用控制變量法,分別分析這三個參數與影長的關系。
代碼:
clc; clear;% Φ -> A 緯度 % δ -> F 太陽赤道緯度夾角 % ω -> C 太陽時角 % h -> Oh 太陽高度角 % λ -> D 經度dB = [0.4555 0.4409 0.4247 0.4136 0.3986 0.3919 0.3777 0.3656 0.3582 0.3481 0.3438 0.3305 0.3264 0.3169 0.3120 0.3069 0.2987 0.2928 0.2876 0.2853 ];dLs = [1.1496 1.1822 1.2153 1.2491 1.2832 1.3180 1.3534 1.3894 1.4262 1.4634 1.5015 1.5402 1.5799 1.6201 1.6613 1.7033 1.7462 1.7901 1.8350 1.8809 1.9279 ];% 4月18日是一年的第 108 天 n = 108;% 太陽赤緯夾角(度) C = 23.45*sin(2*pi*(284+n)/365);% 太陽時 B = 2*pi*(n -81)/364; E = 9.87*sin(2*B) - 7.53*cos(B) - 1.5*sin(B); Jm = 120;hour = [14 14 14 14 14 14 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15]; minutes = [42 45 48 51 54 57 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42];value1 = 0; value2 = 0;min = 100000000;j = 1;X = []; Y = [];MinArr = ones(12,5); dFsArr = [];LsArr = [];DD = ones(12, 20);LsArrr = ones(12, 21); % 桿長 for L = 0:0.1:3% 緯度for W = 15:0.1:25% 經度for J = 105:0.1:115% 時間for i = 1:1:21T0 = hour(i) + minutes(i)/60;Ts = T0 + E/60 + (J - Jm)/15;% 太陽時角(度)S = 15*(Ts - 12);% 太陽高度角Oh = asin(sin(W*pi/180)*sin(C.*pi/180) + cos(W*pi/180)*cos(C*pi/180)*cos(S*pi/180));% 太陽方位角if(S <0)Fs = acos( (sin(C*pi/180) - sin(Oh)*sin(W*pi/180)) / (cos(Oh)*cos(W*pi/180)));FsArr(i) = Fs;elseFs = 2*pi - acos( (sin(C*pi/180) - sin(Oh)*sin(W*pi/180)) / (cos(Oh)*cos(W*pi/180)));FsArr(i) = Fs;endif(i >= 2)value1 = value1 + ( FsArr(i-1) - FsArr(i) - dB(i - 1) )^2;dFsArr(i-1) = FsArr(i-1) - FsArr(i);end% 影長 LsLs = L / tan(Oh);LsArr(i) = Ls;value2 = value2 + (Ls - dLs(i))^2;i = i +1;endvalue = value1/20*value2/21;%if(value < min)%min = value;%MinArr = [L W J]%endif (value < 0.0000003)X(j) = j;jY(j) = value;LsArrr(j, :) = LsArr;DD(j, :) = dFsArr*180/pi;MinArr(j , 1:5) = [j L W J value];j = j+1;endvalue1 = 0;value2 = 0;value = 0;endend endplot(X, Y,'*');總結
以上是生活随笔為你收集整理的最小二乘法的应用(2015A题A题太阳影子定位)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java判断是否包含张三_c# 数组 字
- 下一篇: 《linux内核设计与实现》读书笔记第一