日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

对序列连续计算平均数和方差

發(fā)布時間:2025/4/16 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对序列连续计算平均数和方差 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

連續(xù)計算平均數(shù)和方差

問題:對數(shù)列x[n]x[n]x[n],計算其平均數(shù)m[n]m[n]m[n],方差v[n]v[n]v[n],平均數(shù)m[n]為x[1]到x[n]之間數(shù)的平均值v[n]為x[1]到x[n]之間的方差
m[n]=∑1n(x[i]n)v[n]=∑in((x[i]?m[n])2n)m[n]=\sum_1^n(\frac{x[i]}{n})\\ v[n]=\sum_i^n(\frac{(x[i]-m[n])^2}{n}) m[n]=1n?(nx[i]?)v[n]=in?(n(x[i]?m[n])2?)

這個問題用通用的方法計算沒有問題,但是效率會比較低。因為計算后面的平均數(shù)和方差時,前面的數(shù)重復累加計算了多次。對于平均數(shù)m[n],一個簡單的優(yōu)化方法就是設置一個累加序列s[n],s[i]為x[0]到x[i]之間數(shù)的和。這樣計算平均數(shù)m[n],很容易從s[n]得到,計算方差呢?也可以設置另一個累加序列s2[n],s2[i]為x[0]到x[i]之間數(shù)的平方和。
s[n]=∑1n(x[i])m[n]=s[n]ns2[n]=∑1nx[i]2v[n]=∑1nx[i]2+n?m[n]2?2?m[n]?∑1nx[i]n=s2[n]+n?m[n]2?2?m[n]?s[n]ns[n]=\sum_1^n(x[i])\\ m[n]=\frac{s[n]}{n}\\ s2[n]=\sum_1^n{x[i]^2}\\ v[n]=\frac{\sum_1^n{x[i]^2}+n*m[n]^2-2*m[n]*\sum_1^n{x[i]}}{n}\\ =\frac{s2[n]+n*m[n]^2-2*m[n]*s[n]}{n} s[n]=1n?(x[i])m[n]=ns[n]?s2[n]=1n?x[i]2v[n]=n1n?x[i]2+n?m[n]2?2?m[n]?1n?x[i]?=ns2[n]+n?m[n]2?2?m[n]?s[n]?
但是這種方法需要另外再多加兩個數(shù)組s[n]和s2[n]。下面介紹一種更好的方法,據(jù)說來自Donald Knuth 的《計算機程序設計藝術》第二卷,但是我粗略在這本書中找了一下沒有找到。我是在《Learning JavaScript JavaScript Essentials for Modern Application Development》這本書中介紹reduce方法(P140)看到的,覺得這種遞推方法很漂亮。下面進行推導:
m[n]=∑1n(x[i]n)=∑1n?1x[i]+x[n]n=∑1n?1x[i]n?1?n?1n+x[n]n=m[n?1]?n?1n+x[n]n=n?m[n?1]?m[n?1]+x[n]n=m[n?1]+x[n]?m[n?1]nm[n]=\sum_1^n(\frac{x[i]}{n})\\ =\frac{\sum_1^{n-1}x[i]+x[n]}{n}\\ =\frac{\sum_1^{n-1}x[i]}{n-1}*\frac{n-1}{n}+\frac{x[n]}{n}\\ =m[n-1]*\frac{n-1}{n}+\frac{x[n]}{n}\\ =\frac{n*m[n-1]-m[n-1]+x[n]}{n}\\ =m[n-1]+\frac{x[n]-m[n-1]}{n} m[n]=1n?(nx[i]?)=n1n?1?x[i]+x[n]?=n?11n?1?x[i]??nn?1?+nx[n]?=m[n?1]?nn?1?+nx[n]?=nn?m[n?1]?m[n?1]+x[n]?=m[n?1]+nx[n]?m[n?1]?
方差的計算有點區(qū)別,先計算其二階矩。
M2[n]=∑1n(x[i]?m[n])2=∑1n(x[i]?m[n?1]?x[n]?m[n?1]n)2=∑1n(x[i]?m[n?1])2+(x[n]?m[n?1])2n?2?x[n]?m[n?1]n?∑1nx[i]?m[n?1]=M2[n?1]+(x[n]?m[n?1])2+(x[n]?m[n?1])2n?2?(x[n]?m[n?1])2n=M2[n?1]+(x[n]?m[n?1])2?(x[n]?m[n?1])2n=M2[n?1]+(x[n]?m[n?1])?(x[n]?m[n?1]?m[n]+m[n?1])=M2[n?1]+(x[n]?m[n?1])?(x[n]?m[n])M2[n]=\sum_1^n{(x[i]-m[n])^2}\\ =\sum_1^n{(x[i]-m[n-1]-\frac{x[n]-m[n-1]}{n})^2}\\ =\sum_1^n{(x[i]-m[n-1])^2}+\frac{(x[n]-m[n-1])^2}{n}-2*\frac{x[n]-m[n-1]}{n}*\sum_1^n{x[i]-m[n-1]}\\ =M2[n-1]+(x[n]-m[n-1])^2+\frac{(x[n]-m[n-1])^2}{n}-2*\frac{(x[n]-m[n-1])^2}{n}\\ =M2[n-1]+(x[n]-m[n-1])^2-\frac{(x[n]-m[n-1])^2}{n}\\ =M2[n-1]+(x[n]-m[n-1])*(x[n]-m[n-1]-m[n]+m[n-1])\\ =M2[n-1]+(x[n]-m[n-1])*(x[n]-m[n]) M2[n]=1n?(x[i]?m[n])2=1n?(x[i]?m[n?1]?nx[n]?m[n?1]?)2=1n?(x[i]?m[n?1])2+n(x[n]?m[n?1])2??2?nx[n]?m[n?1]??1n?x[i]?m[n?1]=M2[n?1]+(x[n]?m[n?1])2+n(x[n]?m[n?1])2??2?n(x[n]?m[n?1])2?=M2[n?1]+(x[n]?m[n?1])2?n(x[n]?m[n?1])2?=M2[n?1]+(x[n]?m[n?1])?(x[n]?m[n?1]?m[n]+m[n?1])=M2[n?1]+(x[n]?m[n?1])?(x[n]?m[n])

m[n]和M2[n]計算都有一個x[n]?m[n?1]x[n]-m[n-1]x[n]?m[n?1]項,M2[n]還有一項很相似的x[n]?m[n]x[n]-m[n]x[n]?m[n],并且都是累加的形式。雖然計算v[n]還需要先計算M2[n],似乎還是多了一個臨時數(shù)組。

總結(jié)

以上是生活随笔為你收集整理的对序列连续计算平均数和方差的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。