java定积分_记录一次定积分实现方法(java)
1、积分计算原理
众所周知,定积分在集合图形中的意义就是函数f(x)在某区间内的面积,由推导原理可得公式
复制代码
Δx越小越精确,无限趋于0但不可能等于0,也就是说要把函数f(x)下的面积垂直做以Δx宽的细小矩形然后累加求极限。
2、通过原理用代码实现积分过程
此方法的作用是函数f(x)以a,b为区间的封闭图形中等分的量级大小
// 微分间隔
public static double sub(double a, double b, double n) {
return (b - a) / n;
}
复制代码
此方法的作用就是在函数f(x)以a,b为区间的封闭图形中做n次等分累加运算这部分a、b分别代表积分区间上下限,n代表函数f(x)以a,b为区间的封闭图形中等分数量,也就是说等分数量越大,算出的值就越精确,i代表第几次等分累加运算。
// 微分求积
public static double differential(double a, double b, double n, int i) {
return a + i * (b - a) / n;
}
复制代码
此方法为定义被积分的函数,也就是在几何意义中曲边梯形的那条曲边函数f(x),示例函数为一条开口向上顶点为(0,0)的抛物线
// 被积函数
public static double f(double x) {
return x * x;
}
复制代码
以上三个方法都是计算积分的重要元素,现在我们把他们连起来操作一波,首先定义被积函数的上下限,这里示例对函数f(x)下的曲边梯形垂直做100000等分,通过循环累加每个小的梯形面积最终得出函数f(x)在top botm区间的近似面积和(这里只能取近似,不能像数学概念中取极限。目前不知道无穷大该怎么定义[逃])
//计算积分
private static double integral(int top, int botm) {
double sub = sub(top, botm, 100000);
double sum = 0;
for (int j = 1; j <= 100000; j++) {
double x = differential(sub, botm, 100000, j);
sum = sum + f(x);
}
return sum * sub;
}
public static void main(String[] args) {
System.out.println("x 0-5 的定积分为:" + integral(0, 5));
}
复制代码
最后通过牛莱公式手动验证,结果和通过我们的方法运行得出的近似值基本保持一致。
TODO
如何实现通过提供的函数进行积分运算
以直线方程y=kx+b为例
public static void lineEquation(int x1, int y1, int x2, int y2) {
int k, b;
k = k(x1, y1, x2, y2);
b = b(x1, y1, k);
System.out.println("y=" + k + "x+" + b);
}
//直线斜率公式
private static int k(int x1, int y1, int x2, int y2) {
return (y2 - y1) / (x2 - x1);
}
//直线截距公式
private static int b(int x, int y, int k) {
return y - k * x;
}复制代码
java定积分_记录一次定积分实现方法(java)相关推荐
- java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解决方法 java.lang.ClassNotFoundException: com.
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解决方法 java.lang.ClassNotFoundException: com.m ...
- aix系统java堆_浅谈AIX环境下的Java性能调优
1.什么是Java Java 是一种面向对象的编程语言.它以 C++ 为模型,被设计成小的.简单的.在源和二进制级别跨平台的可移植的语言,Java 程序(applets 和应用程序)可以运行于任何已经 ...
- 数据结构和算法 java实现_数据结构与算法——常用数据结构及其Java实现
前言 仿佛一下子,2017年就快过去一半了,研一马上就要成为过去式了,我打算抓住研一的尾巴,好好梳理一下数据结构与算法,毕竟这些基础知识是很重要的嘛.所以准备在这里搞一个系列的文章,以期透彻. 本系列 ...
- java 分析java死锁_有益的CountDownLatch和棘手的Java死锁
java 分析java死锁 您是否曾经使用过java.util.concurrent.CountDownLatch ? 这是在两个或多个线程之间实现同步的非常方便的类,在该类中,一个或多个线程可以等待 ...
- c语言不会可以学好java吗_不会C语言能学Java吗
不会C语言能学Java吗?当然可以,学码思不少小伙伴没有任何代码基础,来这里Java培训学的也非常不错,都获得了理想的就业.现在时代不一样了,编程语言更新换代的速度也很快,很多老程序员都是从C语言入门 ...
- 安装java环境_(一)环境安装之Java
安装java 点击 JDK8下载,根据自己的平台,选择相应的版本进行下载. 小知识: Java环境分JDK和JRE ,JDK就是Java Development Kit.简单的说JDK是面向开发人员使 ...
- cmd编译java命令_使用CMD命令编译和运行Java程序
对于初学者来说,使用CMD命令(Unix以及类Unix系统采用Termial)来编译和运行Java的好处是让初学者直观地体会到编译(Compile)这一步骤,加深记忆.所谓编译就是将文本文件xxx.j ...
- webdriver java等待_等待下载完成在selenium webdriver JAVA
亚历山大Arendar的想法的一个java适应: (使用Java 8 &谓词版本,直到FluentWait的方法) private void waitForFileDownload(int t ...
- java 微秒_现在有任何新的方法可以在Java中以微秒的...
TL;博士 Instant.now() 2018-03-09T21:03:33.831515Z 使用Java 9及更高版本,您可以使用microseconds分辨率捕获当前时刻. 上面的示例是针对ma ...
- protobuf在java中使用_记录:Protocol Buffers(protobuf)在Java开发中使用
1.编写一个.proto文件命名为:addressbook.proto,该文件内容来自protocal-buffers官网 2.使用protoc-2.6.0-win32.zip解压后的protoc.e ...
最新文章
- 抽象工厂————三层架构
- c# tcp显示服务器图片,C# TCP通迅原码(服务器与客户端相互发送文本与图片)
- java rest 序列化_http请求/restful/序列化反序列化/JSON
- python写空气质量提醒_你所在的城市空气质量如何?用Python可视化分析空气质量...
- 用jdbc连接各数据库驱动
- 加法变乘法(蓝桥杯)
- 性能测试学习05_lr(根据接口文档写脚本+参数化)
- 排序(2):直接插入排序
- [Python] Ubuntu 安装/卸载 python
- window启动过程讲解--PPT截图[张银奎]
- 如何将Node.js Streaming MapReduce引入Amazon EMR
- 连麦互动技术及其连麦调研
- linux主机使用rdesktop连接windows进行usb重定向
- 【解决方法】Socket服务端退出之后端口依旧被占用
- java开发微信第三方平台 模板消息发送消息案例
- 集成友盟第三方实现QQ微信登录遇到的坑
- Java控制无人机程序_深入了解ROS之编写无人机控制程序包
- Android super.img 镜像解包
- 柯尔特python_柯字取名的含义是什么
- 分段二次插值的matlab程序,一维优化方法之二次插值法matlab程序