ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲色图16p,最近中文字幕在线,国产一区二区女http://www.aygfsteel.com/changedi/category/47324.html先知cd——热çˆÞq”Ÿ‹zÀL˜¯ä¸€åˆ‡è‰ºæœ¯çš„å¼€å§?/description>zh-cnTue, 12 Nov 2013 06:17:38 GMTTue, 12 Nov 2013 06:17:38 GMT60基数估计http://www.aygfsteel.com/changedi/archive/2013/11/12/406235.htmlchangedichangediTue, 12 Nov 2013 02:10:00 GMThttp://www.aygfsteel.com/changedi/archive/2013/11/12/406235.htmlhttp://www.aygfsteel.com/changedi/comments/406235.htmlhttp://www.aygfsteel.com/changedi/archive/2013/11/12/406235.html#Feedback0http://www.aygfsteel.com/changedi/comments/commentRss/406235.htmlhttp://www.aygfsteel.com/changedi/services/trackbacks/406235.html问题的背景是在大数据冲击下,很多数据指标åQˆå°¤å…¶æ˜¯æ¶‰åŠåˆ°åŽ»é‡çš„åQ‰çš„计算无法在合理的½Iºé—´å’Œæ—¶é—´å†…完成åQŒæ¯”如uv的计½Ž—,数学原型问题½{‰ä­h(hu¨¢n)于持¾l­çš„向一个集合中写数åQŒé‡å¤çš„不记åQŒè¦æ±‚最¾lˆç»™å‡ºé›†åˆä¸­ä¸é‡å¤çš„元素的个敎ͼˆé›†åˆçš„势åQ‰ã€‚而比较暴力的做法是随着数字增多不断的扩展集合的大小åQŒè®©å®ƒæ”¾ä¸‹æ‰€æœ‰çš„æ•ŽÍ¼Œæœ€¾lˆæ•°å‡ø™¿™ä¸ªä¸ªæ•°å°±O(ji¨¡n)K。显然这æ ïLš„½Iºé—´å¤æ‚度在单机下是做不到的åQŒæ‰€ä»¥å¤šæ•°åšæ³•是利用分布式原理将uv数据隔离åˆîC¸åŒçš„计算节点åQŒæ¯ä¸ªè®¡½Ž—èŠ‚ç‚¹è‡ªè¡Œç»´æŠ¤ä¸€ä¸ªç±»ä¼ÆD¿™æ ïLš„集合åQˆwdm实时里的布隆˜q‡æ×o器)åQŒç„¶åŽåˆ†è€Œæ²»ä¹‹ï¼Œæœ€åŽmergeä¸ÞZ¸€ä»½ç»“果数据ã€?

      åŸºæ•°ä¼°è®¡çš„åˆè¡·å°±æ˜¯äØ“äº†è§£å†›_œ¨å¤§æ•°æ®çš„前提下,如何以低成本的空间复杂度去计½Ž—超大集合的势的问题åQŒæ¢å¥è¯è¯ß_¼Œé€šè¿‡åŸºæ•°ä¼°è®¡åQŒå•机做到计½Ž—亿¾U§åˆ«uvåQŒè¯¯å·®åœ¨4%以内。解å†Ïx€èµ\主要是概率估计,具体原理和做法参çœ?blog和论文原文ã€?

     å‡ÞZºŽå®žéªŒçš„目的,我简单实çŽîCº†æš´åŠ›åšæ³•bruteforce-bfåQŒå¸ƒéš†è¿‡æ»¤å™¨-bbfåQŒloglog-llcå’Œhyperloglog-hllc四个½Ž—法åQŒæ¯”较一下基æ•îC¼°è®¡è¿™ä¸ªè®¡½Ž—去重指标的逻辑是否可行åQˆllc非常¼›»è°±åQŒå¯èƒ½æ˜¯æˆ‘分桶数没有调整好,ž®×ƒ¸è´´å‡º¾l“果了)ã€?

预处理方法:1-N生成随机uidåQŒæ¨¡æ‹ŸN‹Æ¡ï¼ˆå‡åŒ€åˆ†å¸ƒåQ‰ï¼Œjvm启动-Xmx1024mã€?

实验¾l“æžœåQ?

image   image

附加说明一下,期望值如何计½Ž—:其实˜q™ä¸ªå®žéªŒçš„æ•°å­¦åŽŸåž‹å°±æ˜¯ä¸€ä¸ªé•¿åº¦äØ“k的均匀分布的(1-N)的随机数列,求不重复的元素个数的期望。我实验里k=nåQŒè¿™æ˜¯ä¸€¿Uæžç«¯æƒ…况(实验设计¾U¯äؓ方便计算åQŒå¦‚æžœk较大会导致计½Ž—超慢,uv5000w时根本无法计½Ž—出来,增大k理论上会提高¾_‘Öº¦åQŒæˆ‘实验˜q‡çš„一¾l„数据是100w uv 500wpvæ—?hllc的值是991234åQŒè¯¯å·?lt;1%åQ‰ï¼Œç†è®ºä¸Šk相当于pvåQŒåœ¨é€’推公式中k­‘‹äºŽæ— ç©·æ—¶æœŸæœ›ç­‰äºŽnã€?

˜q™ä¸ªé€’推的计½Ž—可以通过¾l„合分析推导åQŒæŽ¨å¯¼æ–¹æ³•不详说了(当然我有可能推导错了~~数学功底 实在 不行了)åQŒé€šé¡¹å…¬å¼è§matlab代码ã€?

syms e n;
e = n-(1/n)*((1-2*n+n*n)*((n-1)/n)^(n-2)+(1-n)*n+n*(n-1));

vpa(subs(e,'n',1000000),10)

另外åQŒæˆ‘个ähè®¤äØ“åˆ†å¸ƒå¼å¸ƒéš†è¿‡æ»¤å™¨çš„æ–¹æ¡ˆæ˜¯éžå¸¸å¥½çš„åQŒå› ä¸ºç©ºé—´å’Œæ—‰™—´éƒ½æ¯”较均衡,且精¼‹®åº¦é«˜ï¼ŒåŸºæ•°ä¼°è®¡çš„æ–¹æ³•本质上½Iºé—´å¤æ‚度O(1)åQŒæ—¶é—´å¤æ‚度代码高效一点也可以非常快,但是¾~ºç‚¹æ˜¯ç²¾¼‹®åº¦½Eå¾®‹Æ ç¼ºåQŒä¸”不易分布式计½Ž—ï¼ˆå› äØ“å®ƒå¤©ç”Ÿé€‚åˆå•è¿›½E‹ï¼Œllc分桶均衡也是单进½E‹åšæ¯”较好,分布式完全是牛刀杀鸡)ã€?

ref blog: http://blog.codinglabs.org/articles/cardinality-estimate-exper.html#ref4

½Ž—法实现的java代码可见githubåQ?https://github.com/changedi/card-estimate



]]>
Commons Math学习½W”记——聚¾cÕd’Œå›žå½’http://www.aygfsteel.com/changedi/archive/2011/01/01/342124.htmlchangedichangediSat, 01 Jan 2011 10:35:00 GMThttp://www.aygfsteel.com/changedi/archive/2011/01/01/342124.htmlhttp://www.aygfsteel.com/changedi/comments/342124.htmlhttp://www.aygfsteel.com/changedi/archive/2011/01/01/342124.html#Feedback0http://www.aygfsteel.com/changedi/comments/commentRss/342124.htmlhttp://www.aygfsteel.com/changedi/services/trackbacks/342124.html
回归是一个统计中非常重要的概念了。在Commons Math库中有一个regression的子包è{么实çŽîCº†¾U¿æ€§å›žå½’的一些基本类型。在regression包中åQŒæœ‰ä¸ªåŸºæœ¬æŽ¥å£å°±æ˜¯MultipleLinearRegressionåQŒè¿™ä¸ªæŽ¥å£è¡¨è¾¾y=X*b+u˜q™æ ·çš„基本线性回归式。线性回归是利用¿UîCØ“¾U¿æ€§å›žå½’æ–¹½E‹çš„æœ€ž®äºŒä¹˜å‡½æ•°å¯¹ä¸€ä¸ªæˆ–多个自变量和因变量之间关¾p»è¿›è¡Œå¾æ¨¡çš„一¿Uå›žå½’分析。简单看˜q™ä¸ªå…¬å¼åQŒy代表了一个n¾l´çš„列向量(回归子)åQŒX代表了[n,k]大小的观‹¹‹å€¼çŸ©é˜µï¼ˆå›žå½’量)åQŒb是k¾l´çš„回归参数åQŒu是一个n¾l´çš„剩余误差。回归分析干什么用的?具体讲就是预‹¹‹ã€‚我们在数据挖掘中定义,定性的分析叫做分类åQŒè€Œå®šé‡çš„分析叫做回归。回归就是根据已有的观察值去预测未来的一个定量的指标。记得前一ŒDµé˜¿é‡Œäº‘到学院来做技术交‹¹ï¼Œè®²åˆ°é˜‰K‡Œå’Œæ·˜å®é€šè¿‡æ•°æ®åˆ†æžå¯¹ä¸­å›½å•†å“äº¤æ˜“(˜q˜æ˜¯å…·ä½“什么èåN易,忘记了,ž®´å°¬åQ‰çš„预测ž®±æ˜¯å·¥ç¨‹å¸ˆåšçš„一个简单的¾U¿æ€§å›žå½’分析,模型虽然½Ž€å•,但是后来与实际数据一比较åQŒé¢„‹¹‹å€ég¸Žå®žé™…值的曲线基本åÕdˆã€?

  é˜…读全文

]]>
Commons Math学习½W”记——随机生成和¾lŸè®¡åˆæ­¥ http://www.aygfsteel.com/changedi/archive/2011/01/01/342123.htmlchangedichangediSat, 01 Jan 2011 10:30:00 GMThttp://www.aygfsteel.com/changedi/archive/2011/01/01/342123.htmlhttp://www.aygfsteel.com/changedi/comments/342123.htmlhttp://www.aygfsteel.com/changedi/archive/2011/01/01/342123.html#Feedback0http://www.aygfsteel.com/changedi/comments/commentRss/342123.htmlhttp://www.aygfsteel.com/changedi/services/trackbacks/342123.html阅读全文

]]>
Commons Math学习½W”记——分数和复数http://www.aygfsteel.com/changedi/archive/2010/12/27/341639.htmlchangedichangediMon, 27 Dec 2010 14:00:00 GMThttp://www.aygfsteel.com/changedi/archive/2010/12/27/341639.htmlhttp://www.aygfsteel.com/changedi/comments/341639.htmlhttp://www.aygfsteel.com/changedi/archive/2010/12/27/341639.html#Feedback0http://www.aygfsteel.com/changedi/comments/commentRss/341639.htmlhttp://www.aygfsteel.com/changedi/services/trackbacks/341639.html
  é˜…读全文

]]>
Commons Math学习½W”记——分å¸?/title><link>http://www.aygfsteel.com/changedi/archive/2010/12/23/341408.html</link><dc:creator>changedi</dc:creator><author>changedi</author><pubDate>Thu, 23 Dec 2010 12:03:00 GMT</pubDate><guid>http://www.aygfsteel.com/changedi/archive/2010/12/23/341408.html</guid><wfw:comment>http://www.aygfsteel.com/changedi/comments/341408.html</wfw:comment><comments>http://www.aygfsteel.com/changedi/archive/2010/12/23/341408.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/changedi/comments/commentRss/341408.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/changedi/services/trackbacks/341408.html</trackback:ping><description><![CDATA[     摘要: 概率分布是概率论的一个基¼‹€ã€?<br> <br>在Commons Math包中也专门有一个子包对概率分布˜q›è¡Œäº†å°è£…实现。在distribution包中åQŒå®šä¹‰äº†ä¸€ä¸ªåŸºæœ¬æŽ¥å£Distribution。该接口只有两个æ–ÒŽ(gu¨©)³•åQŒä¸€ä¸ªæ˜¯double cumulativeProbability(double x)åQŒä¸€ä¸ªæ˜¯double cumulativeProbability(double x0, double x1)。前者对于服从某¿Uåˆ†å¸ƒçš„随机变量XåQŒè¿”回P(X<=x)åQ›åŽè€…则˜q”回P(x0<=X<=x1)。正如其名所½Cºï¼Œ˜q™æ ·ä¹Ÿå°±å¾—到了概率ã€?<br> <br>  <a href='http://www.aygfsteel.com/changedi/archive/2010/12/23/341408.html'>阅读全文</a><img src ="http://www.aygfsteel.com/changedi/aggbug/341408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/changedi/" target="_blank">changedi</a> 2010-12-23 20:03 <a href="http://www.aygfsteel.com/changedi/archive/2010/12/23/341408.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Commons Math学习½W”记——函数方½E‹æ±‚è§?/title><link>http://www.aygfsteel.com/changedi/archive/2010/12/21/341256.html</link><dc:creator>changedi</dc:creator><author>changedi</author><pubDate>Tue, 21 Dec 2010 09:18:00 GMT</pubDate><guid>http://www.aygfsteel.com/changedi/archive/2010/12/21/341256.html</guid><wfw:comment>http://www.aygfsteel.com/changedi/comments/341256.html</wfw:comment><comments>http://www.aygfsteel.com/changedi/archive/2010/12/21/341256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/changedi/comments/commentRss/341256.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/changedi/services/trackbacks/341256.html</trackback:ping><description><![CDATA[     摘要: 函数方程求解åQŒå…¶å®žæ˜¯å‡½æ•°çš„零炚w—®é¢˜ï¼Œä¹Ÿå°±æ˜¯è¯´å‡½æ•°çš„æ›²¾U¿ä¸ŽX轴的交点。对于线性方½E‹ï¼Œæˆ‘们可以è½ÀL˜“的求解,对于¾U¿æ€§æ–¹½E‹ç»„åQŒåˆ©ç”¨å‰é¢è®²˜q‡çš„的矩阵分解方法也可以求解。那么对于函数表辄¡š„很多非线性方½E‹çš„æ±‚解。我们要依赖数值算法。Commons Math包中专门有一个analysis.solver包来解决˜q™ä¸ªé—®é¢˜ã€?<br> <br>  <a href='http://www.aygfsteel.com/changedi/archive/2010/12/21/341256.html'>阅读全文</a><img src ="http://www.aygfsteel.com/changedi/aggbug/341256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/changedi/" target="_blank">changedi</a> 2010-12-21 17:18 <a href="http://www.aygfsteel.com/changedi/archive/2010/12/21/341256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Commons Math学习½W”记——函数积åˆ?/title><link>http://www.aygfsteel.com/changedi/archive/2010/12/19/341116.html</link><dc:creator>changedi</dc:creator><author>changedi</author><pubDate>Sun, 19 Dec 2010 13:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/changedi/archive/2010/12/19/341116.html</guid><wfw:comment>http://www.aygfsteel.com/changedi/comments/341116.html</wfw:comment><comments>http://www.aygfsteel.com/changedi/archive/2010/12/19/341116.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/changedi/comments/commentRss/341116.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/changedi/services/trackbacks/341116.html</trackback:ping><description><![CDATA[     摘要: ¿U¯åˆ†å¯ä»¥è¯´æ˜¯æœ€å¸¸è§çš„了åQŒåœ¨å‡½æ•°çš„一节中我们讲过函数的微分和¾l™å®šå˜é‡æ±‚å€û|¼Œ˜q™é‡Œæˆ‘们讲讲通过函数求积分,具体的数值积分方法和应用。什么是数值积分?在数值分析中åQŒæ•°å€¼ç§¯åˆ†æ˜¯è®¡ç®—定积分数值的æ–ÒŽ(gu¨©)³•和理论。在数学分析中,¾l™å®šå‡½æ•°çš„定¿U¯åˆ†çš„计½Ž—不æ€ÀL˜¯å¯è¡Œçš„。许多定¿U¯åˆ†ä¸èƒ½ç”¨å·²çŸ¥çš„¿U¯åˆ†å…¬å¼å¾—到¾_„¡¡®å€¹{€‚数值积分是利用黎曼¿U¯åˆ†½{‰æ•°å­¦å®šä¹‰ï¼Œç”¨æ•°å€¼é€ÆD¿‘çš„æ–¹æ³•è¿‘ä¼ÆD®¡½Ž—给定的定积分倹{€‚借助于电(sh¨´)子计½Ž—设备,数值积分可以快速而有效地计算复杂的积分。Commons Math中的¿U¯åˆ†åŒ…analysis.integration提供了几¿Uæ•°å€¼ç§¯åˆ†çš„实现åQŒUnivariateRealIntegrator接口是积分包中的基础接口åQŒè¯¥æŽ¥å£¾l§æ‰¿äº†math包中的ConvergingAlgorithm接口。具体定义了一¾pÕdˆ—æ–ÒŽ(gu¨©)³•åQŒå…¶ä¸­æ¯”较主要的有double integrate(UnivariateRealFunction f, double min, double max)æ–ÒŽ(gu¨©)³•åQŒè¿™ä¸ªæ–¹æ³•就是通过minå’Œmax讑֮š¿U¯åˆ†åŒºé—´åQŒé€šè¿‡f讑֮šè¢«ç§¯å‡½æ•°åQŒæœ€åŽè¿”回定¿U¯åˆ†å€¼çš„æ–ÒŽ(gu¨©)³•。可以看到这个接口的实现是针对单变量实函数的。多元积分的实现åQŒç›®å‰è¿˜æ²¡æœ‰çœ?nbsp; <a href='http://www.aygfsteel.com/changedi/archive/2010/12/19/341116.html'>阅读全文</a><img src ="http://www.aygfsteel.com/changedi/aggbug/341116.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/changedi/" target="_blank">changedi</a> 2010-12-19 21:27 <a href="http://www.aygfsteel.com/changedi/archive/2010/12/19/341116.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Commons Math学习½W”记——函数插å€?http://www.aygfsteel.com/changedi/archive/2010/12/16/340932.htmlchangedichangediThu, 16 Dec 2010 14:30:00 GMThttp://www.aygfsteel.com/changedi/archive/2010/12/16/340932.htmlhttp://www.aygfsteel.com/changedi/comments/340932.htmlhttp://www.aygfsteel.com/changedi/archive/2010/12/16/340932.html#Feedback0http://www.aygfsteel.com/changedi/comments/commentRss/340932.htmlhttp://www.aygfsteel.com/changedi/services/trackbacks/340932.html
插值是数学领域数值分析中的通过已知的离散数据求未知数据的过½E‹æˆ–æ–ÒŽ(gu¨©)³•。给定n个离散数据点åQˆç§°ä¸ø™Š‚点)(xk,yk)åQŒk= 1,2,...,n。对于,求x所对应的y的值称为内插。f(x)为定义在区间[a,b]上的函数。x1,x2,x3...xn为[a,b]上n个互不相同的点,G为给定的某意函数¾c…R€‚è‹¥G上有函数g(x)满èƒöåQ?g(xi) = f(xi),k = 1,2,...n

则称g(x)为f(x)关于节点x1,x2,x3...xn在G上的插值函�

  é˜…读全文

]]>
Commons Math学习½W”记——多™å¹å¼å‡½æ•°http://www.aygfsteel.com/changedi/archive/2010/12/15/340745.htmlchangedichangediWed, 15 Dec 2010 02:48:00 GMThttp://www.aygfsteel.com/changedi/archive/2010/12/15/340745.htmlhttp://www.aygfsteel.com/changedi/comments/340745.htmlhttp://www.aygfsteel.com/changedi/archive/2010/12/15/340745.html#Feedback0http://www.aygfsteel.com/changedi/comments/commentRss/340745.htmlhttp://www.aygfsteel.com/changedi/services/trackbacks/340745.html
  é˜…读全文

]]>
Commons Math学习½W”记——函æ•?/title><link>http://www.aygfsteel.com/changedi/archive/2010/12/14/340694.html</link><dc:creator>changedi</dc:creator><author>changedi</author><pubDate>Tue, 14 Dec 2010 11:39:00 GMT</pubDate><guid>http://www.aygfsteel.com/changedi/archive/2010/12/14/340694.html</guid><wfw:comment>http://www.aygfsteel.com/changedi/comments/340694.html</wfw:comment><comments>http://www.aygfsteel.com/changedi/archive/2010/12/14/340694.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/changedi/comments/commentRss/340694.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/changedi/services/trackbacks/340694.html</trackback:ping><description><![CDATA[     摘要: 向量和矩阵可以说是线性代数的代表åQŒé‚£ä¹ˆè¿”˜q˜åˆ°é«˜ç­‰æ•°å­¦ä¸­ï¼Œå‡½æ•°ž®±æ˜¯æˆ‘们最常用到的单位了,˜q˜æœ‰å„种微积分和其他应用åQŒéƒ½æ˜¯å¾ç«‹åœ¨å˜é‡ã€å‡½æ•°çš„基础上的。Commons Math库的下一个研读部分就是针对函数这一块。在Commons Math中也单独有一个analysis包完成这部分实现ã€?<br> <br>  <a href='http://www.aygfsteel.com/changedi/archive/2010/12/14/340694.html'>阅读全文</a><img src ="http://www.aygfsteel.com/changedi/aggbug/340694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/changedi/" target="_blank">changedi</a> 2010-12-14 19:39 <a href="http://www.aygfsteel.com/changedi/archive/2010/12/14/340694.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Commons Math学习½W”记——矩阵分è§?/title><link>http://www.aygfsteel.com/changedi/archive/2010/12/13/340441.html</link><dc:creator>changedi</dc:creator><author>changedi</author><pubDate>Mon, 13 Dec 2010 01:39:00 GMT</pubDate><guid>http://www.aygfsteel.com/changedi/archive/2010/12/13/340441.html</guid><wfw:comment>http://www.aygfsteel.com/changedi/comments/340441.html</wfw:comment><comments>http://www.aygfsteel.com/changedi/archive/2010/12/13/340441.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/changedi/comments/commentRss/340441.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/changedi/services/trackbacks/340441.html</trackback:ping><description><![CDATA[     摘要: 补充上一‹Æ¡çš„矩阵知识åQŒè¿™‹Æ¡ä¸»è¦è®²è®²çŸ©é˜ëŠš„一些分解运½Ž———Matrix DecompositionåQ?<br> <br>矩阵分解主要有三¿Uæ–¹å¼ï¼šLU分解åQŒQR分解和奇异值分解。当然在Mathçš„linear包中提供了对应的接口有CholeskyDecomposition、EigenDecomposition、LUDecomposition、QRDecompositionå’ŒSingularValueDecomposition˜q?¿Uåˆ†è§£æ–¹å¼ã€?<br> <br>  <a href='http://www.aygfsteel.com/changedi/archive/2010/12/13/340441.html'>阅读全文</a><img src ="http://www.aygfsteel.com/changedi/aggbug/340441.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/changedi/" target="_blank">changedi</a> 2010-12-13 09:39 <a href="http://www.aygfsteel.com/changedi/archive/2010/12/13/340441.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Commons Math学习½W”记——矩é˜?http://www.aygfsteel.com/changedi/archive/2010/12/11/340372.htmlchangedichangediSat, 11 Dec 2010 13:12:00 GMThttp://www.aygfsteel.com/changedi/archive/2010/12/11/340372.htmlhttp://www.aygfsteel.com/changedi/comments/340372.htmlhttp://www.aygfsteel.com/changedi/archive/2010/12/11/340372.html#Feedback3http://www.aygfsteel.com/changedi/comments/commentRss/340372.htmlhttp://www.aygfsteel.com/changedi/services/trackbacks/340372.html
Math包org.apache.commons.math.linear里对矩阵的表½Cºæ˜¯æœ‰ä¸€ä¸ªå±‚‹Æ¡ç»“构的ã€?

最™å¶å±‚çš„AnyMatrix是一个基本的interface。下面有3个sub interfaceåQšBigMatrix, FieldMatrix, RealMatrix。而每个sub interface分别被相应的矩阵¾cÕd®žçŽ°ã€‚æ•´ä¸ªçŸ©é˜ëŠš„层次¾l“构也就出来了。不˜q‡å…¶ä¸­çš„BigMatrix已经不用了。被Array2DRowFieldMatrix替代了ã€?

  é˜…读全文

]]>
Commons Math学习½W”记——向é‡?http://www.aygfsteel.com/changedi/archive/2010/12/10/340286.htmlchangedichangediFri, 10 Dec 2010 09:46:00 GMThttp://www.aygfsteel.com/changedi/archive/2010/12/10/340286.htmlhttp://www.aygfsteel.com/changedi/comments/340286.htmlhttp://www.aygfsteel.com/changedi/archive/2010/12/10/340286.html#Feedback0http://www.aygfsteel.com/changedi/comments/commentRss/340286.htmlhttp://www.aygfsteel.com/changedi/services/trackbacks/340286.html看其他篇章到目录选择ã€?/span>

首先从我们计½Ž—机人最熟æ?zh¨¨n)‰çš„线性代数开始ã€?/span>

今天先写½W¬ä¸€½‹‡ï¼šå‘量—â€?/span>vector。另外补充一句,每一个具体类或者包的研½I‰™ƒ½æ˜¯ç¤ºä¾‹æ€§è´¨çš„,具体要用åˆîC»€ä¹ˆç±»åž‹çš„¾cÀLˆ–者接口,大家应该自己动手åŽÈ¿»é˜?/span>api docã€?/span>

Vector是一个普通的向量。在mathåŒ?/span>org.apache.commons.math.linear中有RealVectorå’?/span>FieldVector˜q™ä¸¤¿Uå‘量,均是接口¾cÕdž‹ã€‚前者是实数¾cÕdž‹çš„向量,后者是场向量。以实数向量ä¸ÞZ¾‹åQ?/span>RealVectoræœ?/span>AbstractRealVector, ArrayRealVector。具体的¾l“æž„¾cÕd›¾è§ä¸‹åQ?/span>


˜q™ä¸ª¾l“æž„å¯èƒ½ä¼šæœ‰äº›å˜åŒ–ï¼Œå› äØ“åœ?/span>doc中,可以看到ArrayRealVector是ç‘ôæ‰?/span>AbstractRealVector的,è€?/span>2.0的代码中ArrayRealVector˜q˜æ˜¯ç›´æŽ¥å®žçްäº?/span>RealVectoråQŒä¸”包中也没æœ?/span>AbstractRealVector。可见代码的变化å’?/span>doc中的描述也有不同åQŒè™½ç„?/span>doc中说明了AbstractRealVectoræ˜?/span>since 2.0的,而且ArrayRealVector也是since 2.0的。呵呵,一个不一致。其实是update date的不同了ã€?/span>

向量˜q™ä¸ªæ¦‚念是线性代数的基础ã€?/span>RealVectorä½œäØ“åŸºæœ¬çš„æŽ¥å£ï¼Œå·²ç»å®šä¹‰äº†åŸºæœ¬æ‰€æœ‰çš„å‘é‡æ“ä½œã€‚æ¯”å¦‚å‘é‡çš„åŠ å‡ä¹˜é™¤˜qç®—、向量外¿U¯ã€å‘量内¿U¯ã€å‘量范数等½{‰ï¼Œå½“ç„¶vector的实现时åŸÞZºŽæ•°ç»„¾cÕdž‹çš„ã€?/span>RealVector的内部实现是double []data;ã€?/span>

需要重点解释的是一个操ä½?/span>map***åQšå°±åƒåŽŸæ¥çš„api解释çš?#8220;The various mapXxx and mapXxxToSelf methods operate on vectors element-wise, i.e. they perform the same operation (adding a scalar, applying a function ...) on each element in turn. The mapXxx versions create a new vector to hold the result and do not change the instance. The mapXxxToSelf versions use the instance itself to store the results, so the instance is changed by these methods. In both cases, the result vector is returned by the methods”ã€?/span>

具体是什么呢åQŸå¾ˆå¤šçš„map***操作å’?/span>map***toself操作ž®±æ˜¯å¯¹å‘量的每一个元素做固定操作的意思。è€?/span>map***是返回新的实例的åQŒè€?/span>map***toself则返回自己。这个从源码可以看出åQŒæ¯”å¦?/span>mapAdd()的实玎ͼš


1public RealVector mapAdd(double d) {
2        double[] out = new double[data.length];
3        for (int i = 0; i < data.length; i++{
4            out[i] = data[i] + d;
5        }

6        return new ArrayRealVector(out);
7}

8


è€?/span>mapAddToSelf()的实玎ͼš

1public RealVector mapAddToSelf(double d) {
2        for (int i = 0; i < data.length; i++{
3            data[i] = data[i] + d;
4        }

5        return this;
6}

7

区别昄¡„¶äº†ï¼Œä¸€ä¸ªè¿”å›?/span>new ArrayRealVectoråQŒä¸€ä¸ªè¿”å›?/span>thisã€?/span>

具体见代码:


 1/**
 2 * 
 3 */

 4package algorithm.math;
 5
 6import org.apache.commons.math.linear.ArrayRealVector;
 7import org.apache.commons.math.linear.RealVector;
 8
 9/**
10 * @author Jia Yu
11 * @date 2010-11-18
12 */

13public class VectorTest {
14
15    /**
16     * @param args
17     */

18    public static void main(String[] args) {
19        // TODO Auto-generated method stub
20        vector();
21    }

22
23    private static void vector() {
24        // TODO Auto-generated method stub
25        double[] vec1 = { 1d, 2d, 3d };
26        double[] vec2 = { 4d, 5d, 6d };
27        ArrayRealVector v1 = new ArrayRealVector(vec1);
28        ArrayRealVector v2 = new ArrayRealVector(vec2);
29
30        // output directly
31        System.out.println("v1 is " + v1);
32        // dimension : size of vector
33        System.out.println("size is " + v1.getDimension());
34        // vector add
35        System.out.println("v1 + v2 = " + v1.add(v2));
36        System.out.println("v1 + v2 = " + v1.add(vec2));
37        // vector substract
38        System.out.println("v1 - v2 = " + v1.subtract(v2));
39        // vector element by element multiply
40        System.out.println("v1 * v2 = " + v1.ebeMultiply(v2));
41        // vector element by element divide
42        System.out.println("v1 / v2 = " + v1.ebeDivide(v2));
43        // get index at 1
44        System.out.println("v1[1] = " + v1.getEntry(1));
45        // vector append
46        RealVector t_vec = v1.append(v2);
47        System.out.println("v1 append v2 is " + t_vec);
48        // vector distance
49        System.out.println("distance between v1 and v2 is "
50                + v1.getDistance(v2));
51        System.out.println("L1 distance between v1 and v2 is "
52                + v1.getL1Distance(v2));
53        // vector norm
54        System.out.println("norm of v1 is " + v1.getNorm());
55        // vector dot product
56        System.out.println("dot product of v1 and v2 is " + v1.dotProduct(v2));
57        // vector outer product
58        System.out.println("outer product of v1 and v2 is "
59                + v1.outerProduct(v2));
60        // vector orthogonal projection
61        System.out.println("hogonal projection of v1 and v2 is "
62                + v1.projection(v2));
63        // vector map operations
64        System.out.println("Map the Math.abs(double) function to v1 is "
65                + v1.mapAbs());
66        v1.mapInvToSelf();
67        System.out.println("Map the 1/x function to v1 itself is " + v1);
68        // vector get sub vector
69        System.out.println("sub vector of v1 is " + v1.getSubVector(02));
70    }

71
72}

73

对应的输出:

v1 is {1; 2; 3}
size is 3
v1 + v2 = {5; 7; 9}
v1 + v2 = {5; 7; 9}
v1 - v2 = {-3; -3; -3}
v1 * v2 = {4; 10; 18}
v1 / v2 = {0.25; 0.4; 0.5}
v1[1] = 2.0
v1 append v2 is {1; 2; 3; 4; 5; 6}
distance between v1 and v2 is 5.196152422706632
L1 distance between v1 and v2 is 9.0
norm of v1 is 3.7416573867739413
dot product of v1 and v2 is 32.0
outer product of v1 and v2 is Array2DRowRealMatrix{{4.0,5.0,6.0},{8.0,10.0,12.0},{12.0,15.0,18.0}}
hogonal projection of v1 and v2 is {1.66; 2.08; 2.49}
Map the Math.abs(double) function to v1 is {1; 2; 3}
Map the 1/x function to v1 itself is {1; 0.5; 0.33}
sub vector of v1 is {1; 0.5}

向量是一个基¼‹€æ•°å­¦¾l“æž„åQŒä»¥åŽè¿˜ä¼šå¤§é‡çš„æåˆ°ã€?/span>Commons Mathåº“äØ“æˆ‘ä»¬æä¾›äº†è¿™æ äh–¹ä¾¿çš„向量表示åQŒåœ¨ç”?/span>Java写è“v½E‹åºæ¥ä¹Ÿæ˜¯å¾—心应手ã€?/span>

当然所有的研究要以文档ä¸ÞZ¸»åQŒå‚看文档写代码˜q™æ˜¯å¿…须做到的事情。所以,不要嫌麻烦,赶紧æŠ?/span>api doc攑ֈ°æ¡Œé¢ä¸Šï¼Œå¼€å§?/span>coding吧ã€?/span>

 

相关资料åQ?/span>

向量定义åQ?/span>http://zh.wikipedia.org/zh/%E7%9F%A2%E9%87%8F

Commons math包:http://commons.apache.org/math/index.html



]]>
Commons Math学习½W”记——目录(随时更新åQ?/title><link>http://www.aygfsteel.com/changedi/archive/2010/12/10/340282.html</link><dc:creator>changedi</dc:creator><author>changedi</author><pubDate>Fri, 10 Dec 2010 09:41:00 GMT</pubDate><guid>http://www.aygfsteel.com/changedi/archive/2010/12/10/340282.html</guid><wfw:comment>http://www.aygfsteel.com/changedi/comments/340282.html</wfw:comment><comments>http://www.aygfsteel.com/changedi/archive/2010/12/10/340282.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/changedi/comments/commentRss/340282.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/changedi/services/trackbacks/340282.html</trackback:ping><description><![CDATA[  ä»¥å‰å­¦ä¹ ½W”记的整理,没有完成的部分以后会更新åQŒæ¯å¤©æ”¾ä¸Šæ¥ä¸€ç‚¹ç‚¹~~<br /> <h3><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目录</span></h3> <p><span style="font-family: 宋体">今天开始着手对</span>commons math 2.1<span style="font-family: 宋体">库的研究åQŒæ ‡å‡†çš„名字应该æ˜?/span>The Apache Commons Mathematics Library<span style="font-family: 宋体">ã€?/span><span style="font-family: 宋体">上网一查,没查到相关的学习资料åQŒæ²¡åŠžæ³•åQŒè‡ªå·±å¯¹ç€ä»£ç ä¸€ç‚¹ç‚¹å•ƒå§ã€‚正好打发闲散时光,˜q˜å¯ä»¥å›ž™å‘Ö¤ä¹ ä¸€äº›æ•°å­¦çŸ¥è¯†ï¼Œå…¶å®žä¸€ä¸ªä¸»è¦åŽŸå› æ˜¯æœ¬äh本硕阶段均未学习˜q‡ä“Q何数值分析方面的评¡¨‹åQŒå®žåœ¨æ?zh¨¨n)²å“€åQŒäºŽæ˜¯èŒå‘了研究</span>Math<span style="font-family: 宋体">库的热情。当然这份文档记录也可以ä¸ÞZ»¥åŽè¦ç”?/span>Java<span style="font-family: 宋体">写数学代码的同学提供一点参考ã€?/span></p> <p><span style="font-family: 宋体">先列å‡ÞZ¸€ä¸ªç›®å½•:åQˆè¿™ä¸ªç›®å½•是æ ÒŽ(gu¨©)®</span>commons math 2.1<span style="font-family: 宋体">库的¾l“构设计的)</span></p> <p>Section 1 linear algebra <span style="font-family: 宋体">¾U¿æ€§ä»£æ•ŽÍ¼ˆçŸ©é˜µä¸ÞZ¸»åQ?/span></p> <p style="margin-left: 39pt; text-indent: -18pt; tab-stops: list 39.0pt">1åQ?nbsp;<a href="http://www.aygfsteel.com/changedi/archive/2010/12/10/340286.html">Vector </a><span style="font-family: 宋体">向量</span></p> <p style="margin-left: 39pt; text-indent: -18pt; tab-stops: list 39.0pt">2åQ?nbsp;<a href="http://www.aygfsteel.com/changedi/archive/2010/12/11/340372.html">Matrix </a><span style="font-family: 宋体">矩阵</span></p> <p style="margin-left: 39pt; text-indent: -18pt; tab-stops: list 39.0pt">3åQ?nbsp;<a href="http://www.aygfsteel.com/changedi/archive/2010/12/13/340441.html">Matrix Decomposition </a><span style="font-family: 宋体">矩阵分解</span></p> <p>Section 2 analysis <span style="font-family: 宋体">数学分析åQˆå‡½æ•îCؓ主)</span></p> <p style="margin-left: 39pt; text-indent: -18pt; tab-stops: list 39.0pt">1åQ?nbsp;<a href="http://www.aygfsteel.com/changedi/archive/2010/12/14/340694.html">Function </a><span style="font-family: 宋体">函数</span></p> <p style="margin-left: 39pt; text-indent: -18pt; tab-stops: list 39.0pt">2åQ?nbsp;<a href="http://www.aygfsteel.com/changedi/archive/2010/12/15/340745.html">Polynomial </a><span style="font-family: 宋体">多项式函æ•?/span></p> <p style="margin-left: 39pt; text-indent: -18pt; tab-stops: list 39.0pt">3åQ?nbsp;<a href="http://www.aygfsteel.com/changedi/archive/2010/12/16/340932.html">Interpolation </a><span style="font-family: 宋体">插å€?/span></p> <p style="margin-left: 39pt; text-indent: -18pt; tab-stops: list 39.0pt">4åQ?nbsp;<a href="http://www.aygfsteel.com/changedi/archive/2010/12/19/341116.html">Integration </a><span style="font-family: 宋体">¿U¯åˆ†</span></p> <p style="margin-left: 39pt; text-indent: -18pt; tab-stops: list 39.0pt">5åQ?nbsp;<a href="http://www.aygfsteel.com/changedi/archive/2010/12/21/341256.html">Solver </a><span style="font-family: 宋体">求解</span></p> <p>Section 3 Probabilityand Statistics <span style="font-family: 宋体">概率和统è®?/span></p> <p>       1<span style="font-family: 宋体">åQ?/span><a href="http://www.aygfsteel.com/changedi/archive/2010/12/23/341408.html">distribution </a><span style="font-family: 宋体">分布</span></p> <p>       2<span style="font-family: 宋体">åQ?/span><a href="http://www.aygfsteel.com/changedi/archive/2010/12/27/341639.html">fraction and complex</a> <span style="font-family: 宋体">分数和复æ•?/span></p> <p>       3<span style="font-family: 宋体">åQ?/span><a href="http://www.aygfsteel.com/changedi/archive/2011/01/01/342123.html">random and statistics</a> <span style="font-family: 宋体">随机生成和统计初æ­?br />      <br />    4åQ?a href="http://www.aygfsteel.com/changedi/archive/2011/01/01/342124.html">cluster and regression</a>聚类和回å½?/span></p> <img src ="http://www.aygfsteel.com/changedi/aggbug/340282.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/changedi/" target="_blank">changedi</a> 2010-12-10 17:41 <a href="http://www.aygfsteel.com/changedi/archive/2010/12/10/340282.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">¼ÎºÌÏØ</a>| <a href="http://" target="_blank">׿×ÊÏØ</a>| <a href="http://" target="_blank">¿â³µÏØ</a>| <a href="http://" target="_blank">Äϵ¤ÏØ</a>| <a href="http://" target="_blank">Á¬Æ½ÏØ</a>| <a href="http://" target="_blank">ÐÂÃÜÊÐ</a>| <a href="http://" target="_blank">ÎèÑôÏØ</a>| <a href="http://" target="_blank">ÜdzÇÏØ</a>| <a href="http://" target="_blank">ÄþÁêÏØ</a>| <a href="http://" target="_blank">¹ÅÀËÏØ</a>| <a href="http://" target="_blank">ÆÁÉ½ÏØ</a>| <a href="http://" target="_blank">°²ÐÂÏØ</a>| <a href="http://" target="_blank">ÄÏ»ãÇø</a>| <a href="http://" target="_blank">ÙñÖÝÊÐ</a>| <a href="http://" target="_blank">Í©³ÇÊÐ</a>| <a href="http://" target="_blank">¹ÌÊ¼ÏØ</a>| <a href="http://" target="_blank">²ÔÏªÏØ</a>| <a href="http://" target="_blank">ËÉÅËÏØ</a>| <a href="http://" target="_blank">ÉÏÁÖÏØ</a>| <a href="http://" target="_blank">äÓÆÖÏØ</a>| <a href="http://" target="_blank">ÎÀ»ÔÊÐ</a>| <a href="http://" target="_blank">¶´Í·ÏØ</a>| <a href="http://" target="_blank">¹ÌÑôÏØ</a>| <a href="http://" target="_blank">¹ÉƱ</a>| <a href="http://" target="_blank">äÃÖÝÊÐ</a>| <a href="http://" target="_blank">ͨº£ÏØ</a>| <a href="http://" target="_blank">̨ÖÝÊÐ</a>| <a href="http://" target="_blank">Ó¢³¬</a>| <a href="http://" target="_blank">ÓåÖÐÇø</a>| <a href="http://" target="_blank">¹Å½»ÊÐ</a>| <a href="http://" target="_blank">ºìºÓÏØ</a>| <a href="http://" target="_blank">È«½·ÏØ</a>| <a href="http://" target="_blank">·±ÖÅÏØ</a>| <a href="http://" target="_blank">ÃÉÉ½ÏØ</a>| <a href="http://" target="_blank">ÍòÈ«ÏØ</a>| <a href="http://" target="_blank">¾¸½­ÊÐ</a>| <a href="http://" target="_blank">Ê©µéÏØ</a>| <a href="http://" target="_blank">ÓñÆÁ</a>| <a href="http://" target="_blank">½õÆÁÏØ</a>| <a href="http://" target="_blank">ÓÜÁÖÊÐ</a>| <a href="http://" target="_blank">°ÍÁÖÓÒÆì</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>