日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

問(wèn)題:對(duì)數(shù)列x[n]x[n]x[n],計(jì)算其平均數(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?)

這個(gè)問(wèn)題用通用的方法計(jì)算沒(méi)有問(wèn)題,但是效率會(huì)比較低。因?yàn)橛?jì)算后面的平均數(shù)和方差時(shí),前面的數(shù)重復(fù)累加計(jì)算了多次。對(duì)于平均數(shù)m[n],一個(gè)簡(jiǎn)單的優(yōu)化方法就是設(shè)置一個(gè)累加序列s[n],s[i]為x[0]到x[i]之間數(shù)的和。這樣計(jì)算平均數(shù)m[n],很容易從s[n]得到,計(jì)算方差呢?也可以設(shè)置另一個(gè)累加序列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]?
但是這種方法需要另外再多加兩個(gè)數(shù)組s[n]和s2[n]。下面介紹一種更好的方法,據(jù)說(shuō)來(lái)自Donald Knuth 的《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》第二卷,但是我粗略在這本書中找了一下沒(méi)有找到。我是在《Learning JavaScript JavaScript Essentials for Modern Application Development》這本書中介紹reduce方法(P140)看到的,覺得這種遞推方法很漂亮。下面進(jìn)行推導(dǎo):
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]?
方差的計(jì)算有點(diǎn)區(qū)別,先計(jì)算其二階矩。
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]計(jì)算都有一個(gè)x[n]?m[n?1]x[n]-m[n-1]x[n]?m[n?1]項(xiàng),M2[n]還有一項(xiàng)很相似的x[n]?m[n]x[n]-m[n]x[n]?m[n],并且都是累加的形式。雖然計(jì)算v[n]還需要先計(jì)算M2[n],似乎還是多了一個(gè)臨時(shí)數(shù)組。

總結(jié)

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

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