Stepan Salov edited untitled.tex  almost 8 years ago

Commit id: 7b37392f407b53d7d50a83650ed58820f7018549

deletions | additions      

       

$$  Выразим координату бронепоезда через ускорение и предыдущую позицию бронепоезда:  $$  x(t+1)=5+2*(t+1)+0.1(t+1)^{2}=5+2*t+0.1*t^{2}+2+0.2*t+0.1=x(t)+0.2*t+2.1 x(t+1)=5+2\cdot (t+1)+0.1\cdot (t+1)^{2}=5+2\cdot t+0.1\cdot t^{2}+2+0.2\cdot t+0.1=x(t)+0.2\cdot t+2.1  $$  т.к. взяв два раза производную от $x(t)$ получим, что ускорение равно 0.2, то координата бронепоезда будет изменяться по закону:  $$  x(t+1)=x(t)+a*t+2.1 x(t+1)=x(t)+a\cdot t+2.1  $$  где $a$=0.2  Но в реальной жизни мы не можем учесть в наших расчетах маленькие возмущения, действующие на бронепоезд, такие как: ветер, качество рельс и т.п., поэтому настоящая координата бронепоезда будет отличаться от расчетной. К правой части написанного уравнения добавится случайная величина $E_{t}$  $$  x(t+1)=x(t)+a*t+2.1+E_{t} x(t+1)=x(t)+a\cdot t+2.1+E_{t}  $$  Мы установили на бронепоезд GPS сенсор, который мерит координату $x(t)$,но, к сожалению, не может точно измерить ее и мерит с ошибкой $N_{t}$,которая тоже является случайной величиной:  $$ 

Таким образом, уравнение для координаты и показания сенсора будут выглядеть следующим образом:  \begin{equation}  \begin{cases}  x(t+1)=x(t)+a*t+2.1+E_{t}\\ x(t+1)=x(t)+a\cdot t+2.1+E_{t}\\  z(t)=x(t)+N_{t}  \end{cases}   \end{equation}  \section*{Алгоритм Калмана}  \addcontentsline{toc}{section}{Алгоритм Калмана}  Идея Калмана состоит в том, чтобы получить наилучшее приближение к истинной координате $x(t+1)$,мы должны выбрать золотую середину между показанием $z(t+1)$ неточного сенсора и $xOpt(t)+a*t+2.1$ $xOpt(t)+a\cdot t+2.1$  — нашим предсказанием того, что мы ожидали от него увидеть. Показанию сенсора мы дадим вес $K$, а на предсказанное значение останется вес $(1-K)$: $$  xOpt(t+1)=K_{t+1}*z(t+1)+(1-K_{t+1})*(xOpt(t)+a*t+2.1) xOpt(t+1)=K_{t+1}\cdot z(t+1)+(1-K_{t+1})\cdot (xOpt(t)+a\cdot t+2.1)  $$  где $K_{t+1}$ - коэффициент Калмана, зависящий от шага итерации. \\  Мы должны выбрать $K_{t+1}$ таким, чтобы получившееся оптимальное значение координаты $xOpt(t+1)$ было бы наиболее близкое к истиной координате $x(t+1)$. 

$$  Подставляем в выражения уравнения и упрощаем:  $$  e(t+1)=x(t+1)–K_{t+1}*z(t+1)-(1-K_{t+1})*(xOpt(t)+a*t+2.1)=\\=x(t+1)-K_{t+1}*(x(t+1)+N_{t+1})-(1-K_{t+1})*(xOpt(t)+a*t+2.1)=\\=x(t+1)*(1-K_{t+1})-K_{t+1}*(x(t+1)+N_{t+1})-(1-K_{t+1})*(xOpt(t)+a*t+2.1)=\\=(1-K_{t+1})*(x(t+1)–xOpt(t)–a*t–2.1)–K_{t+1}*N_{t+1}=\\=(1-K_{t+1})*(x(t)+a*t+2.1+E_{t}–xOpt(t)–a*t–2.1)–K_{t+1}*N_{t+1}=\\=(1-K_{t+1})*(x(t)–xOpt(t)+E_{t})–K_{t+1}*N_{t+1}=\\=(1-K_{t+1})*(e(t)+E_{t})–K_{t+1}*N_{t+1}$$ e(t+1)=x(t+1)–K_{t+1}\cdot z(t+1)-(1-K_{t+1})\cdot (xOpt(t)+a\cdot t+2.1)=\\=x(t+1)-K_{t+1}\cdot (x(t+1)+N_{t+1})-(1-K_{t+1})\cdot (xOpt(t)+a\cdot t+2.1)=\\=x(t+1)\cdot (1-K_{t+1})-K_{t+1}\cdot (x(t+1)+N_{t+1})-(1-K_{t+1})\cdot (xOpt(t)+a\cdot t+2.1)=\\=(1-K_{t+1})\cdot (x(t+1)–xOpt(t)–a\cdot t–2.1)–K_{t+1}\cdot N_{t+1}=\\=(1-K_{t+1})\cdot (x(t)+a\cdot t+2.1+E_{t}–xOpt(t)–a\cdot t–2.1)–K_{t+1}\cdot N_{t+1}=\\=(1-K_{t+1})\cdot (x(t)–xOpt(t)+E_{t})–K_{t+1}\cdot N_{t+1}=\\=(1-K_{t+1})\cdot (e(t)+E_{t})–K_{t+1}\cdot N_{t+1}$$  Таким образом, получаем:  $$  e(t+1)=(1-K_{t+1})*(e(t)+E_{t})–K_{t+1}*N_{t+1} e(t+1)=(1-K_{t+1})\cdot (e(t)+E_{t})–K_{t+1}\cdot N_{t+1}  $$  Мы будем минимизировать среднее значение от квадрата ошибки:  $E(e^{2}(t+1))\longrightarrow\min$  Т.к. все входящие в $e(t+1)$) случайные величины независимые и средние значения ошибок сенсора и модели равны нулю: $E[E_{t}]=E[N_{t+1}]=0$, и все перекрестные значения равны нулю:$E[E_{t}*N_{t+1}]=E[e(t)*E_{t}]=E[e(t)*N_{t+1}]=0$,то нулю:$E[E_{t}\cdot N_{t+1}]=E[e(t)\cdot E_{t}]=E[e(t)\cdot N_{t+1}]=0$,то  получаем: $$  E(e^{2}(t+1))=(1-K_{t+1})^{2}*(E(e^{2}(t))+D(E_{t}))+K^{2}_{t+1}*D(N_{t}) E(e^{2}(t+1))=(1-K_{t+1})^{2}\cdot (E(e^{2}(t))+D(E_{t}))+K^{2}_{t+1}\cdot D(N_{t})  $$  Где $D(E_{t})$ и $D(N_{t+1})$-дисперсии случайных величин $E_{t}$ и $N_{t+1}$.  Найдем минимальное значение для этого выражения (т.е. найдем производную):  $$  -2*(1-K_{t+1})*(E(e^{2}(t))+D(E_{t}))+2*K_{t+1}*D(N_{t})=0\\  -E(e^{2}(t))–D(E_{t})+K_{t+1}*E(e^{2}(t))+K_{t+1}*D(E_{t})+K_{t+1}*D(N_{t})=0\\ -2\cdot (1-K_{t+1})\cdot (E(e^{2}(t))+D(E_{t}))+2\cdot K_{t+1}\cdot D(N_{t})=0\\  -E(e^{2}(t))–D(E_{t})+K_{t+1}\cdot E(e^{2}(t))+K_{t+1}\cdot D(E_{t})+K_{t+1}\cdot D(N_{t})=0\\  K_{t+1}=\frac{E(e^{2}(t))+D(E_{t})}{E(e^{2}(t))+D(E_{t})+D(N_{t})}  $$  Таким образом, получаем такое $K_{t+1}$, что выражение $E(e^{2}(t+1))$ будет минимальным:  

Заметим, что мы не знаем закон распределения случайных величин, но нам известны их дисперсии:$\delta^{2}_{E}$ и $\delta^{2}_{N}$. Заметим, что дисперсии не зависят от t, потому что законы распределения не зависят от него.  Подставляем в выражение для среднеквадратичной ошибки $E(e^{2}(t+1))$минимизирующее ее значение коэффициента Калмана $K_{t+1}$ и получаем:  $$  E(e^{2}(t+1))=(1-\frac{E(e^{2}(t))+\delta^{2}_{E}}{E(e^{2}(t))+\delta^{2}_{E}+\delta^{2}_{N}})^{2}*(E(e^{2}(t))+\delta^{2}_{E})+(\frac{E(e^{2}(t))+\delta^{2}_{E}}{E(e^{2}(t))+\delta^{2}_{E}+\delta^{2}_{N}})^{2}*\delta^{2}_{N} E(e^{2}(t+1))=(1-\frac{E(e^{2}(t))+\delta^{2}_{E}}{E(e^{2}(t))+\delta^{2}_{E}+\delta^{2}_{N}})^{2}\cdot (E(e^{2}(t))+\delta^{2}_{E})+(\frac{E(e^{2}(t))+\delta^{2}_{E}}{E(e^{2}(t))+\delta^{2}_{E}+\delta^{2}_{N}})^{2}\cdot \delta^{2}_{N}  $$  Пусть: $E(e^{2}(t))=a; \delta^{2}_{E}=b; \delta^{2}_{N}=c;$  Тогда:  $$  E(e^{2}(t+1))=(1-\frac{a+b}{a+b+c})^{2}*(a+b)+(\frac{a+b}{a+b+c})^{2}*c=\frac{c^{2}*(a+b)}{(a+b+c)^{2}}+\frac{c*(a+b)^{2}}{(a+b+c)^{2}}=\\=\frac{c*(a+b)*(c+a+b)}{(a+b+c)^{2}}=\frac{c*(a+b)}{a+b+c}=\frac{\delta^{2}_{N}*(E(e^{2}(t))+\delta^{2}_{E})}{E(e^{2}(t))+\delta^{2}_{E}+\delta^{2}_{N}} E(e^{2}(t+1))=(1-\frac{a+b}{a+b+c})^{2}\cdot (a+b)+(\frac{a+b}{a+b+c})^{2}\cdot c=\frac{c^{2}*(a+b)}{(a+b+c)^{2}}+\frac{c\cdot (a+b)^{2}}{(a+b+c)^{2}}=\\=\frac{c\cdot (a+b)\cdot (c+a+b)}{(a+b+c)^{2}}=\frac{c\cdot (a+b)}{a+b+c}=\frac{\delta^{2}_{N}\cdot (E(e^{2}(t))+\delta^{2}_{E})}{E(e^{2}(t))+\delta^{2}_{E}+\delta^{2}_{N}}  $$  Таким образом получаем:  $$  E(e^{2}(t+1))=\frac{\delta^{2}_{N}*(E(e^{2}(t))+\delta^{2}_{E})}{E(e^{2}(t))+\delta^{2}_{E}+\delta^{2}_{N}} E(e^{2}(t+1))=\frac{\delta^{2}_{N}\cdot (E(e^{2}(t))+\delta^{2}_{E})}{E(e^{2}(t))+\delta^{2}_{E}+\delta^{2}_{N}}  - среднее\ значение\ квадрата\ ошибки $$  Таким образом, мы получили формулу для вычисления коэффициента Калмана.  \section*{MatLab}