必威体育Betway必威体育官网
当前位置:首页 > IT技术

【计算方法】数值积分

时间:2019-08-01 00:11:05来源:IT技术作者:seo实验室小编阅读:71次「手机版」
 

数值积分

1.在高等数学中,积分一直是我们的重点。学过一重积分,二重积分,三重积分,分别几何中对应着线、面、体。用计算机去求解数值积分则是另一种思想,之前和付老师聊过,关于数学模型的问题,那是读吴军《智能革命》时遇到他写的用数据去建立一个数学模型,当时自己的疑问就是这个数学模型是不是一个映射,他能根据输入的数据x–映射–输出的y。后来付老师说了很多,至今只有一点还是清楚的:现实世界是连续的,计算机是离散的,而显示出来的数据需要是连续的,两两者之间就存在转化关系。

2.今天学到的计算方法中数值积分就是将联系的转换成离散的计算然后再连续累加。

3.积分的本质是无穷小的和–曾几何时看到一本书写的,很受启发,一直记得。后来和老师谈起,他还不相信,摇头说我错了。旁边的好盆友说那应该是有限个无穷小吧,当时经过脑子就直接认同,回来查看自己的数学课本(又像个无穷小仍然是无穷小)。对这些东西有进一步了解深刻。


【问题对象】

这里写图片描述

【理论基础】

这里写图片描述

【收敛条件】

这里写图片描述

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define ex 0.5*pow(10,-5)
#define N 20
/******************************************
*数值积分
* 用复化梯形积分和变步长梯形积分求
*被积函数 : 1/(x*x +1)  积分区间 : [0,1]
******************************************/
//被积函数
double f(double x) {
     return 1 / (x * x + 1);
}

/*******************************
*复化梯形积分方法求解
********************************/
double method1(double h,double a, double b) {
     double T = 0; 
     for (int k = 1; k < N; k++) {
      T += f(a + k * h);
     }
     T= (h / 2) * (f(a) + 2*T + f(b));
     return T;
}
/*******************************************
*变步长求解梯形积分
*********************************************/
double method2(double h, double a, double b) {
     double T1 = (f(a) + f(b))*h/2;
     double T2 = 0;
     double x;
     int k = 1;
     do {
      double s = 0;
      x = a + h /2;
      //计算f(X k+ 1/2)
      do {
       s += f(x);
       x += h;
      }while(x < b);
      T2 = (T1 + h * s) / 2;
      printf("第 %d 次    T1 = %4lf------T2 = %4lf\n",k++, T1, T2);
      if (fabs(T2 - T1) < ex) {
       break;
      } else {
       T1 = T2;
       h /= 2;  //再次二分区间
      }
     }while(1);
     return T2;
}
//辛普森求解
double Simpton(double h, double a, double b) {
     double x = a + h / 2;
     double s1 = f(x);
     double s2 = 0;
     for (int i = 1; i < N; i++) {
      s1 += f(a + i * h + h / 2 );
      s2 += f(a + i * h);
     }
     s2 = h * (f(a) + 4 * s1 + 2 * s2 + f(b)) / 6;
     return s2;
}

int main() 
{
     double result = 0;
     double a = 0;
     double b = 1;
     double h = (b - a) / N;
     //1.调用复化梯形积分求解
     result = method1(h, a, b);
     printf("复化梯形积分求解答案 : %lf\n",result);

     //2.等步长
     result = method2(h, a, b);
     printf("等步长积分求解答案 : %lf\n", result);
     //复化辛普森
     result = Simpton(h, a, b);
     printf("复化辛普森求解答案 : %lf\n", result);
     return 0;
}

【求解结果】

这里写图片描述

相关阅读

最详细的动态评分计算方法(附DSR计算公式解析)

大家知道,淘宝店铺动态评分不仅影响着一个店铺的搜索排名情况,而且还会直接影响消费者购买欲望,如果评分太差,那还有客户敢购买吗?所

介绍一种更精确的用户流失率计算方法

在如今的互联网时代下, 竞争越来越激烈,获客成本不断攀升。 很多企业将更多的精力和成本投入到用户留存上。 然而,作为衡量客户留存

等额本金,等额本息,随借随还,利随本清,按月付息到期还本,5

等额本金,等额本息,随借随还,利随本清,按月付息到期还本,5种还款方式java计算方法等额本息定义:本金逐月递增,利息逐月递减,月还款数不变

计算机系统可靠性(串并联)计算方法

  题目:设一个系统由三个相同子系统并联构成,子系统的可靠性为0. 9,平均无故障时间为10000小时,则系统可靠性为(2)和平均无故障时间

员工病假 薪资计算方法及详细规定

病假期间由于员工不上班,因此其工资并非按实计发,而是按照“日工资×病假工资比例×病假天数”的公式来发放。日工资并非完全是员工

分享到:

栏目导航

推荐阅读

热门阅读