java 求导函数_面向对象编程 —— java实现函数求导

文章目录首先声明一点,本文主要介绍的是面向对象(OO)的思想,顺便谈下函数式编程,而不是教你如何准确地、科学地用java求出函数在一点的导数。★引子defd(f) :defcalc(x) :dx= 0.000001 #表示无穷小的Δxreturn (f(x+dx) - f(x)) / dx #计算斜率。注意,此处引用了外层作用域的变量 freturn calc #此处用函数作为返回值(也就是...
摘要由CSDN通过智能技术生成

文章目录

首先声明一点,本文主要介绍的是面向对象(OO)的思想,顺便谈下函数式编程,而不是教你如何准确地、科学地用java求出函数在一点的导数。

★引子

defd(f) :defcalc(x) :

dx= 0.000001 #表示无穷小的Δx

return (f(x+dx) - f(x)) / dx #计算斜率。注意,此处引用了外层作用域的变量 f

return calc #此处用函数作为返回值(也就是函数 f 的导数)

# 计算二次函数 f(x) = x2 + x + 1的导数

f = lambda x : x**2 + x + 1 #先把二次函数用代码表达出来

f1 = d(f)#这个f1 就是 f 的一阶导数啦。注意,导数依然是个函数

# 计算x=3的斜率

f1(3)

# 二阶导数

f2 = d(f1)

首先,直接上一段python代码,请大家先分析下上面代码是用什么方法求导的。请不要被这段代码吓到,你无需纠结它的语法,只要明白它的求导思路。

博主说“如果不用 FP,改用 OOP,上述需求该如何实现?俺觉得吧,用 OOP 来求导,这代码写起来多半是又丑又臭。”

我将信将疑,于是就用面向对象的java试了试,最后也没多少代码。如果用java8或以后版本,代码更少。

请大家思考一个问题,如何用面向对象的思路改写这个程序。请先好好思考,尝试编个程序再继续往下看。

考虑到看到这个标题进来的同学大多是学过java的,下面我用java,用面向对象的思路一步步分析这个问题。

★求导

文章开头我已近声明过了,本文不是来讨论数学的,求导只是我用来说明面向对象的一个例子。

如果你已经忘了开头那段代码的求导思路,请回头再看看,看看用python是如何求导的。

相信你只要听说过求导,肯定一眼就看出开头那段代码是用导数定义求导的。

9bc60ce2f5d0cc8855431744bb6b5105.png

代码中只是将无穷小Δx粗略地算做一个较小的值0.000001。

★最初的想法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值