Change Dir

先知cd——热爱生活是一切艺术的开始

统计

留言簿(18)

积分与排名

“牛”们的博客

各个公司技术

我的链接

淘宝技术

阅读排行榜

评论排行榜

Commons Math学习笔记——函数

 

看其他篇章到目录选择。

向量和矩阵可以说是线性代数的代表,那么返还到高等数学中,函数就是我们最常用到的单位了,还有各种微积分和其他应用,都是建立在变量、函数的基础上的。Commons Math库的下一个研读部分就是针对函数这一块。在Commons Math中也单独有一个analysis包完成这部分实现。

纵观analysis包中的类与接口,首先在analysis包中定义了很多函数的接口,其中主要是这几个:UnivariateRealFunction单元实函数、BivariateRealFunction双元实函数和MultivariateRealFunction多元实函数。其中单元和多元函数接口还有对应的矩阵函数和向量函数接口。单元和多元函数还有可微分变量函数子接口。总体来讲,analysis包中的接口定义覆盖了最常用的函数定义。比如UnivariateRealFunction只有一个成员方法那就是double value(double x),返回当前函数对应点的函数值。而如果是MultivariateRealFunction,那么它的value方法参数是一个double数组。对于继承了UnivariateRealFunctionDifferentiableUnivariateRealFunction又添加了一个UnivariateRealFunction derivative()方法,用来返回当前函数的导数。为此,我们主要拿这个函数作为入手,来分析一些应用。关于多元函数的补充,其实多元函数在可微性上有方向导数和梯度的概念,这个在DifferentialMultivariateRealFunction中是有定义的。所以需要用到的时候,大可放心的使用相关接口定义来实现自己的函数类。



首先就是如何定义一个自己的函数类,很简单,实现
DifferentiableUnivariateRealFunction接口就够了,然后把这两个方法实现。举例如下:

 1public class SinFunction implements DifferentiableUnivariateRealFunction {
 2
 3    /* Evaluate sinus fuction.
 4     * @see org.apache.commons.math.UnivariateRealFunction#value(double)
 5     */

 6    public double value(double x) throws FunctionEvaluationException {
 7        return Math.sin(x);
 8    }

 9
10    /* First derivative of sinus function
11     */

12    public UnivariateRealFunction derivative() {
13        return new UnivariateRealFunction() {
14            public double value(double x) throws FunctionEvaluationException {
15                return Math.cos(x);
16            }

17        }
;
18    }

19
20}

21

 

很显然,这是一个正弦函数的定义。其中它的导数返回的是余弦函数,还是正确的。

定义好函数后,对于一个函数的操作运算就是相当复杂的是事情了。这次文档只做一个关于函数的说明吧。

相关资料:

函数:http://zh.wikipedia.org/zh-cn/%E5%87%BD%E6%95%B0

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

posted on 2010-12-14 19:39 changedi 阅读(3117) 评论(0)  编辑  收藏 所属分类: 数学


只有注册用户登录后才能发表评论。


网站导航: