青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

eryar

PipeCAD - Plant Piping Design Software.
PlantAssistant - Translate AVEVA RVM/SP3D VUE to glTF, STEP, etc.
posts - 606, comments - 590, trackbacks - 0, articles - 0

OpenCASCADE Gauss Integration

Posted on 2014-09-11 21:52 eryar 閱讀(2857) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

OpenCASCADE Gauss Integration

eryar@163.com

Abstract. Numerical integration is the approximate computation of an integral using numerical techniques. The numerical computation of an integral is sometimes called quadrature. The most straightforward numerical integration technique uses the Newton-Cotes formulas(also called quadrature formulas), which approximate a function tabulated sequence of regularly spaced intervals by various degree polynomials. If the functions are known analytically instead of being tabulated at equally spaced intervals, the best numerical method of integrations is called Gauss Integration(Gaussian quadrature). By picking the abscissas at which to evaluate the function, Gaussian quadrature produces the most accurate approximations possible. In OpenCASCADE math package it implement the Gauss-Legendre integration. So I will focus on the usage of the class in OpenCASCADE.

Key Words. OpenCASCADE, Gauss Integration, Gauss-Legendre, Numerical Analysis

1. Introduction

在科學和工程計算問題中,經常要計算一些定積分或微分,它們的精確值無法算出或計算量太大,只能用數值的方法給出具有指定誤差限的近似值。最直觀的數值積分方法有Newton-Cotes,其將積分區間等分之,并取分點為積分節點。這種做法雖然簡化了計算,但卻降低了所得公式的代數精度。

Gauss型求積公式是一種高精度的數值積分公式。在求積節點數相同的情況下,即計算工作量相近的情況下,利用Gauss型求積公式往往可以獲得準確程序較高的積分結果,只是它在不等距的無理數上計算被積函數。

OpenCASCADE的math包中實現了Gauss-Legendre積分算法。本文主要介紹其使用方法,進而對其應用進行理解。

2. The Gauss-Legendre Integration

Gauss型求積公式是數值穩定的,且對有限閉區間上的連續函數,Gauss求積的數值隨節點數目的增加而收斂到準確積分值。

常用的Gauss型求積公式有Gauss-Legendre求積公式,Gauss-Chebyshev求積公式,Gauss-Laguerre求積公式和Gauss-Hermite求積公式等。

對于一般區間[a, b]上的Gauss型求積公式,可通過變量變換,由Gauss-Legendre求積公式得到:

wps_clip_image-12252其中:

wps_clip_image-28519

OpenCASCADE中對應的類有math_GaussSingleIntegration,主要實現的函數為Perform(),計算過程如下:

v 查表求得Gauss點及求積系數;

//Recuperation des points de Gauss dans le fichier GaussPoints.
  math::GaussPoints(Order,GaussP);
  math::GaussWeights(Order,GaussW);

v 根據Gauss-Legendre求積公式計算;

 

// Changement de variable pour la mise a l'echelle [Lower, Upper] :
  xm = 0.5*(Upper + Lower);
  xr 
= 0.5*(Upper - Lower);
  Val 
= 0.;

  Standard_Integer ind 
= Order/2, ind1 = (Order+1)/2;
  
if(ind1 > ind) { // odder case
    Ok1 = F.Value(xm, Val);
    
if (!Ok1) return;
    Val 
*= GaussW(ind1);
  }
// Sommation sur tous les points de Gauss: avec utilisation de la symetrie.
  for (j = 1; j <= ind; j++) {
    dx 
= xr*GaussP(j);
    Ok1 
= F.Value(xm-dx, F1);
    
if(!Ok1) return;
    Ok1 
= F.Value(xm+dx, F2);
    
if(!Ok1) return;
    
// Multiplication par les poids de Gauss.
    Standard_Real FT = F1+F2;
    Val 
+= GaussW(j)*FT;  
  }
  
// Mise a l'echelle de l'intervalle [Lower, Upper]
  Val *= xr;

對比Gauss-Legendre求積公式來理解上述代碼還是比較清晰的。下面給出使用此類的一個具體實例:

 

/*
*    Copyright (c) 2014 eryar All Rights Reserved.
*
*        File    : Main.cpp
*        Author  : eryar@163.com
*        Date    : 2014-09-11 20:46
*        Version : 1.0v
*
*    Description : Demo for Gauss-Legendre Integration usage.
*
*      Key words : OpenCascade, Gauss-Legendre Integration
*/

#define WNT
#include 
<math_Function.hxx>
#include 
<math_GaussSingleIntegration.hxx>

#pragma comment(lib, 
"TKernel.lib")
#pragma comment(lib, 
"TKMath.lib")

class Test_GaussFunction : public math_Function
{
public:
    
virtual Standard_Boolean Value(const Standard_Real x, Standard_Real &y)
    {
        y 
= x;

        
return Standard_True;
    }

private:
};

void TestGaussIntegration(void)
{
    Test_GaussFunction aFunction;
    math_GaussSingleIntegration aSolver(aFunction, 
11010);

    std::cout 
<< aSolver << std::endl;
}

int main(int argc, char* argv[])
{
    TestGaussIntegration();

    
return 0;
}

主要是從math_Function派生一個類來在虛函數Value()中重定義求積函數即可。上述實例中計算的是如下積分:

wps_clip_image-4533

計算結果如下圖所示:

wps_clip_image-15082

Figure 2.1 Gauss-Legendre Integtation Result

3. Application

由高等數學知識可知,積分的應用主要用于計算圖形面積,體積及曲線的弧長,功等。

積分在OpenCASCADE中的主要應用有計算曲線長度,曲面面積及實體的體積等。如下圖所示:

wps_clip_image-13853

Figure 3.1 Compute Area of a Surface

示例代碼如下所示:

TopoDS_Shape S = BRepBuilderAPI_MakeFace(BSS, Precision::Confusion()).Face();

GProp_GProps System;
BRepGProp::SurfaceProperties(S,System);
gp_Pnt G 
= System.CentreOfMass ();
Standard_Real Area 
= System.Mass();
gp_Mat I 
= System.MatrixOfInertia();


 


4. Conclusion

OpenCASCADE中實現的Gauss-Legendre求積算法,由于是查表求得Gauss點及求積系數,所以計算速度快。唯一不足是對高斯點數有限制。

綜上所述,可知數值計算在OpenCASCADE中重要作用。一個TKMath庫相當于實現了一本《數值分析》課本中的大部分內容。所以有興趣的朋友可結合《數值分析》或《計算方法》之類的書籍,來對OpenCASCADE的數學庫TKMath進行理論聯系實際的深入理解。

5. References

1. Wolfram MathWorld, Numerical Integration, 

http://mathworld.wolfram.com/NumericalIntegration.html

2. 易大義,沈云寶,李有法編. 計算方法. 浙江大學出版社. 2002

3. 易大義,陳道琦編. 數值分析引論. 浙江大學出版社. 1998

4. 李慶楊,王能超,易大義.數值分析.華中理工大學出版社. 1986

5. 同濟大學數學教研室. 高等數學(第四版). 高等教育出版社. 1996

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美高清一区二区| 午夜一级久久| 久久频这里精品99香蕉| 欧美亚一区二区| 日韩视频在线一区二区三区| 欧美一级黄色网| 欧美成人精品| 久久久精品性| 悠悠资源网久久精品| 久久久亚洲国产天美传媒修理工| 亚洲夜间福利| 国产欧美va欧美不卡在线| 亚洲免费在线电影| 亚洲视频一区二区在线观看| 久久―日本道色综合久久| 经典三级久久| 女女同性精品视频| 猫咪成人在线观看| 影音先锋一区| 亚洲黄网站在线观看| 欧美日韩国产高清| 亚洲一区网站| 午夜精品免费| 怡红院精品视频在线观看极品| 午夜精品久久久久久久99水蜜桃| 亚洲综合成人在线| 国产一区二区三区视频在线观看| 老司机凹凸av亚洲导航| 久久综合伊人77777麻豆| 亚洲精品中文字幕在线| 一二三区精品| 国产日韩欧美在线视频观看| 午夜一区二区三区不卡视频| 久久久久久九九九九| 亚洲精品视频免费| 一区二区三区|亚洲午夜| 国产日韩在线一区二区三区| 欧美ab在线视频| 欧美日韩亚洲一区二区三区| 西西人体一区二区| 欧美本精品男人aⅴ天堂| 亚洲自拍偷拍一区| 久久久精品性| 亚洲与欧洲av电影| 久久久青草青青国产亚洲免观| 在线亚洲国产精品网站| 久久精品国产欧美激情| 亚洲国产成人高清精品| 一区二区三区四区精品| 伊人春色精品| 一本色道久久综合精品竹菊| 狠狠色狠狠色综合日日91app| 亚洲精品乱码| 在线精品视频在线观看高清| 日韩视频一区二区三区在线播放免费观看 | 欧美大片第1页| 欧美一区二区三区啪啪| 免费亚洲电影在线| 久久久久久伊人| 国产精品久久久久久久久久免费看| 午夜激情亚洲| 欧美国产日韩a欧美在线观看| 性做久久久久久久免费看| 欧美国产精品| 美玉足脚交一区二区三区图片| 国产精品国产三级国产专播精品人 | 欧美日韩成人免费| 麻豆成人综合网| 国产精品乱码久久久久久| 欧美国产激情二区三区| 国产九色精品成人porny| 91久久精品日日躁夜夜躁欧美| 国产三级精品三级| 正在播放欧美视频| 亚洲视频久久| 欧美岛国在线观看| 免费亚洲一区| 狠狠色丁香婷综合久久| 午夜精品久久久99热福利| 亚洲欧美国产高清| 欧美亚洲成人免费| 欧美高清视频免费观看| 在线不卡亚洲| 久久综合色影院| 欧美成人精品在线播放| 激情丁香综合| 久久久久久久久久久成人| 欧美在线欧美在线| 国产麻豆综合| 香港成人在线视频| 久久aⅴ乱码一区二区三区| 国产精品久久久久免费a∨| 一区二区激情小说| 亚洲欧美日韩在线高清直播| 国产精品不卡在线| 亚洲综合国产| 老鸭窝亚洲一区二区三区| 黄色成人av在线| 久久成人久久爱| 欧美成人一区二区三区在线观看 | 久久精品国产一区二区电影 | 欧美人与禽猛交乱配视频| 欧美77777| 国产综合网站| 久久精品一区二区国产| 久久久亚洲高清| 91久久久久久久久| 欧美日韩亚洲天堂| 久久精品人人做人人综合 | 亚洲免费伊人电影在线观看av| 国产日韩欧美| 欧美人成在线| 久久精品官网| 一区二区成人精品| 欧美黑人在线播放| 欧美在线观看www| 99re66热这里只有精品3直播| 国产乱码精品一区二区三区av| 麻豆av福利av久久av| 亚洲欧美国产精品va在线观看| 亚洲第一在线| 久久人人97超碰精品888| 亚洲一区二区久久| 亚洲人成7777| 尹人成人综合网| 国产日韩精品久久| 欧美视频国产精品| 欧美欧美天天天天操| 美女主播视频一区| 久久久午夜电影| 亚洲欧美日韩一区二区三区在线| 亚洲美女少妇无套啪啪呻吟| 男女视频一区二区| 久久男女视频| 久久久999国产| 午夜精品久久久久99热蜜桃导演| 日韩亚洲欧美一区二区三区| 亚洲成色www8888| 国内精品视频一区| 国产一区二区精品在线观看| 国产精品国产三级国产专播精品人| 欧美精品首页| 欧美日韩一区在线| 欧美日韩欧美一区二区| 欧美日韩午夜视频在线观看| 欧美久久久久久久久| 欧美久久久久免费| 欧美日韩一区在线观看视频| 欧美色精品在线视频| 国产精品99免费看| 国产精品久久久久一区二区三区 | 欧美亚州一区二区三区| 欧美视频在线视频| 国产精品激情av在线播放| 国产精品videossex久久发布| 欧美理论电影网| 欧美日韩亚洲国产精品| 欧美性淫爽ww久久久久无| 国产精品日本精品| 国产香蕉97碰碰久久人人| 狠狠色丁香婷婷综合久久片| 亚洲国产日韩一区二区| 日韩午夜电影av| 亚洲私人影院在线观看| 欧美在线观看视频在线| 久久偷看各类wc女厕嘘嘘偷窃| 男男成人高潮片免费网站| 亚洲精品日本| 亚洲一区二区免费视频| 久久视频精品在线| 欧美精品在线观看| 国产亚洲欧美日韩一区二区| 亚洲国产精品精华液2区45| 一区二区三区国产| 久久九九精品99国产精品| 欧美大片在线看| 一区二区三区四区五区精品视频| 亚洲欧美在线磁力| 免费欧美视频| 国产欧美日韩三区| 亚洲欧洲一二三| 亚洲欧美日韩中文视频| 欧美不卡在线| 亚洲一区二区毛片| 欧美成人国产一区二区| 国产精品爽黄69| 亚洲精品黄色| 久久免费一区| 在线一区二区三区做爰视频网站| 欧美在线观看一区二区| 欧美—级高清免费播放| 国产午夜精品久久久| 在线亚洲一区二区| 蜜桃av久久久亚洲精品| 亚洲夜间福利| 欧美日韩一区二区三区四区在线观看| 国产一区二区成人久久免费影院| 一区二区三区精品国产| 欧美成人精品不卡视频在线观看 | 亚洲欧美卡通另类91av|