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

eryar

PipeCAD - Plant Piping Design Software.
RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
posts - 603, comments - 590, trackbacks - 0, articles - 0

OPEN CASCADE Multiple Variable Function

Posted on 2015-11-29 16:22 eryar 閱讀(1835) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

OPEN CASCADE Multiple Variable Function

eryar@163.com

Abstract. Multiple variable function with gradient and Hessian matrix is very very import in OPEN CASCADE optimization algorithms. In order to understand these optimization algorithm better, let’s study some basic knowledge about Gradient, Hessian Matrix.

Key Words. Multiple Variable Function, Gradient, Hessian Matrix, 最優化算法,

1. Introduction

當函數只有一個自變量時,感覺相對簡單,一切還在掌握之中。如參數u表示的B樣條曲線,當參數u在[0,1]之間變化時,就可以得到與參數對應的曲線上的點。當函數有多個自變量時,就有點力不從心,畢竟人們都喜歡安穩,不喜歡太多的變化。當變化太多時,得到的結果也更豐富多彩。如有兩個參數u,v表示的B樣條曲面,參數變化的范圍是一個u∈[0,1],v∈[0,1]矩形空間,與參數u,v對應的是一片曲面上的點。

在實際應用中,與多元函數的一階導數(Gradient梯度)、二階導數(Hessian Matrix)和多元函數的極值等概念也是理解非線性最優化問題的基礎知識。

OPEN CASCADE中一些求極值和逼近等算法中就使用了非線性最優化算法,如下類圖所示:

wps_clip_image-13250

Figure 1.1 Multiple Variable Function in OPEN CASCADE

如上圖所示,具有二階導數(Hessian Matrix)的多元函數應用到全局優化的求極值算法中。在用能量法實現的曲線光順(Fair Curve)算法中也使用到了具有二階導數的多元函數。為了更好地理解最優化的具體實現,先學習下OPEN CASCADE中與多元函數有關概念的表達方式:多元函數、梯度Gradient和Hessian Matrix。

2.Multiple Variable Function

在《高等數學》中給出了多元函數的定義:設D是平面上一個點集。如果對于每個點P(x,y)∈D,變量z按照一定法則總有確定的值和它對應,則稱z是變量x,y的二元函數。點集D稱為該函數的定義域,x,y稱為自變量,z稱為因變量。當自變量的個數大于1個時,即n≥2,n元函數統稱為多元函數。

在OPEN CASCADE中與多元函數最直接的對應就是類Geom_Surface,即參數表示的曲面,參數u,v的取值區域為多元函數的定義域,當指定uv時得到的曲面上的點即為多元函數值。OPEN CASCADE的數學包中還給出了更抽象地多元函數類:math_MultipleVarFunction。

wps_clip_image-27986

Figure 2.1 math_MultipleVarFunction class diagram

由上面的類圖可知,類math_MultipleVarFunction是個抽象類,有兩個純虛函數:

v NbVariables() const = 0:自變量的個數;

v Value(const math_Vector& X, Standard_Real& F) = 0:計算指定自變量X對應的函數值F。自變量X是個向量,其中的值分別對應多個自變量;

下面給出一個多元函數的具體應用,即計算二重積分。題目來源為《高等數學》教材習題9-2(1):

wps_clip_image-32123

在OPEN CASCADE中計算上述二重積分代碼如下所示:

/*
*    Copyright (c) 2015 Shing Liu All Rights Reserved.
*
*           File : main.cpp
*         Author : Shing Liu(eryar@163.com)
*           Date : 2015-11-28 21:00
*        Version : OpenCASCADE6.9.0
*
*    Description : Test Gauss Multiple integration.
*/

#define WNT
#include 
<math_MultipleVarFunction.hxx>
#include 
<math_GaussMultipleIntegration.hxx>

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

class math_TestFunction : public math_MultipleVarFunction
{
public:
    
virtual Standard_Integer NbVariables() const
    {
        
return 2;
    }

    
virtual Standard_Boolean Value(const math_Vector& X, Standard_Real& F)
    {
        F 
= X(1* X(1+ X(2* X(2);

        
return Standard_True;
    }
};

void testMultipleIntegration(void)
{
    math_Vector aLower(
12);
    math_Vector aUpper(
12);
    math_IntegerVector aOrder(
1210);

    aLower(
1= -1.0;
    aLower(
2= -1.0;

    aUpper(
1=  1.0;
    aUpper(
2=  1.0;

    math_TestFunction aFunction;
    math_GaussMultipleIntegration aIntegrator(aFunction, aLower, aUpper, aOrder);

    
if (aIntegrator.IsDone())
    {
        std::cout 
<< aIntegrator;
    }
}

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

    
return 0;
}

通過從抽象類math_MultipleVarFunction派生出一個具體的多元函數類,在虛函數Value()計算指定向量X對應的函數值,通過函數NbVariables()確定自變量的個數。為什么可以對類math_Vector的對象用括號直接進行取值和賦值呢?因為在這個類中重載了括號運算符。計算結果如下圖所示:

wps_clip_image-16350

Figure 2.2 Integration Value

因為使用math_GaussMultipleIntegration時需要指定積分區域,且只能為常數,所以如下所示的積分區域中包含變量的多重積分就不能計算:

wps_clip_image-25551

OPEN CASCADE中與多元函數對應的一元函數的積分計算參考:

OPEN CASCADE Gauss Integration:

http://m.shnenglu.com/eryar/archive/2014/09/11/208275.html

3.Gradient

在二元函數情形,設計函數z=f(x,y)在平面區域D內具有一階連續偏導數,則對于每一點P(x,y)∈D都可以定出一個向量:

wps_clip_image-11171

這向量稱為函數z=f(x,y)在點P(x,y)的梯度(gradient),記作gradf(x,y)。對于多元函數u=f(X),X=(x1,x2, ..., xn)T,有如下定義:

設u=f(X),X∈S,若在點x0=(x1(0),x2(0), ..., xn(0))T處對于自變量X=(x1,x2, ..., xn)T的各個分量的偏導數wps_clip_image-6754都存在,則稱函數u=f(X)在點x0處一階可導,并稱向量wps_clip_image-6111是u=f(X)在點x0處的梯度Gradient或一階導數。

無約束優化最優性的一階必要條件是:若x0是無約束優化問題的局部最優值點,則wps_clip_image-11497

由數學分析可知,wps_clip_image-17726的方向為f(X)的等值面(等值線)的法線在點x0處的方向,即沿梯度方向函數值變化最快。目標函數梯度為零的點稱為無約束優化問題的穩定點。穩定點可能是目標函數的極大值點,也可能是極小值點,甚至二者都不是。最后一種情況對應的點稱為函數的鞍點,即在從該點出發的一個方向上是函數的極大值,而在另一個方向上是極小值點。

對無約束優化問題,目標函數在最優值點的任意方向上的導數都為零,即目標函數在最優值點的切平面是水平的。不過無約束優化問題的局部最大值點和鞍點也滿足上述條件。因此,要確認一個穩定點是否為最優值點,還需要考慮該點的二階最優性條件。

wps_clip_image-13848

在OPEN CASCADE中與此對應的類是math_MultipleVarFunctionWithGradient,即具有梯度的多元函數。這個類也是抽象類,不能直接實例化,若要使用需要派生出新類,并實現以下幾個純虛函數:

v NbVariables() const = 0:多元函數自變量個數;

v Value(const math_Vector& X, Standard_Real& F) = 0:計算多元函數在指定變量X處對應的函數值F,通過引用傳出;

v Gradient(const math_Vector& X, math_Vector& G) = 0:計算多元函數在指定變量X處的梯度值,通過引用傳出;

v Values(const math_Vector& X, Standard_Real& F, math_Vector& G) = 0:計算多元函數在指定變量X處的函數值F和梯度值G;

4.Hessian Matrix

多元函數的二階導數和Hessian Matrix的定義如下:設u=f(X),x0∈S,若f在點x0∈S處對于自變量x∈S的各分量的二階偏導數wps_clip_image-13678都存在,則稱函數f(X)在點x0處二階可導,且稱矩陣

wps_clip_image-876

為f(X)在點x0處的二階導數或Hessian Matrix,Hessian Matrix有時也記作H(x0)。

無約束最優化最優性條件的二階必要條件為:設f(X)在點x0∈S處二次可微,若x0最f(X)的局部極小點,則wps_clip_image-12381wps_clip_image-13308半正定。

無約束最優化最優性條件的二階充分條件為:設f(X)在點x0∈S處二次可微,若wps_clip_image-23609wps_clip_image-4836正定,則x0是函數f(X)的嚴格局部極小點。

二次型是X=(x1,x2,...,xn)T的二次齊次函數,它在研究非線性最優化問題中具有重要作用。通過線性代數中正定二次型相關定理,可以得出Hessian Matrix正定的判斷條件。相對于高等數學中關于二元函數極值充分條件的定理,使用Hessian Matrix更具一般性,適用于任意多元函數。終于知道正定二次型的一個應用,將原來在線性代數課本中突然冒出這么個抽象概念,能與實際應用有些關聯。看來線性代數必需在實際應用中才能有所理解,如關于現代控制工程中的微分方程組的求解,會用到特征值的理論;無約束最優化問題中極值充分條件的說明要用到正定二次型理論等。難怪當時在學習線性代數的時候那么吃力,對這些抽象概念不理解,學習的時候就只能是機械的記憶,如果以后用不到,肯定都還給老師了。OPEN CASCADE中與Hessian Matrix對應的類是math_MultipleVarFunctionWithHessian,其類圖如下所示:

wps_clip_image-18096

Figure 4.1 math_MultipleVarFunctionWithHessian class diagram

由上面類圖可知,math_MultipleVarFunctionWithHessian派生自帶梯度的多元函數類math_MultipleVarFunctionWithGradient。因此,比帶梯度的多元函數類多個求值的虛線函數:

Values(const math_Vector&X, Standard_Real&F, math_Vector&G, math_Matrix&H) = 0

通過這個線虛函數計算出多元函數在指定變量X處的函數F,梯度值G和Hessian Matrix H。

因為math_MultipleVarFunctionWithHessian有純虛函數,所以也不能直接實例化,需要根據實際情況從其派生類來使用。正如本文開頭所示的類圖中幾個類一樣,從帶有Hessian Matrix的多元函數派生出新類來計算全局極值和曲線光順,如下類圖所示:

wps_clip_image-12818

Figure 4.2 math_MultipleVarFunctionWithHessian class diagram

5.Conclusion

在OPEN CASCADE的數學包Package math中不僅描述了只有一個自變量的一元函數math_Function,也描述了具有多個自變量的多元函數,及其一階導數(梯度)和二階導數(Hessian Matrix)。通過應用多元函數的積分計算,可以看出OCC對這些概念進行的類封裝還是很清晰,便于理解和使用。對于這些基礎概念的介紹,便于理解后面具體的優化算法的使用。

從OPEN CASCADE中的優化算法可以看出,核心是數學這個精巧工具的熟練應用。可以找出《高等數學》、《線性代數》、《最優化方法》、《非線性最優化理論與方法》、《數值分析》等相關書籍,通過對比OPEN CASCADE中的程序實現有效的理論聯系實踐,提高學習效率。而對高等數學和線性代數可以做到溫故知新,對原來百思不解的問題可以有個Aha!的恍然大悟,找到學習的樂趣。

6. References

1. 同濟大學數學教研室. 高等數學. 高等教育出版社. 1996

2. 同濟大學應用數學系. 線性代數. 高等教育出版社. 2003

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

4. 《運籌學》教材編寫組. 運籌學. 清華大學出版社. 2012

5. 何堅勇. 最優化方法. 清華大學出版社. 2007

6. 楊慶之. 最優化方法. 科學出版社. 2015

7. 王宜舉, 修乃華. 非線性最優化理論與方法. 科學出版社. 2012

 

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美激情区在线播放| 亚洲成人在线| 一本色道久久综合狠狠躁篇的优点 | 欧美日韩国产成人在线观看| 久久精品视频播放| 亚洲午夜一区| 久久免费国产精品1| 欧美精品福利视频| 国产一区二区三区无遮挡| 依依成人综合视频| 亚洲欧洲av一区二区| 亚洲欧美日本伦理| 午夜精品视频在线| 美日韩精品视频| 欧美成人综合一区| 亚洲国产日韩在线一区模特| 欧美成ee人免费视频| 一区二区三区欧美日韩| 亚洲深夜影院| 久久久久中文| 国产精品国产三级国产a| 在线观看视频欧美| 欧美一级大片在线免费观看| 欧美成人第一页| 国内一区二区三区在线视频| 亚洲国产日日夜夜| 在线亚洲国产精品网站| 欧美99在线视频观看| 亚洲一区视频在线| 欧美日韩另类丝袜其他| 亚洲国产天堂网精品网站| 亚洲在线第一页| 亚洲色图综合久久| 欧美无砖砖区免费| 在线午夜精品| 亚洲精品欧美日韩专区| 美女999久久久精品视频| 国内精品视频一区| 久久久精品性| 久久深夜福利| 亚洲精品社区| 亚洲天堂网在线观看| 国产精品久久国产三级国电话系列| 亚洲区一区二| 亚洲精品国产系列| 欧美精品色一区二区三区| 亚洲日本久久| 亚洲欧美日韩精品久久奇米色影视 | 久久综合久久美利坚合众国| 一区二区三区欧美亚洲| 国产精品视频精品视频| 久久女同互慰一区二区三区| 玖玖玖免费嫩草在线影院一区| 亚洲电影免费| 亚洲欧美一区二区视频| 欧美一区2区视频在线观看 | 国产一区二区三区日韩欧美| 免费久久久一本精品久久区| 欧美精品网站| 久久在线免费| 国产精品户外野外| 亚洲日本va午夜在线影院| 国产日韩亚洲欧美精品| 最新成人在线| 在线播放豆国产99亚洲| 夜夜嗨av一区二区三区网页| 国产亚洲精品v| 亚洲精品在线看| 国产日韩在线看| 欧美成人免费va影院高清| 欧美日韩亚洲一区二区三区四区 | 久久久久久噜噜噜久久久精品| 亚洲高清免费视频| 亚洲国产精品小视频| 久久成人免费| 欧美一区二区三区日韩| 欧美精品一区二区三区在线看午夜 | 欧美有码视频| 国产精品美女久久| 99亚洲视频| 性久久久久久久| 国产欧美一区二区视频| 日韩午夜在线电影| 一区二区欧美在线观看| 亚洲国产精品久久久久婷婷老年| 欧美刺激性大交免费视频| 亚洲免费一在线| 国产精品三上| 久久综合999| 欧美精品一区在线观看| 亚洲午夜性刺激影院| 欧美一级视频精品观看| 亚洲欧洲美洲综合色网| 亚洲一级免费视频| 1024日韩| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 中文高清一区| 国产视频在线观看一区二区三区| 久久在线免费观看| 欧美精品成人91久久久久久久| 亚洲午夜一区二区| 久久影视精品| 欧美在线www| 欧美激情bt| 久久一区二区三区av| 欧美色123| 欧美成人午夜激情在线| 国产精品久久久一本精品| 欧美成人69av| 国产精品网站在线| 亚洲精品国久久99热| 国外成人免费视频| 亚洲专区在线| 9国产精品视频| 久久精品人人做人人综合| 一区二区三区四区蜜桃| 毛片一区二区三区| 久久久xxx| 国产精品人人做人人爽| 91久久精品国产91性色tv| 韩国一区电影| 久久成人久久爱| 欧美一区二区三区四区视频| 欧美肥婆在线| 欧美激情一区二区三区在线| 国产亚洲欧美另类中文| 中文在线一区| 亚洲一区国产精品| 欧美日韩国产综合一区二区| 亚洲第一精品夜夜躁人人躁 | 欧美视频在线一区二区三区| 欧美国产一区二区| 在线观看视频一区| 久久久久久久久久码影片| 久久久亚洲欧洲日产国码αv| 国产欧美日韩精品专区| 亚洲欧美另类久久久精品2019| 亚洲午夜激情在线| 欧美日韩亚洲国产精品| 亚洲精品综合精品自拍| av成人激情| 欧美日韩一区二区免费视频| 亚洲日本欧美| 一区二区三区四区五区视频 | 亚洲综合激情| 欧美视频在线观看视频极品| 亚洲啪啪91| 99国产精品99久久久久久粉嫩 | 久久精品一区二区| 能在线观看的日韩av| 影音先锋日韩精品| 久久―日本道色综合久久| 欧美a级片一区| 亚洲精品欧美日韩专区| 欧美日韩在线一二三| 亚洲视频欧美在线| 久久精品视频网| 亚洲国产成人91精品| 免费亚洲电影在线观看| 亚洲精品久久久久久久久久久| 一本大道久久a久久精二百| 欧美性猛交xxxx乱大交退制版| 亚洲综合好骚| 欧美激情国产日韩| 亚洲调教视频在线观看| 国产区精品在线观看| 久久蜜桃av一区精品变态类天堂| 亚洲第一偷拍| 午夜在线a亚洲v天堂网2018| 黑人一区二区| 欧美日韩a区| 先锋影音一区二区三区| 亚洲国产欧美一区二区三区丁香婷| 一区二区三区欧美成人| 国产亚洲精品激情久久| 欧美激情中文字幕一区二区| 亚洲网站在线| 欧美顶级艳妇交换群宴| 亚洲永久免费精品| 亚洲国产精品国自产拍av秋霞| 欧美日韩国产区一| 久久久久九九视频| 一区二区不卡在线视频 午夜欧美不卡'| 欧美一区二区国产| 99视频一区二区| 亚洲第一精品久久忘忧草社区| 欧美日本免费| 久久久久青草大香线综合精品| 99在线热播精品免费99热| 久久在线播放| 欧美一区亚洲二区| 亚洲免费av电影| 狠狠噜噜久久| 国产亚洲精品高潮| 欧美日韩一卡二卡| 欧美精品一区二区三区蜜桃| 久久影音先锋| 久久久久久电影| 欧美一区二区国产| 午夜激情综合网|