#
摘要: 没有过多的技术含量,只是拿来分享一下LCS算法的实现
阅读全文
摘要: Object pool就是一个管理对象的池子。新版本利用jdk 1.5以后的特性,结合泛型,而不是利用Object来实现了。
阅读全文
摘要: 调试技巧(随时总结):
F5单步进入(在需要进入某步方法时)
F6单步调试(一般用于单步执行)
F7单步跳出(跳出该调试区段方法)
F8调试恢复
阅读全文
摘要: 今天看了一下JTidy的使用,目的就是为了格式化一个不标准的html到标准的xhtml。
JTidy是一个用java写的HTML语法检查器,用JTidy可以检查并修正语法不正确的html,同时还可以对html的DOM进行分析。Xhtml和html有很多不同,其中几个主要的区别是
阅读全文
摘要: 杂七杂八的看了一些velocity的资料,把所见所得做个简单不系统的笔记写下来,算是增强记忆。
阅读全文
摘要: Commons-lang记录:
一个最常用的工具,作为jdk的补充,有必要看一下源码~~
阅读全文
摘要: 聚类可以见我以前写过的聚类分析的文章。
回归是一个统计中非常重要的概念了。在Commons Math库中有一个regression的子包转么实现了线性回归的一些基本类型。在regression包中,有个基本接口就是MultipleLinearRegression,这个接口表达y=X*b+u这样的基本线性回归式。线性回归是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。简单看这个公式,y代表了一个n维的列向量(回归子),X代表了[n,k]大小的观测值矩阵(回归量),b是k维的回归参数,u是一个n维的剩余误差。回归分析干什么用的?具体讲就是预测。我们在数据挖掘中定义,定性的分析叫做分类,而定量的分析叫做回归。回归就是根据已有的观察值去预测未来的一个定量的指标。记得前一段阿里云到学院来做技术交流,讲到阿里和淘宝通过数据分析对中国商品交易(还是具体什么贸易,忘记了,尴尬)的预测就是工程师做的一个简单的线性回归分析,模型虽然简单,但是后来与实际数据一比较,预测值与实际值的曲线基本吻合。
阅读全文
摘要: 概率统计最基本的前提就是有数据,而我们做模拟或者测试时总会用到大量的随机数据。我们知道绝对的随机是做不到的,但是可以利用算法来实现伪随机数的生成。Commons Math库提供了一个random的包,其中定义实现了很多可以用来生成随机数的类和接口。random包中定义了5个接口,分别是EmpiricalDistribution、NormalizedRandomGenerator、RandomData、RandomGenerator和RandomVectorGenerator。
阅读全文
摘要: 我们讲到数学的计算,难免会遇到分数形式,因为实数的定义就是可以表示为一个分数的形式的数,而加入虚数的复数也是偶尔会遇到的。Commons Math包中的fraction和complex包就分别提供了方法来表示这两种数。
阅读全文
摘要: 概率分布是概率论的一个基础。
在Commons Math包中也专门有一个子包对概率分布进行了封装实现。在distribution包中,定义了一个基本接口Distribution。该接口只有两个方法,一个是double cumulativeProbability(double x),一个是double cumulativeProbability(double x0, double x1)。前者对于服从某种分布的随机变量X,返回P(X<=x);后者则返回P(x0<=X<=x1)。正如其名所示,这样也就得到了概率。
阅读全文
摘要: 函数方程求解,其实是函数的零点问题,也就是说函数的曲线与X轴的交点。对于线性方程,我们可以轻易的求解,对于线性方程组,利用前面讲过的的矩阵分解方法也可以求解。那么对于函数表达的很多非线性方程的求解。我们要依赖数值算法。Commons Math包中专门有一个analysis.solver包来解决这个问题。
阅读全文
摘要: 积分可以说是最常见的了,在函数的一节中我们讲过函数的微分和给定变量求值,这里我们讲讲通过函数求积分,具体的数值积分方法和应用。什么是数值积分?在数值分析中,数值积分是计算定积分数值的方法和理论。在数学分析中,给定函数的定积分的计算不总是可行的。许多定积分不能用已知的积分公式得到精确值。数值积分是利用黎曼积分等数学定义,用数值逼近的方法近似计算给定的定积分值。借助于电子计算设备,数值积分可以快速而有效地计算复杂的积分。Commons Math中的积分包analysis.integration提供了几种数值积分的实现,UnivariateRealIntegrator接口是积分包中的基础接口,该接口继承了math包中的ConvergingAlgorithm接口。具体定义了一系列方法,其中比较主要的有double integrate(UnivariateRealFunction f, double min, double max)方法,这个方法就是通过min和max设定积分区间,通过f设定被积函数,最后返回定积分值的方法。可以看到这个接口的实现是针对单变量实函数的。多元积分的实现,目前还没有看
阅读全文
摘要: 在Commons Math中的analysis.interpolation包中有所有的与函数插值相关的类和接口定义。这一篇主要从这个包分析,来研究一下函数插值的应用。在2.1的api doc中添加了很多新的接口和类实现,但是2.0的source code里还是只有少量的实现。这里以2.0的source code为标准,辅助以2.1的api doc(其实这都是不影响的)。
插值是数学领域数值分析中的通过已知的离散数据求未知数据的过程或方法。给定n个离散数据点(称为节点)(xk,yk),k= 1,2,...,n。对于,求x所对应的y的值称为内插。f(x)为定义在区间[a,b]上的函数。x1,x2,x3...xn为[a,b]上n个互不相同的点,G为给定的某意函数类。若G上有函数g(x)满足: g(xi) = f(xi),k = 1,2,...n
则称g(x)为f(x)关于节点x1,x2,x3...xn在G上的插值函数
阅读全文
摘要: 在Commons Math中的analysis.polynomials包中有所有的与多项式函数相关的类和接口定义。这一篇主要从这个包分析,来研究一下多项式函数的应用。
阅读全文
摘要: 向量和矩阵可以说是线性代数的代表,那么返还到高等数学中,函数就是我们最常用到的单位了,还有各种微积分和其他应用,都是建立在变量、函数的基础上的。Commons Math库的下一个研读部分就是针对函数这一块。在Commons Math中也单独有一个analysis包完成这部分实现。
阅读全文
摘要: 补充上一次的矩阵知识,这次主要讲讲矩阵的一些分解运算——Matrix Decomposition:
矩阵分解主要有三种方式:LU分解,QR分解和奇异值分解。当然在Math的linear包中提供了对应的接口有CholeskyDecomposition、EigenDecomposition、LUDecomposition、QRDecomposition和SingularValueDecomposition这5种分解方式。
阅读全文
摘要: 今天来第二篇:矩阵——Matrix。
Math包org.apache.commons.math.linear里对矩阵的表示是有一个层次结构的。
最顶层的AnyMatrix是一个基本的interface。下面有3个sub interface:BigMatrix, FieldMatrix
, RealMatrix。而每个sub interface分别被相应的矩阵类实现。整个矩阵的层次结构也就出来了。不过其中的BigMatrix已经不用了。被Array2DRowFieldMatrix替代了。
阅读全文