Gauss-Legendre求积公式-高斯型积分公式
网上找到的高斯勒让德求积公式一般都是最高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求积公式-高斯型积分公式相关推荐
- matlab高斯型隶属函数,图高斯型隶属函数.PPT
图高斯型隶属函数 第三章 模糊控制的理论基础 第一节 概述 第二节 模糊集合 第三节 隶属函数 第四节 模糊关系 第五节 模糊推理 在模糊控制中应用较多的隶属函数有以下6种隶属函数. (1)高斯型隶属 ...
- 初等数论--二次剩余与二次同余方程--勒让德符号Legendre,高斯引理,雅可比符号Jacobi symbol
初等数论--二次剩余与二次同余方程--勒让德符号Legendre,高斯引理,雅可比符号Jacobi symbol 勒让德符号Legendre 高斯引理 雅可比符号Jacobi symbol 博主是初学 ...
- 模糊控制之高斯型隶属度函数(博途PLC SCL篇)
在工程上用的较多的,五种基本隶属度函数分别是:三角形,钟形,高斯型,梯形,和Sigmoid型.这篇博文主要讲解高斯型隶属度函数解析式,和其博途PLC SCL实现代码.三角形隶属函数的详细讲解可以参看下 ...
- 高斯型数值积分公式的Python程序
from sympy import *def f(t):f = 2000*log(140000/(140000-2100*t))-9.8*treturn fa = 8 b = 30 x = symbo ...
- 高斯型随机粗糙面MATLAB仿真
一.概要 一般可认为随机粗糙表面高度可由许多不同频率的谐波叠加而成,因此可采用线性滤波法来生成随机粗糙面:先在频域谱进行滤波,然后进行逆傅里叶变换得到粗糙面高度,来生成模拟随机粗糙面模型.本文将基于上 ...
- Gauss型(Gaussian quadrature)求积公式和方法
目录 0.Gauss型积分通用形式 1.Gauss–Legendre quadrature勒让德 2.Gauss–Laguerre quadrature拉盖尔--积分区间[0,inf] 3.Cheby ...
- 数值分析——求积公式
目录 求积公式的一般形式 求积公式的代数精度 插值型求积公式 Newton-Cotes求积公式 复化求积公式 复化梯形公式 复化Simpson公式 复化求积公式优缺点 变步长法(区间逐次分半法) 高斯 ...
- 数值分析——数值积分(Newton-Cotes、复化求积、Gauss求积、正交多项式Gauss)
数值分析-数值积分 前言 敲黑板 牛顿-莱布尼兹公式的局限性 常见的近似求法 代数精度 插值型求积公式 Newton-Cotes公式 复化求积 Gauss 求积公式 基于正交多项式的Gauss求积公式 ...
- 数据积分-牛顿科茨法与高斯勒让德法对比及示例
在结点xi上插值f的次数最多是n次的多项式 p(x)=∑f(xi)li(x) 拉格朗日插值多项式: li(x)= ∏(x-xj)/(xi-xj) 基于插值的数值积分: ∫f(x)dx≈∫p(x)dx= ...
- 高斯-勒让德求积分的Python程序
理论知识: 勒让德多项式及性质 第四节 高斯(Gauss)求积公式 高斯-勒让德求积公式及Matlab实现 目标函数求积区间为[-1,1]时 代码: #高斯-勒让德求积公式 from sympy im ...
最新文章
- R语言使用forestplot包绘制森林图:编码创建森林图仿真数据、汇总线修改、元素位置调整、垂直线、字体、风格、置信区间、线型、图例、刻度、标签等
- DevExpress v15.1:WPF控件升级(四)
- poj 2109 Power of Cryptography
- 企业网络推广方案分享如何针对大量的长尾词进行更好地优化方法!
- “Hello,Jetpack”:构建您的第一个Jetpack应用程序
- 创建Unicode格式的INI文件
- 使用await和async关键字开发nodejs应用批量取出简书网站的文章标题和超链接
- leetcode279. 完全平方数
- mysql linux附加数据库文件夹,Linux全攻略--MySQL数据库配置与管理
- 一次性搭建Hadoop高可用集群
- WorkSbell第10周2017
- XJOI 3864 农村连接城市
- 实例变量,局部变量,全局变量,静态全局变量。
- 用scanf输入long long 型的数
- vue 引入qunee_(原创) 工作流程图的树形展示-使用qunee插件实现
- 在Linux中使用7zip/7zz
- 计算机专业考研复试个人简介ppt,蓝色简约考研复试个人简历通用ppt.pptx
- Oracle官网 JDK下载 注册登录公共账号和密码
- 2021 SNEC圆满落幕,新视智科携光伏玻璃智能检测解决方案闪耀申城
- 【Swift 和 OC】