数值计算,利用梯形法和抛物线法计算圆周率

公式pai=4*∫10dx/(1+x2)

把[0.1]分成10等份,用两中方法分别计算

=======================================================

class work2 {   public static void main (String args[]){   double h = 0.1;//参数h   double m1 =0 ;//复化梯形求和求和   double n =10;   double I=0;//最后结果   double H_2 =0.2;   double m =5 ;//由于n=2m.n=10,所以m=5   double s1=0;//复化抛物线第一个数组求和   double s2=0;//复化抛物线第二个数组求和   double ss[]  = new double[10];//复化梯形公式计算中的求和单元   double ss1[]=new double[5];//复化抛物线中用到的第一个数组   double ss2[]=new double[4];//复化抛物线中用到的第二个数组

   double k[]={0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9};//10等分[0,1]   for(int i=0;i<10;i++){       ss[i] = 1/(1+k[i]*k[i]);     }     //teat pass     for(int i =0;i<10;i++){       m1 = m1 +ss[i];     }     //test pass     I = H_2*(0.5+2*m1);//0.5是f(b)

// --------------------test code     System.out.println("===复化梯形公式计算(包含测试及结果)===");     System.out.println("复化梯形公式单项结果");     for(int i =0;i<10;i++){       System.out.println(ss[i]);

     }     System.out.println("结果求和 m is "+ m1);     System.out.println("结果是 "+ I);     System.out.println("==================================");// ------------------------------------------------     //==开始复化抛物线公式计算======     System.out.println("复化抛物线公式计算");     //由于抛物线运算对数组的操作比较复杂,所以我重新定义数组k[]     double k_2[] = {0,0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9};     //这样数组k就和实际中的对应起来了,哦哈哈          for(int i =1;i<=m;i++){      int n1 = 2*i-1;      ss1[i-1] = 1/(1+k_2[n1]*k_2[n1]);            System.out.println(ss1[i-1]);//测试计算是否正确,     }     System.out.println("运算正确");     System.out.println("第二个数组计算");     for(int i = 1;i<=(m-1);i++){      int n1 = 2*i;      ss2[i-1]=1/(1+k_2[n1]*k_2[n1]);      System.out.println(ss2[i-1]);//测试计算是否正确,     }     System.out.println("运算正确");     //对2个数组求和     for(int i =0;i<5;i++){        s1 = s1 +ss1[i];      }     System.out.println("ss1求和是"+ s1);     for(int i =0;i<4;i++){        s2 = s2 +ss2[i];      }     System.out.println("ss2求和是"+ s2);     System.out.println("运算正确");     I = (h/3)*(1+0.5+4*s1+2*s2);     System.out.println("结果是 "+ I);     //抛物线法不知道正不正确,书上没有答案          }   } ===========================================

时间: 2024-08-01 19:14:19

数值计算,利用梯形法和抛物线法计算圆周率的相关文章

cpu-求一个能计算圆周率的程序的源代码

问题描述 求一个能计算圆周率的程序的源代码 求一个能计算圆周率的程序的源代码,要求如下: 语言不限,要能计算精确度在100万位以上 要求计算100万位花费的时间(以Pentium 4 3.0GHz CPU为基准),不大于1分钟 计算结果可以保存在外部文件中 计算结果必须是十进制的 解决方案 计算结果可以保存在外部文件中 這樣寫文件比較慢.

c语言 计算圆周率π 的值

问题描述 c语言 计算圆周率π 的值 对于正整数n,在原点为圆心的一个半径n的圆盘内(包括圆周内的点)的整数格子点的个数设为C(n),n →∞的时候C(n) / n2接近圆周率.基于这个求圆周率的近似值输入一个n,C(n) / n2做为double型输出,C(n)为long型 [入力]正整数 n 1つ. [出力] n と C(n) / n2 とを,書式を ""%d:%.15f "" として書き出せ. [例]输入例1000 输出例1000:3.141549000000

语言-求一个能计算圆周率的程序的源代码

问题描述 求一个能计算圆周率的程序的源代码 求一个能计算圆周率的程序的源代码,要求如下:语言不限,要能计算精确度在100万位以上要求计算100万位花费的时间(以Pentium 4 3.0GHz CPU为基准),不大于1分钟计算结果可以保存在外部文件中计算结果必须是十进制的 解决方案 参考GPi--使用GPU计算圆周率GPi是一款免费的.基于OpenCL的圆周率计算工具,可用于GPU性能测试,支持nVidia.AMD.Intel等厂商GPU.CPU.GPi可充分利用GPU强大的并行计算能力,使用主

Java实现利用广度优先遍历(BFS)计算最短路径的方法_java

本文实例讲述了Java实现利用广度优先遍历(BFS)计算最短路径的方法.分享给大家供大家参考.具体分析如下: 我们用字符串代表图的顶点(vertax),来模拟学校中Classroom, Square, Toilet, Canteen, South Gate, North Gate几个地点,然后计算任意两点之间的最短路径. 如下图所示: 如,我想从North Gate去Canteen, 程序的输出结果应为: BFS: From [North Gate] to [Canteen]: North Ga

利用排序规则特点计算汉字笔划和取得拼音首字母

汉字|排序|拼音 SQL SERVER的排序规则平时使用不是很多,也许不少初学者还比较陌生,但有一个错误大家应是经常碰到: SQL SERVER数据库,在跨库多表连接查询时,若两数据库默认字符集不同,系统就会返回这样的错误:                   "无法解决 equal to 操作的排序规则冲突." 一.错误分析: 这个错误是因为排序规则不一致造成的,我们做个测试,比如:create table #t1(name varchar(20) collate Albanian_

Excel利用“选择性粘贴”进行计算

  Excel在工作中的应用非常广泛,今天我们介绍一个比较特别的使用技巧:"选择性粘贴"中的"运算". 考试成绩出来了,但在利用Excel进行统算时遇到了一点小麻烦,原因是物理和化学试卷满分各为100分,但领导要求与中考统一(本地区中考物理满分为80分,化学为70分),也就是需要分别折成80%和70%,但在H2单元格中输入=H2*0.8回车后出现"不能计算该公式.公式中的单元格引用指向的是公式结果,从而造成循环引用.--"的错误提示,如图1. 图

构建小型集群根据需要利用仓库规模(warehouse-scale)计算

该方法允许架构师在本地完成构建,以便提供预期的工作负载,并溢出到按需云 HPC 来应对峰值负载.第 1 部分重点介绍系统构建者和 HPC 应用程序开发人员如何最高效地扩展您的系统和应用程序. 具有自定义扩展的处理器核心和共享的内存互联网络的外来 HPC 架构正迅速被按需集群所取代,这些集群利用了现成的一般用途向量协同处理器.融合的以太网(每个链路 40 Gbit/s 或更高速度)和多核无头(headless )服务器.这些新的按需云 HPC 资源类似于所谓的仓库规模计算(warehouse-sc

利用Java中Calendar计算两个日期之间的天数和周数_java

前言 究竟什么是一个 Calendar 呢?中文的翻译就是日历,那我们立刻可以想到我们生活中有阳(公)历.阴(农)历之分.它们的区别在哪呢? 比如有: 月份的定义 - 阳`(公)历 一年12 个月,每个月的天数各不同:阴(农)历,每个月固定28天 每周的第一天 - 阳(公)历星期日是第一天:阴(农)历,星期一是第一天 实际上,在历史上有着许多种纪元的方法.它们的差异实在太大了,比如说一个人的生日是"八月八日" 那么一种可能是阳(公)历的八月八日,但也可以是阴(农)历的日期.所以为了计时

java使用Rxjava计算圆周率例子

对于圆周率率的求法有很多,最近看到一个Spark的例子使用了map和reduce的方法来求一个圆周率的近似值.这个算法的思想是这样的: 半径为r的圆的面积CA = π × r × r 这个园的外切正方形的面积SA = 4 × r × r π = CA / r / r = CA × 4 / SA 根据上面的推导,我们只要知道圆形和正方形的面积之比就行了.然后我们在这个正方形的面积内随机生成足够多的点,用落在圆内的点数除以总的点数就可以得到一个近似的比值了.当然随机值的数目越多,得到的结果就会越精确