利用java求积分(定积分和无穷限积分)

【0】README
0.1)本文部分文字描述转自或译自 https://en.wikipedia.org/wiki/Simpson%27s_rule和 https://en.wikipedia.org/wiki/Numerical_integration#Methods_for_one-dimensional_integrals;旨在利用java求积分;(定积分和无穷限积分)
0.2)you can also refer to this link for source code: https://github.com/pacosonTang/postgraduate-research/tree/master/integration
0.3)o m g. CSDN编辑器掉链子,无法正常显示source code, 大家凑合着看吧。oh.

【1】求定积分
1)intro:由 wikepedia 上关于 辛普森法的intro 以及 《高等数学第6版上册同济版》p229 关于定积分的近似计算中提到的辛普森法,本文求定积分的方法采用了辛普森近似法;
2)下面引用《高等数学第6版上册同济版》p229 关于辛普森法的描述


3)计算函数定积分的源代码如下:
// compute the numeric integration.
public class Integration {public Integration(){}// apply simpson rule to approximately compute the integration. public double simpsonRule(double upper, double lower, int n, Function df) {double result = 0;double unit = (upper-lower)/n;double factor1 = unit / 3;double[] x = new double[n+1];for (int i = 0; i < x.length; i++) {x[i] = lower + unit*i;}for (int i = 0; i < x.length; i++) {if(i==0 || i==x.length-1) {result += df.fun(x[i]);}else if(i%2 == 0) { // if i is even num.result += 2*df.fun(x[i]);}else { // if i is odd num.  result += 4*df.fun(x[i]);}}				result *= factor1;return result;}// compute the standard normal distribution integration// refer to the integration table in p382 of "probability and statistics" from ZheJiang University.public double stdGaussValue(double realUpper) {Integration integration = new Integration();double upper = 1.0;double lower = 0.0;int n = 200; // splited into 200 subintervals.// double realUpper = 0.03;if(realUpper >= 5.0) {return 1.0;}double result = integration.simpsonRule(upper, lower, n, new Function() {@Overridepublic double fun(double x) {if(x==0) {return 0;}double t =  realUpper-(1-x)/x;return Math.pow(Math.E, -0.5*t*t) / (x*x);			}});result /= Math.pow(2*Math.PI, 0.5);result = new BigDecimal(result).setScale(6, RoundingMode.HALF_UP).doubleValue(); // save 6 decimal places.return result;}
}
public class IntegrationTest { //test case.public static void main(String[] args) {Integration integration = new Integration();double result = integration.stdGaussValue(4.42);System.out.println(result);}public static void main3(String[] args) {Integration integration = new Integration();double upper = 1.0;double lower = 0.0;int n = 50;double realUpper = 0.39;double result = integration.simpsonRule(upper, lower, n, new Function() {@Overridepublic double fun(double x) {if(x==0) {return 0;}double t =  realUpper-(1-x)/x;return Math.pow(Math.E, -0.5*t*t) / (x*x);			}});result /= Math.pow(2*Math.PI, 0.5);result = new BigDecimal(result).setScale(4, RoundingMode.HALF_UP).doubleValue();		System.out.println(result);}public static void main2(String[] args) {Integration integration = new Integration();double upper = 1.0;double lower = 0.0;int n = 10;double result = integration.simpsonRule(upper, lower, n, new Function() {@Overridepublic double fun(double x) {return Math.pow(Math.E, -x*x/2);			}});result /= Math.pow(2*Math.PI, 0.5);System.out.println(result);BigDecimal decimal = new BigDecimal(result).setScale(4, RoundingMode.HALF_UP);result = Double.valueOf(decimal.toString());System.out.println(result);}public static void main1(String[] args) {Integration integration = new Integration();double upper = 1.0;double lower = 0;int n = 10;double result = integration.simpsonRule(upper, lower, n, new Function() {@Overridepublic double fun(double x) {return 4 / (1+Math.pow(x,2.0));			}});System.out.println(result);}
}


Attention)
A1)以上测试用例中涉及到的积分函数来自 《高等数学第6版上册同济版》p230的例2;
A2)定积分表达式为

【2】求无穷限积分(本文以求标准正态分布的无穷下限反常积分为例)
1)求无穷限积分是基于定积分的;如何求定积分,本文在章节【1】中已经讲了;


2)所以标准正态分布的无穷下限反常积分函数可转化为:


3)计算标准正态分布无穷下限积分的测试用例如上所示。
Attention)
A1)上述求标准正态分布无穷下限积分的代码对realUpper 有要求,小于等于5.0;因为当realUpper>5的话,其value=1了;
A2)需要求标准正态分布的下限积分时,强烈建议使用 integration.stdGaussValue() 其精度要高些。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java的三种代理模式

转载自 Java的三种代理模式1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的…

后台审核管理 ergo_Kogito,ergo规则:从知识到服务,轻松自如

后台审核管理 ergo欢迎阅读有关Kogito倡议的博客系列的另一集&#xff0c;以及我们将Drools带入云的努力。 这些文章的目的是收集用户对我们提供给Kogito的功能的早期反馈。 在本文中&#xff0c;我们介绍了两种实现完整智能服务的新方法 &#xff1a; 独立的规则服务 集成智…

java转换文本文件到xlsx(自制缓冲区,无需先验文件行数)

【0】README0.1&#xff09;本文代码利用了 Apache POI 框架 建立 java 到 xlsx 代码的联系&#xff1b;0.2&#xff09;本文自制缓冲区从文本文件中读取数据读取&#xff0c;无需先验文件行数&#xff1b;0.3&#xff09;本文通过缓冲区大小创建数组&#xff0c;数组容量自动增…

spring react_使用Spring WebFlux构建React性REST API –第3部分

spring react在上一篇文章的续篇中&#xff0c;我们将看到一个应用程序以公开React性REST API。 在此应用程序中&#xff0c;我们使用了 带有WebFlux的Spring Boot 具有响应式支持的Cassandra的Spring数据 卡桑德拉数据库 下面是应用程序的高级体系结构。 让我们看一下bui…

tomcat(12)org.apache.catalina.core.StandardContext源码剖析

【0】README0&#xff09;本文部分文字描述转自 “how tomcat works”&#xff0c;旨在学习 “tomcat(12)StandardContext源码剖析” 的基础知识&#xff1b;1&#xff09;Context实例表示一个具体的web 应用程序&#xff0c;其中包含一个或多个Wrapper实例&#xff0c;每个Wra…

jms面试题_最新的20多个JMS面试问答(2020)

jms面试题快速浏览JMS&#xff08;Java消息服务&#xff09;常见问题面试问题和答案。 2020年以来的最新问题已添加到列表中。 1.简介 在本教程中&#xff0c;我们将了解2020年经常问到的JMS面试问题。作为面试的一部分&#xff0c;如果您有6年以上的经验&#xff0c;就有机会…

tomcat(13)Host和Engine容器

【0】README0.1&#xff09;本文部分文字描述转自 “how tomcat works”&#xff0c;旨在学习 “tomcat(13)Host和Engine容器” 的基础知识&#xff1b;0.2&#xff09;Host容器&#xff1a;若你想在同一个tomcat部署 上运行多个Context 容器的话&#xff0c;就需要使用 Host 容…

spring react_使用Spring WebFlux构建React性REST API –第2部分

spring react在上一篇文章的续篇中&#xff0c;我们将看到React式流规范及其实现之一&#xff0c;称为Project Reactor 。 React流规范定义了以下接口。 让我们看看这些接口的细节。 发布者→发布者是潜在数量不受限制的序列元素的提供者&#xff0c;可按其订阅者的要求发布它…

tomcat(14)服务器组件和服务组件

【0】README0.1&#xff09;本文部分文字描述转自 “how tomcat works”&#xff0c;旨在学习 “tomcat(14)服务器组件和服务组件” 的基础知识&#xff1b;0.2&#xff09;for complete source code ,please visit https://github.com/pacosonTang/HowTomcatWorks/tree/maste…

组合模式的安全模式与透明模式

转载自 树形结构的处理——组合模式&#xff08;四&#xff09; 1 透明组合模式与安全组合模式 通过引入组合模式&#xff0c;Sunny公司设计的杀毒软件具有良好的可扩展性&#xff0c;在增加新的文件类型时&#xff0c;无须修改现有类库代码&#xff0c;只需增加一个新的文件类…

spring react_使用Spring WebFlux构建React性REST API –第1部分

spring react在本文中&#xff0c;我们将看到如何使用Spring WebFlux构建响应式REST API。 在进入React式API之前&#xff0c;让我们看看系统是如何发展的&#xff0c;传统REST实现遇到的问题以及现代API的需求。 如果您查看从旧版系统到下文所述的现代系统的期望&#xff0c;…

tomcat(15)Digester库

【0】README0.1&#xff09;本文部分文字描述转自 “how tomcat works”&#xff0c;旨在学习 “tomcat(15)Digester库” 的基础知识&#xff1b;2&#xff09;problemsolution&#xff1a;2.1&#xff09;problem&#xff1a;如下面的代码&#xff0c;Bootstrap类实例化连接器…

api restful_HATEOAS的RESTful服务。 记录超媒体API

api restful1.简介 希望本教程的前一部分不仅揭示了超媒体和HATEOAS的深远意义&#xff0c;而且使我们确信这些都是RESTful Web服务和API的基本构建模块。 在这一部分中&#xff0c;我们将继续侧重于文档方面&#xff0c;以解决如何预先传递Web服务或API功能的问题。 目录 1.…

模版方法模式

转载自 23种设计模式&#xff08;6&#xff09;&#xff1a;模版方法模式定义&#xff1a;定义一个操作中算法的框架&#xff0c;而将一些步骤延迟到子类中&#xff0c;使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。 类型&#xff1a;行为类模式 类图&#…

java并发编程实践(1)intro

【0】README0.1&#xff09;本文部分文字描述转自“java并发编程实践”&#xff0c;旨在学习“java并发编程实践(1)intro”的相关知识&#xff1b;【3】线程带来的风险【3.1】安全性问题1&#xff09;intro&#xff1a;在没有充足同步的case下&#xff0c;多个线程的操作执行顺…

读入的字节都写入字节数组中_使用Java将文件读入字节数组的7个示例

读入的字节都写入字节数组中嗨&#xff0c;大家好&#xff0c;Java程序员经常在现实世界中遇到编程问题&#xff0c;他们需要将文件中的数据加载到字节数组中&#xff0c;该文件可以是文本文件或二进制文件。 一个示例是将文件的内容转换为String以显示。 不幸的是&#xff0c;…

迭代子模式

转载自 《JAVA与模式》之迭代子模式 在阎宏博士的《JAVA与模式》一书中开头是这样描述迭代子&#xff08;Iterator&#xff09;模式的&#xff1a; 迭代子模式又叫游标(Cursor)模式&#xff0c;是对象的行为模式。迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部…

java并发编程实践(2)线程安全性

【0】README 0.0&#xff09;本文部分文字描述转自&#xff1a;“java并发编程实战”&#xff0c; 旨在学习“java并发编程实践(2)线程安全性” 的相关知识&#xff1b;0.1&#xff09;几个术语&#xff08;terms&#xff09;t1&#xff09;对象的状态&#xff1a;是指存储在状…

自动配置jdk_JDK 15中自动自动发送更好的NullPointerException消息

自动配置jdk我讨论了期待已久的和高度赞赏改进的NullPointerException &#xff08; NPE在帖&#xff09;消息“ 更好的默认NullPointerException异常消息即将到Java&#xff1f; ”和“ JDK 14中更好的NPE消息 ”。 当此JEP 358驱动的功能添加到JDK 14中时 &#xff0c;想要从…

tomat(16)关闭钩子

【0】REAMDE0&#xff09;本文部分文字描述转自&#xff1a;“how tomcat works”&#xff0c;旨在学习“tomat(16)关闭钩子”的相关知识&#xff1b;1&#xff09;problemsolution&#xff1a;1.1&#xff09;problem&#xff1a;在很多实际环境中&#xff0c;当用户关闭应用程…