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

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解非線性方程組

Posted on 2018-09-06 21:20 eryar 閱讀(1967) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

OpenCASCADE解非線性方程組

eryar@163.com

 

Abstract. 在科學(xué)技術(shù)領(lǐng)域里常常提出求解非線性方程組的問題,例如,用非線性函數(shù)擬合實驗數(shù)據(jù)問題、非線性網(wǎng)絡(luò)問題、幾何上的曲線曲面求交問題等。OpenCASCADE中有關(guān)于非線性方程組定義的類及其求解類,本文主要介紹如何在OpenCASCADE中定義非線性方程組,及對其進行求解。

Key Words. Function Set, Function Set Root, Newton Raphson Algorithm

1.Introduction

在科學(xué)技術(shù)領(lǐng)域里常常提出求解非線性方程組的問題,例如,用非線性函數(shù)擬合實驗數(shù)據(jù)問題、非線性網(wǎng)絡(luò)問題等。在幾何造型中很多問題也可以利用非線性方程組來解決。如曲線的光順,曲線求交、曲面求交、Blend造型問題等。

OpenCASCADE提供了非線性方程組的類math_FunctionSet,可以先從類圖上來看看有哪些算法使用了這個類:

  

圖1 曲線光順包FaireCurve

 

圖2 Blending Surface between two surfaces

感興趣的同學(xué)可以自己打開OpenCASCADE的類索引文件查看。可以看到很多算法涉及到方程組的求解問題。本文主要介紹如何定義非線性方程組及對其進行求解。理解這些套路后,對math_FunctionSet相關(guān)的派生類及其用用途就會有個清晰的認識,便于對源碼的理解。

2.Function Set Definition

設(shè)有非線性方程組

 

為實變量的非線方程函數(shù)。引入向量形式表示,引進記號:

 

于是非線性方程組可以簡單記作:F(x)=0。我們的問題是尋求X使F(X)=0,這個X就是非線性方程組的解。

OpenCASCADE中使用類math_FunctionSet來表示方程組,這是個抽象類,定義了如下純虛函數(shù):

l NbVariables():變量的個數(shù),即末知量的個數(shù);

l NbEquations():方程的個數(shù),即方程組中有幾個方程;

l Value(const math_Vector&X, math_Vector& F):方程組的值,即代入變量每個方程的值;

3.Function Set Root Algorithm

解非線性方程組的牛頓法和解方程式的思路一樣,要求方程有一階導(dǎo)數(shù)。而非線性方程組即是要求有偏導(dǎo)數(shù)。由fi(x)偏導(dǎo)數(shù)作成的矩陣記為J(x)F’(x),稱為F(x)Jacobi矩陣:

 

求解非線性方程組的牛頓法為:

 

其中xk為方程線的近似解向量。

 

OpenCASCADE中也提供了非線性方程組的求解類,如:math_FunctionSetRootmath_NewtonFunctionSetRoot。而使用這些類的輸入都是要求具有一階偏導(dǎo)數(shù)的線性方程組的定義math_FunctionSetWithDerivaties。這個類定義了具有一階偏導(dǎo)數(shù)的非線性方程組,其純虛函數(shù)除了前面說明的幾個以外,還增加了如下兩個:

l Derivatives(const math_Vector& X, math_Matrix& D):一階偏導(dǎo)數(shù)值,即計算Jacobi矩陣;

l Values(const math_Vector& X, math_Vector& F, math_Matrix& D):計算方程的值及一階偏導(dǎo)數(shù)矩陣Jacobi矩陣。

4.Code Example

下面給出一個具體的例子來說明這些類的用法。設(shè)有非線性方程組:

 

從幾何上看其解就是圓心在原點,半徑為2的圓與曲線的交點:

 

圓與曲線求交

下面我們使用OpenCASCADE來對上述問題進行求解。首先定義這個非線性方程組: 

#include <math_FunctionSet.hxx>
#include 
<math_FunctionSetWithDerivatives.hxx>
#include 
<math_FunctionSetRoot.hxx>
#pragma comment(lib, 
"TKernel.lib")
#pragma comment(lib, 
"TKMath.lib")
class MyFunctionSet : public math_FunctionSetWithDerivatives
{
public:
    
virtual Standard_Integer NbVariables() const
    {
        
return 2;
    }
    
virtual Standard_Integer NbEquations() const
    {
        
return 2;
    }
    
virtual Standard_Boolean Value(const math_Vector& X, math_Vector& F)
    {
        F(
1= X(1* X(1+ X(2* X(2- 4.0;
        F(
2= Pow(M_E, X(1)) + X(2- 1.0;
        
return Standard_True;
    }
    
virtual Standard_Boolean Derivatives(const math_Vector& X, math_Matrix& D)
    {
        
// matrix D is Jacobi matrix.
        D(11= 2.0 * X(1);
        D(
12= 2.0 * X(2);
        D(
21= Pow(M_E, X(1));
        D(
22= 1.0;
        
return Standard_True;
    }
    
virtual Standard_Boolean Values(const math_Vector& X, math_Vector& F, math_Matrix& D)
    {
        Value(X, F);
        Derivatives(X, D);
        
return Standard_True;
    }
private:
};
void test()
{
    MyFunctionSet aFunctionSet;
    math_FunctionSetRoot aSolver(aFunctionSet);
    math_Vector aStartingPoint(
12);
    
// 1. (1.0, 1.0)
    aStartingPoint(1= 1.0;
    aStartingPoint(
2= 1.0;
    aSolver.Perform(aFunctionSet, aStartingPoint);
    
if (aSolver.IsDone())
    {
        aSolver.Dump(std::cout);
    }
    
// 2. (1.0, -1.0)
    aStartingPoint(1= 1.0;
    aStartingPoint(
2= -1.0;
    aSolver.Perform(aFunctionSet, aStartingPoint);
    
if (aSolver.IsDone())
    {
        aSolver.Dump(std::cout);
    }
}
int main(int argc, char* argv[])
{
    test();
    
return 0;
}

上述代碼先定義了帶有一階偏導(dǎo)數(shù)的非線性方程組類:MyFunctionSet,因為有兩個變量及兩個方程,再分別實現(xiàn)計算方程值及偏導(dǎo)數(shù)的虛函數(shù)。

然后使用類math_FunctionSetRoot來對方程組進行求解,求解的結(jié)果如下圖所示:

 

非線性方程組求解結(jié)果

由圖3可知,兩個曲線相交有兩個交點,但是使用類math_FunctionSetRoot一次只能計算一個解。從圖4的計算結(jié)果還可以看出,初值的選擇對解的影響很大,既影響計算結(jié)果,也影響迭代次數(shù)。

 5.Conclusion

綜上所述,OpenCASCADEmath工具箱中提供了方程組的定義、求解功能。其中對非線性方程組求解使用的是Newton迭代法,所以要求方程組必須實現(xiàn)計算一階偏導(dǎo)數(shù)的虛函數(shù),即計算Jacobi矩陣。

OpenCASCADE類圖中可以看出,方程組定義類用在了很多地方,所以理解上述對方程組的定義及解的用法,對其他使用這個派生類的地方更容易其源碼。

 6.References

  1. 同濟大學(xué)數(shù)學(xué)教研室高等數(shù)學(xué) 第四版高等教育出版社. 2004
  2. 易大義沈云寶李有法計算方法浙江大學(xué)出版社. 2002

  


為了方便大家在移動端也能看到我的博文和討論交流,現(xiàn)已注冊微信公眾號,歡迎大家掃描下方二維碼關(guān)注。
Shing Liu(eryar@163.com)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧美国产精品va在线观看| 欧美久色视频| 亚洲一区中文| 久久亚洲精品一区| 亚洲国产天堂久久综合网| 欧美成人免费网站| 欧美一区二区免费视频| 欧美aa在线视频| 亚洲欧美日韩在线播放| 亚洲狠狠婷婷| 亚洲国产成人精品女人久久久 | 一区二区三区久久精品| 久久天天躁夜夜躁狠狠躁2022| 国产精品99久久久久久久久| 激情久久综艺| 在线看日韩欧美| 在线观看久久av| 黑人极品videos精品欧美裸| 国产精一区二区三区| 欧美性猛交xxxx乱大交蜜桃| 欧美区日韩区| 欧美午夜在线| 国产麻豆9l精品三级站| 午夜日本精品| 亚洲一区不卡| 久久九九国产| 亚洲男人第一av网站| 午夜精品在线观看| 久久视频在线看| 欧美搞黄网站| 农夫在线精品视频免费观看| 女女同性精品视频| 一区二区三欧美| 久久男女视频| 国产精品二区在线| 伊人久久婷婷| 欧美一级网站| 99视频精品免费观看| 久久福利视频导航| 欧美a级在线| 国产亚洲欧美日韩精品| 91久久线看在观草草青青| 久久久综合精品| 国产日韩亚洲| 欧美视频一区在线观看| 久久av资源网站| 国产女精品视频网站免费| 亚洲激情影院| 狼人社综合社区| 欧美中在线观看| 国产亚洲精品久久飘花| 亚洲一级在线| 亚洲网站在线观看| 国产精品v亚洲精品v日韩精品| 亚洲小说欧美另类婷婷| 久久视频这里只有精品| 国产专区综合网| 欧美精品99| 亚洲私人影院在线观看| 欧美成人免费在线观看| 久久综合色一综合色88| 亚洲黄色影院| 日韩一区二区福利| 国产精品色午夜在线观看| 亚洲欧美三级伦理| 夜夜夜久久久| 99国内精品久久久久久久软件| 免费不卡欧美自拍视频| 亚洲精品乱码久久久久久蜜桃91 | 久久青青草原一区二区| 久久久国产精品亚洲一区 | 久久精品av麻豆的观看方式| 欧美承认网站| 国产欧美精品日韩| 亚洲精品亚洲人成人网| 国产伦精品一区二区三区四区免费 | 国产日韩综合一区二区性色av| 久久精品盗摄| 欧美视频一区二区| 欧美日韩国内自拍| 欧美一区二视频| 欧美极品aⅴ影院| 国产亚洲精品自拍| 亚洲天堂网在线观看| 亚洲国产精品成人| 亚洲欧美一区二区三区久久| 久久久中精品2020中文| 亚洲精品一二| 国产精品视频免费一区| 欧美在线观看视频一区二区三区 | 欧美在线视频播放| 亚洲午夜未删减在线观看| 玖玖玖国产精品| 免费观看亚洲视频大全| 国产亚洲欧洲| 欧美在线国产精品| 久久久久九九九| 狠狠综合久久av一区二区老牛| 午夜精品视频| 美女视频一区免费观看| 精品二区久久| 亚洲伦伦在线| 亚洲精品视频在线观看网站| 在线观看一区| 欧美激情一区二区三级高清视频| 亚洲人成在线观看网站高清| 夜夜爽av福利精品导航| 激情亚洲网站| 国产精品一区二区黑丝| 亚洲欧美日韩第一区| 日韩系列欧美系列| 91久久中文字幕| 精品动漫3d一区二区三区| 国产精品国产亚洲精品看不卡15 | 欧美激情精品久久久六区热门| 亚洲自拍偷拍一区| 中日韩高清电影网| 亚洲伊人一本大道中文字幕| 亚洲男人的天堂在线| 亚洲欧美日韩国产综合精品二区 | 久久精品亚洲精品| 亚洲欧美中文日韩在线| 亚洲天堂男人| 性做久久久久久久久| 久久资源在线| 欧美高清视频一区二区| 美女精品国产| 99精品视频免费| 性欧美1819sex性高清| 久久综合给合久久狠狠色| 欧美成人精品在线视频| 欧美日韩免费网站| 国产女精品视频网站免费| 一区二区三区中文在线观看| 亚洲国产一区二区三区青草影视| 亚洲精品视频在线看| 亚洲女同精品视频| 欧美成人亚洲| 午夜日韩在线| 国产精品乱码人人做人人爱| 激情视频一区二区三区| 久久久久久一区二区| 久久裸体视频| 欧美日韩在线一区二区| 在线精品国产欧美| 午夜日韩在线| 亚洲精品少妇| 噜噜噜噜噜久久久久久91 | 欧美一级二区| 国产精品豆花视频| 亚洲图片自拍偷拍| 亚洲日本中文字幕| 久久夜色精品国产亚洲aⅴ| 国产日韩欧美在线视频观看| 一本一本久久a久久精品综合妖精| 欧美一区二区三区在线观看视频 | 亚洲欧美影院| 午夜亚洲福利在线老司机| 欧美日韩一视频区二区| 一本久道久久综合狠狠爱| 亚洲日本视频| 欧美精品激情在线| 在线亚洲电影| 亚洲欧美在线磁力| 影音先锋中文字幕一区| 久久先锋影音| 玖玖玖国产精品| 一区二区三区免费观看| 亚洲一区二区高清| 伊人久久大香线| 91久久久精品| 国产精品视频xxx| 欧美激情第3页| 国产日韩欧美在线观看| 久热精品视频在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美+日本+国产+在线a∨观看| 久久精品在线观看| 在线播放国产一区中文字幕剧情欧美| 久久久久久电影| 欧美日韩大陆在线| 欧美一区亚洲| 欧美精品在线一区二区| 久久久久se| 国产精品九九| 亚洲国产va精品久久久不卡综合| 欧美日韩国内自拍| 亚洲天堂av图片| 亚洲电影免费在线| 午夜精品久久久久久久久| 亚洲精品视频一区二区三区| 亚洲伊人网站| 久久久青草婷婷精品综合日韩| 在线欧美视频| 欧美一区免费| 久久婷婷久久| 1000部国产精品成人观看| 午夜电影亚洲| 免费不卡视频| 国产一区二区三区直播精品电影 |