java函数求方程,Commons Math学习笔记——函数方程求解

看其他篇章到目录选择。

函数方程求解,其实是函数的零点问题,也就是说函数的曲线与X轴的交点。对于线性方程,我们可以轻易的求解,对于线性方程组,利用前面讲过的的矩阵分解方法也可以求解。那么对于函数表达的很多非线性方程的求解。我们要依赖数值算法。Commons Math包中专门有一个analysis.solver包来解决这个问题。

Analysis.solver包中有一个基本接口类——UnivariateRealSolver,其中定义了一系列接口方法,最重要的方法就是double solve(UnivariateRealFunction f, double min, double max)了。很明显,这个方法的参数是函数的表达式以及求解的区间范围,返回值是函数在区间内的一个零值点。

Solver包中的这些类的组织结构形式与积分中的类似,结构类图如下:

java函数求方程,Commons Math学习笔记——函数方程求解_第1张图片

具体的求解算法有很多,solver包中也实现了很多算法,包括对分法、牛顿法等。我们这里以这两个算法的实现为例,看看该如何使用这个包中的接口方法。待求解的函数仍以正弦函数为例。

1

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif/** *//**2d18c02628675d0a2c816449d98bda930.png *38f1ba5b45633e9678d1db480c16cae3f.png*/44f1150b881333f12a311ae9ef34da474.pngpackagealgorithm.math;54f1150b881333f12a311ae9ef34da474.png64f1150b881333f12a311ae9ef34da474.pngimportorg.apache.commons.math.ConvergenceException;74f1150b881333f12a311ae9ef34da474.pngimportorg.apache.commons.math.FunctionEvaluationException;84f1150b881333f12a311ae9ef34da474.pngimportorg.apache.commons.math.analysis.UnivariateRealFunction;94f1150b881333f12a311ae9ef34da474.pngimportorg.apache.commons.math.analysis.solvers.BisectionSolver;104f1150b881333f12a311ae9ef34da474.pngimportorg.apache.commons.math.analysis.solvers.UnivariateRealSolver;114f1150b881333f12a311ae9ef34da474.pngimportorg.apache.commons.math.analysis.solvers.UnivariateRealSolverFactory;12

你可能感兴趣的:(java函数求方程)