【mathematical-expression】让计算机认识 数学函数
在计算机中,我们如果想要让数学中的函数,能够像编程中的函数一样发挥作用,这是比较麻烦的一种操作,例如 1 + f(20) + 3
这个数学表达式中,针对函数的提取与解析等需求,但是在这里,我们将会为大家演示一种操作,能够有效的避免繁琐的开发。
目录
文章目录
- 【mathematical-expression】让计算机认识 数学函数
- 目录
- 引入三方库
- 实际使用案例
- 数学方式的函数注册与计算
- 匿名实现的函数注册于计算
引入三方库
<dependency>
<groupId>io.github.BeardedManZhao</groupId>
<artifactId>mathematical-expression</artifactId>
<version>1.3.1</version>
</dependency>
实际使用案例
我们有一个需求,实现一个求平方函数f(x)
并且使用一个数学表达式 1 + f(20) + 3
测试这个函数是否可以正常工作。
数学方式的函数注册与计算
package top.lingyuzhao;
import core.Mathematical_Expression;
import core.calculation.Calculation;
import core.calculation.function.FunctionPackage;
import exceptional.WrongFormat;
public class MAIN {
public static void main(String[] args) throws WrongFormat {
// 将 f 函数注册进来
Mathematical_Expression.register_function("f(x) = x * x");
// 准备要计算的表达式
final String data = "1 + f(20) + 3";
// 获取到计算组件
final Calculation instance = Mathematical_Expression.getInstance(Mathematical_Expression.functionFormulaCalculation2);
// 检查与计算
instance.check(data);
System.out.println(instance.calculation(data));
}
}
下面就是计算结果
CalculationNumberResults{result=404.0, source='BracketsCalculation2'}
匿名实现的函数注册于计算
package top.lingyuzhao;
import core.Mathematical_Expression;
import core.calculation.Calculation;
import core.calculation.function.FunctionPackage;
import core.calculation.function.ManyToOneNumberFunction;
import exceptional.WrongFormat;
public class MAIN {
public static void main(String[] args) throws WrongFormat {
// 将 f 函数注册进来
Mathematical_Expression.register_function(new ManyToOneNumberFunction("f") {
@Override
public double run(double... numbers) {
return numbers[0] * numbers[0];
}
});
// 准备要计算的表达式
final String data = "1 + f(20) + 3";
// 获取到计算组件
final Calculation instance = Mathematical_Expression.getInstance(Mathematical_Expression.functionFormulaCalculation2);
// 检查与计算
instance.check(data);
System.out.println(instance.calculation(data));
}
}
下面就是计算结果
CalculationNumberResults{result=404.0, source='BracketsCalculation2'}