网上找到的高斯勒让德求积公式一般都是最高4个插值点,正好这次做项目需要高一点的精度就写了这个程序。最高可以到8个插值点,并且插值点个数可以选择。

刚开始学习写程序,感觉这个" if "写的有点啰嗦但是自己也不知道怎么改,就先将就看吧。

//==========================
//*Gauss-Legendre求积公式
//==========================
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include<string>
#include<iomanip>
using namespace std;int i;         //计数点
int n;         //插值点个数
double a, b;   //积分上下限
long double x, t;   //自变量
long double jfz, sum;    //
long double x1, x2, x3, x4, x5, x6, x7, x8, x9; //插值点
long double A1, A2, A3, A4, A5, A6, A7, A8, A9; // 求积系数
const long double e = 2.718281828459;   //常数e
const long double pi = 3.1415926535898;void main()
{cout << "请输入积分下限" << endl;cin >> a;cout << endl;cout << "请输入积分上限" << endl;cin >> b;cout << endl;cout << "请输入插值点个数" << endl;cin >> n;if (n == 1){x1 = 0;x2 = 0;x3 = 0;x4 = 0;x5 = 0;x6 = 0;x7 = 0;x8 = 0;A1 = 2;A2 = 0;A3 = 0;A4 = 0;A5 = 0;A6 = 0;A7 = 0;A8 = 0;}if (n == 2){x1 = -0.5773502692;x2 = +0.5773502692;x3 =  0;x4 =  0;x5 =  0;x6 =  0;x7 =  0;x8 =  0;A1 =  1;A2 =  1;A3 =  0;A4 =  0;A5 =  0;A6 =  0;A7 =  0;A8 =  0;}if (n == 3){x1 = -0.7745966692;x2 =  0;x3 = +0.7745966692;x4 =  0;x5 =  0;x6 =  0;x7 =  0;x8 =  0;A1 =  0.5555555556;A2 =  0.8888888889;A3 =  0.5555555556;A4 =  0;A5 =  0;A6 =  0;A7 =  0;A8 =  0;}if (n == 4){x1 = -0.8611363116;x2 = -0.3399810436;x3 = +0.3399810436;x4 = +0.8611363116;x5 =  0;x6 =  0;x7 =  0;x8 =  0;A1 =  0.3478548451;A2 =  0.6521451549;A3 =  0.6521451549;A4 =  0.3478548451;A5 =  0;A6 =  0;A7 =  0;A8 =  0;}if (n == 5){x1 = -0.9061798459;x2 = -0.5384693101;x3 =  0;x4 = +0.5384693101;x5 = +0.9061798459;x6 =  0;x7 =  0;x8 =  0;A1 =  0.2369268851;A2 =  0.4786286705;A3 =  0.5688888889;A4 =  0.4786286705;A5 =  0.2369268851;A6 =  0;A7 =  0;A8 =  0;}if (n == 6){x1 = -0.9324695142;x2 = -0.6612093865;x3 = -0.2386191861;x4 = +0.2386191861;x5 = +0.6612093865;x6 = +0.9324695142;x7 =  0;x8 =  0;A1 =  0.1713244924;A2 =  0.3607615730;A3 =  0.4679139346;A4 =  0.4679139346;A5 =  0.3607615730;A6 =  0.1713244924;A7 =  0;A8 =  0;}if (n == 7){x1 = -0.9491079123;x2 = -0.7415311856;x3 = -0.4058451514;x4 =  0;x5 = +0.4058451514;x6 = +0.7415311856;x7 = +0.9491079123;x8 =  0;A1 =  0.1294849662;A2 =  0.2797053915;A3 =  0.3818300505;A4 =  0.4179591837;A5 =  0.3818300505;A6 =  0.2797053915;A7 =  0.1294849662;A8 =  0;}if (n == 8){x1 = -0.9602898565;x2 = -0.7966664774;x3 = -0.5255324099;   x4 = -0.1834346425;x5 = +0.1834346425;x6 = +0.5255324099;   x7 = +0.7966664774;x8 = +0.9602898565;A1 =  0.1012285363;A2 =  0.2223810345;A3 =  0.3137066459;A4 =  0.3626837834;A5 =  0.3626837834;A6 =  0.3137066459;A7 =  0.2223810345;A8 =  0.1012285363;}long double X[9];X[0] = x1, X[1] = x1, X[2] = x2, X[3] = x3, X[4] = x4, X[5] = x5, X[6] = x6, X[7] = x7, X[8] = x8;long double A[9];A[0] = 0, A[1] = A1, A[2] = A2, A[3] = A3, A[4] = A4, A[5] = A5, A[6] = A6, A[7] = A7, A[8] = A8;long double sum[9];double func1;for (i = 0; i < 9; i++){x = X[i];t = (a + b) / 2 + x * (b - a) / 2;           //转换积分区间到到【-1,1】上func1 = exp(-0.001*0.05*0.5*0.03*(sin(t) - sin(0.1)))*cos(t)*cos(t);        //在此处输入被积函数 sum[i] = A[i] * func1;}jfz = ( sum[1] + sum[2] + sum[3] + sum[4] + sum[5] + sum[6] + sum[7] + sum[8] ) * (b - a) / 2;cout << fixed << setprecision(10) << endl;cout << "该积分的积分值为:" << " " << jfz << endl;system("pause");}

Gauss-Legendre求积公式-高斯型积分公式相关推荐

  1. matlab高斯型隶属函数,图高斯型隶属函数.PPT

    图高斯型隶属函数 第三章 模糊控制的理论基础 第一节 概述 第二节 模糊集合 第三节 隶属函数 第四节 模糊关系 第五节 模糊推理 在模糊控制中应用较多的隶属函数有以下6种隶属函数. (1)高斯型隶属 ...

  2. 初等数论--二次剩余与二次同余方程--勒让德符号Legendre,高斯引理,雅可比符号Jacobi symbol

    初等数论--二次剩余与二次同余方程--勒让德符号Legendre,高斯引理,雅可比符号Jacobi symbol 勒让德符号Legendre 高斯引理 雅可比符号Jacobi symbol 博主是初学 ...

  3. 模糊控制之高斯型隶属度函数(博途PLC SCL篇)

    在工程上用的较多的,五种基本隶属度函数分别是:三角形,钟形,高斯型,梯形,和Sigmoid型.这篇博文主要讲解高斯型隶属度函数解析式,和其博途PLC SCL实现代码.三角形隶属函数的详细讲解可以参看下 ...

  4. 高斯型数值积分公式的Python程序

    from sympy import *def f(t):f = 2000*log(140000/(140000-2100*t))-9.8*treturn fa = 8 b = 30 x = symbo ...

  5. 高斯型随机粗糙面MATLAB仿真

    一.概要 一般可认为随机粗糙表面高度可由许多不同频率的谐波叠加而成,因此可采用线性滤波法来生成随机粗糙面:先在频域谱进行滤波,然后进行逆傅里叶变换得到粗糙面高度,来生成模拟随机粗糙面模型.本文将基于上 ...

  6. Gauss型(Gaussian quadrature)求积公式和方法

    目录 0.Gauss型积分通用形式 1.Gauss–Legendre quadrature勒让德 2.Gauss–Laguerre quadrature拉盖尔--积分区间[0,inf] 3.Cheby ...

  7. 数值分析——求积公式

    目录 求积公式的一般形式 求积公式的代数精度 插值型求积公式 Newton-Cotes求积公式 复化求积公式 复化梯形公式 复化Simpson公式 复化求积公式优缺点 变步长法(区间逐次分半法) 高斯 ...

  8. 数值分析——数值积分(Newton-Cotes、复化求积、Gauss求积、正交多项式Gauss)

    数值分析-数值积分 前言 敲黑板 牛顿-莱布尼兹公式的局限性 常见的近似求法 代数精度 插值型求积公式 Newton-Cotes公式 复化求积 Gauss 求积公式 基于正交多项式的Gauss求积公式 ...

  9. 数据积分-牛顿科茨法与高斯勒让德法对比及示例

    在结点xi上插值f的次数最多是n次的多项式 p(x)=∑f(xi)li(x) 拉格朗日插值多项式: li(x)= ∏(x-xj)/(xi-xj) 基于插值的数值积分: ∫f(x)dx≈∫p(x)dx= ...

  10. 高斯-勒让德求积分的Python程序

    理论知识: 勒让德多项式及性质 第四节 高斯(Gauss)求积公式 高斯-勒让德求积公式及Matlab实现 目标函数求积区间为[-1,1]时 代码: #高斯-勒让德求积公式 from sympy im ...

最新文章

  1. R语言使用forestplot包绘制森林图:编码创建森林图仿真数据、汇总线修改、元素位置调整、垂直线、字体、风格、置信区间、线型、图例、刻度、标签等
  2. DevExpress v15.1:WPF控件升级(四)
  3. poj 2109 Power of Cryptography
  4. 企业网络推广方案分享如何针对大量的长尾词进行更好地优化方法!
  5. “Hello,Jetpack”:构建您的第一个Jetpack应用程序
  6. 创建Unicode格式的INI文件
  7. 使用await和async关键字开发nodejs应用批量取出简书网站的文章标题和超链接
  8. leetcode279. 完全平方数
  9. mysql linux附加数据库文件夹,Linux全攻略--MySQL数据库配置与管理
  10. 一次性搭建Hadoop高可用集群
  11. WorkSbell第10周2017
  12. XJOI 3864 农村连接城市
  13. 实例变量,局部变量,全局变量,静态全局变量。
  14. 用scanf输入long long 型的数
  15. vue 引入qunee_(原创) 工作流程图的树形展示-使用qunee插件实现
  16. 在Linux中使用7zip/7zz
  17. 计算机专业考研复试个人简介ppt,蓝色简约考研复试个人简历通用ppt.pptx
  18. Oracle官网 JDK下载 注册登录公共账号和密码
  19. 2021 SNEC圆满落幕,新视智科携光伏玻璃智能检测解决方案闪耀申城
  20. 【Swift 和 OC】

热门文章

  1. 【题解】2019,7.14 模拟赛(阿鲁巴)
  2. qt多级菜单_Qt高仿电脑管家界面(二):点击按钮弹出菜单
  3. Sony索尼HLG灰片电影调色LUT预设合集 HLG CINEMATIC LUTPACK BUNDLE
  4. 股市中上涨下跌天数统计
  5. EasyMicroPlot: 一种快速进行微生物下游分析的整合R包
  6. 01 HA haproxy 功能简介以及应用
  7. SQL语句 操作实例
  8. 大写字母组成的等腰三角形
  9. 小米手机连接电脑(Mac)刷miui12开发版的操作指南
  10. 动词ing形式的5种用法_动词-ing形式用法归纳