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

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 Matrix

Posted on 2013-07-17 22:57 eryar 閱讀(3457) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

OpenCascade Matrix

eryar@163.com

摘要Abstract:本文對(duì)矩陣作簡要介紹,并結(jié)合代碼說明OpenCascade矩陣計(jì)算類的使用方法。

關(guān)鍵字Key Words:OpenCascade、Matrix、C++

一、引言Introduction

矩陣的研究歷史悠久,拉丁方陣和幻方在史前年代已有人研究。作為解決線性方程的工具,矩陣也有不短的歷史。1693年,微積分的發(fā)現(xiàn)者之一萊布尼茨建立了行列式論(theory of determinants)。1750年,克拉默又定下了克拉默法則。1800年代,高斯和威廉若爾當(dāng)建立了高斯-若爾當(dāng)消去法。

從其發(fā)展歷史可以看出,從行列式論的提出到克拉默法則總共歷時(shí)50多年之久,而在我們《線性代數(shù)》的課本中,也就是一章的內(nèi)容,學(xué)習(xí)時(shí)間可能只有一個(gè)星期。難怪這些概念這么抽象晦澀,也是情有可原的,哈哈。不過,當(dāng)理解這些概念,也就掌握了一個(gè)強(qiáng)大的工具,因?yàn)樗彩褂行┯?jì)算統(tǒng)一、簡單。

矩陣是高等代數(shù)中的常見工具,也常見于統(tǒng)計(jì)分析等應(yīng)用數(shù)學(xué)學(xué)科中。在物理學(xué)中,矩陣用于電路學(xué)、力學(xué)、光學(xué)和量子物理中都有應(yīng)用;計(jì)算機(jī)科學(xué)中,三維變換就是使用了矩陣的線性變換。矩陣的運(yùn)算是數(shù)值分析領(lǐng)域的重要問題。

在計(jì)算機(jī)圖形相關(guān)的軟件中,矩陣是必不可少的重要工具。如:OpenGL、DirectX中的變換都是用矩陣實(shí)現(xiàn)的;OpenCascade中就有矩陣計(jì)算類(math_Matrix);OpenSceneGraph中也有矩陣的計(jì)算類(osg::Matrix)等等。矩陣在計(jì)算中主要用來表達(dá)線性變換,統(tǒng)一三維空間中物體的位置和方向變換。

本文主要介紹OpenCascade中矩陣類的使用方法。

二、矩陣的運(yùn)算 Matrix Calculation

矩陣的運(yùn)算主要有矩陣的加法、數(shù)與矩陣相乘、矩陣與矩陣相乘、矩陣的轉(zhuǎn)置、方陣的行列式、共軛矩陣、逆矩陣。還有通過矩陣來求解線性方程組的解問題。

1. 矩陣的加法 Matrix Addition

wps_clip_image-24960

wps_clip_image-26221

應(yīng)該注意,只有當(dāng)兩個(gè)矩陣是同型矩陣時(shí),才能進(jìn)行加法運(yùn)算。矩陣加法滿足下列運(yùn)算規(guī)律:設(shè)A、B、C都是m×n矩陣:

wps_clip_image-24741

2. 數(shù)與矩陣相乘 Matrix Multiplication

wps_clip_image-10866

wps_clip_image-26972

數(shù)乘矩陣滿足下列運(yùn)算規(guī)律(設(shè)A、B為m×n矩陣,λ、μ為數(shù)):

wps_clip_image-18082

矩陣相加與矩陣相乘合起來,統(tǒng)稱為矩陣的線性運(yùn)算。

3. 矩陣與矩陣相乘 Matrix Multiplication

wps_clip_image-21494

wps_clip_image-8947

并把此乘積記作:C = AB

按此定義,一個(gè)1×s行矩陣與一個(gè)s×1列矩陣的乘積是一個(gè)1階方陣,也就是一個(gè)數(shù):

wps_clip_image-23994

由此表明乘積矩陣AB=C的(i,j)元cij就是A的第i行與B的第j列的乘積。必須注意:只有當(dāng)每一個(gè)矩陣(左矩陣)的列數(shù)等于第二個(gè)矩陣(右矩陣)的行數(shù)時(shí),兩個(gè)矩陣才能相乘。

矩陣的乘法雖不滿足交換律,但仍滿足下列結(jié)合律和分配律(假設(shè)運(yùn)算都是可行的):

wps_clip_image-20509

4. 矩陣的轉(zhuǎn)置 Matrix Transpose

wps_clip_image-769

wps_clip_image-13729

矩陣轉(zhuǎn)置也是一種運(yùn)算,滿足下列運(yùn)算規(guī)律(假設(shè)運(yùn)算都是可行的):

wps_clip_image-16264

5. 方陣的行列式 Determinant of the Square Matrix

wps_clip_image-29034

應(yīng)該注意,方陣與行列式是兩個(gè)不同的概念,n階方陣是n×n個(gè)數(shù)按一定方式排列成的數(shù)表,而n階行列式是這些數(shù)(也就是數(shù)表A)按一定的運(yùn)算法則所確定的一個(gè)數(shù)。

由A確定|A|的這個(gè)運(yùn)算滿足下述運(yùn)算規(guī)律(設(shè)A、B為n階方陣,λ為數(shù)):

wps_clip_image-3633

6. 逆矩陣 Inverse of Matrix

定義:對(duì)于n階矩陣A,如果一個(gè)n階矩陣B,使AB=BA=E,則說矩陣A是可逆的,并把矩陣B稱為A的逆矩陣,簡稱逆陣。

方陣的逆矩陣滿足下列運(yùn)算規(guī)律:

wps_clip_image-32006

7. 線性方程組的數(shù)值解法

在自然科學(xué)和工程中有很多問題的解決都?xì)w結(jié)為求解線性方程組或者非線性方程組的數(shù)學(xué)問題。例如,電學(xué)中的網(wǎng)絡(luò)問題,用最小二乘法求實(shí)驗(yàn)數(shù)據(jù)的網(wǎng)線擬合問題,三次樣條的插值問題,用有限元素法計(jì)算結(jié)構(gòu)力學(xué)中的一些問題或用差分法解橢圓型偏微分方程的邊值問題等等。

求解線性方程組的直接法主要有選主元高斯消去法、平方根法、追趕法等。如果計(jì)算過程中沒有舍入誤差,則此種方法經(jīng)過有限步算術(shù)運(yùn)算可求得方程組的精確解,但實(shí)際計(jì)算中由于舍入誤差的存在和影響,這種方法也只能求得方程組的近似解。目前這種方法是計(jì)算機(jī)上解低階稠密矩陣的有效方法。

高斯消去法是一個(gè)古老的求解線性方程組的方法,但由于它改進(jìn)得到的選主元的高斯消去法則是目前計(jì)算機(jī)上常用的解低階稠密矩陣方程組的有效方法。

用高斯消去法解方程組的基本思想是用矩陣行的初等變換將系數(shù)矩陣化為具有簡單形式的矩陣,即三角形矩陣,再通過回代過程,求出方程組的解。

三、OpenCascade矩陣計(jì)算

在OpenCascade中,矩陣的計(jì)算類是math_Matrix,它可以有任意的行數(shù)和列數(shù),實(shí)現(xiàn)了矩陣大部分的運(yùn)算。以下通過程序?qū)嵗齺碚f明math_Matrix的使用方法:

 

/*
*    Copyright (c) 2013 eryar All Rights Reserved.
*
*        File    : Main.cpp
*        Author  : eryar@163.com
*        Date    : 2013-07-17 21:46
*        Version : 1.0v
*
*    Description : Demonstrate how to use math_Matrix class.
*                  題目來自《線性代數(shù)》同濟(jì) 第四版
*                  
*/

#include 
<math_Matrix.hxx>

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

int main(int argc, char* argv[])
{
    math_Matrix A(
1313);
    math_Matrix B(
1313);
    math_Matrix C(
1313);

    
// 1. Test Matrix Transpose and multiply.
    
// 題目來自P53習(xí)題二 第3題
    
// Set value of Matrix A
    A.Init(1);
    A(
23= -1;
    A(
32= -1;

    
// Set value of Matrix B
    B(11= 1;    B(12= 2;    B(13= 3;
    B(
21= -1;   B(22= -2;   B(23= 4;
    B(
31= 0;    B(32= 5;    B(33= 1;

    C.TMultiply(A, B);

    cout
<<"Matrix A: "<<endl;
    cout
<<A<<endl;
    cout
<<"Matrix B: "<<endl;
    cout
<<B<<endl;
    cout
<<"Matrix C: "<<endl;
    cout
<<C<<endl;

    
// 2. Test the Determinant of the Matrix.
    
// 題目來自P12 例7
    math_Matrix D(1414);
    D(
11= 3;    D(12= 1;    D(13= -1;    D(14= 2;
    D(
21= -5;   D(22= 1;    D(23= 3;     D(24= -4;
    D(
31= 2;    D(32= 0;    D(33= 1;     D(34= -1;
    D(
41= 1;    D(42= -5;   D(43= 3;     D(44= -3;

    cout
<<"Matrix D: "<<endl;
    cout
<<D<<endl;
    cout
<<"Determinant of Matrix D: "<<D.Determinant()<<endl;

    
// 3. Calculate Inverse of the Matrix.
    
// 題目來自P54 11題(3) 和P56 30題(1)
    math_Matrix E(1313);

    E(
11= 1;    E(12= 2;    E(13= -1;
    E(
21= 3;    E(22= 4;    E(23= -2;
    E(
31= 5;    E(32= -4;   E(33= 1;

    cout
<<"Inverse of the Matrix E: "<<endl;
    cout
<<E.Inverse()<<endl;

    
// P56 30題(1)
    math_Matrix F(1414);
    
    F(
11= 5;    F(12= 2;
    F(
21= 2;    F(22= 1;
    F(
33= 8;    F(34= 3;
    F(
43= 5;    F(44= 2;

    cout
<<"Inverse of the Matrix F: "<<endl;
    cout
<<F.Inverse()<<endl;

    
return 0;
}


計(jì)算結(jié)果為:

 1 Matrix A:
 2 math_Matrix of RowNumber = 3 and ColNumber = 3
 3 math_Matrix ( 11 ) = 1
 4 math_Matrix ( 12 ) = 1
 5 math_Matrix ( 13 ) = 1
 6 math_Matrix ( 21 ) = 1
 7 math_Matrix ( 22 ) = 1
 8 math_Matrix ( 23 ) = -1
 9 math_Matrix ( 31 ) = 1
10 math_Matrix ( 32 ) = -1
11 math_Matrix ( 33 ) = 1
12 
13 Matrix B:
14 math_Matrix of RowNumber = 3 and ColNumber = 3
15 math_Matrix ( 11 ) = 1
16 math_Matrix ( 12 ) = 2
17 math_Matrix ( 13 ) = 3
18 math_Matrix ( 21 ) = -1
19 math_Matrix ( 22 ) = -2
20 math_Matrix ( 23 ) = 4
21 math_Matrix ( 31 ) = 0
22 math_Matrix ( 32 ) = 5
23 math_Matrix ( 33 ) = 1
24 
25 Matrix C:
26 math_Matrix of RowNumber = 3 and ColNumber = 3
27 math_Matrix ( 11 ) = 0
28 math_Matrix ( 12 ) = 5
29 math_Matrix ( 13 ) = 8
30 math_Matrix ( 21 ) = 0
31 math_Matrix ( 22 ) = -5
32 math_Matrix ( 23 ) = 6
33 math_Matrix ( 31 ) = 2
34 math_Matrix ( 32 ) = 9
35 math_Matrix ( 33 ) = 0
36 
37 Matrix D:
38 math_Matrix of RowNumber = 4 and ColNumber = 4
39 math_Matrix ( 11 ) = 3
40 math_Matrix ( 12 ) = 1
41 math_Matrix ( 13 ) = -1
42 math_Matrix ( 14 ) = 2
43 math_Matrix ( 21 ) = -5
44 math_Matrix ( 22 ) = 1
45 math_Matrix ( 23 ) = 3
46 math_Matrix ( 24 ) = -4
47 math_Matrix ( 31 ) = 2
48 math_Matrix ( 32 ) = 0
49 math_Matrix ( 33 ) = 1
50 math_Matrix ( 34 ) = -1
51 math_Matrix ( 41 ) = 1
52 math_Matrix ( 42 ) = -5
53 math_Matrix ( 43 ) = 3
54 math_Matrix ( 44 ) = -3
55 
56 Determinant of Matrix D: 40
57 Inverse of the Matrix E:
58 math_Matrix of RowNumber = 3 and ColNumber = 3
59 math_Matrix ( 11 ) = -2
60 math_Matrix ( 12 ) = 1
61 math_Matrix ( 13 ) = -8.88178e-017
62 math_Matrix ( 21 ) = -6.5
63 math_Matrix ( 22 ) = 3
64 math_Matrix ( 23 ) = -0.5
65 math_Matrix ( 31 ) = -16
66 math_Matrix ( 32 ) = 7
67 math_Matrix ( 33 ) = -1
68 
69 Inverse of the Matrix F:
70 math_Matrix of RowNumber = 4 and ColNumber = 4
71 math_Matrix ( 11 ) = 1
72 math_Matrix ( 12 ) = -2
73 math_Matrix ( 13 ) = 0
74 math_Matrix ( 14 ) = 0
75 math_Matrix ( 21 ) = -2
76 math_Matrix ( 22 ) = 5
77 math_Matrix ( 23 ) = -0
78 math_Matrix ( 24 ) = -0
79 math_Matrix ( 31 ) = 0
80 math_Matrix ( 32 ) = 0
81 math_Matrix ( 33 ) = 2
82 math_Matrix ( 34 ) = -3
83 math_Matrix ( 41 ) = -0
84 math_Matrix ( 42 ) = -0
85 math_Matrix ( 43 ) = -5
86 math_Matrix ( 44 ) = 8
87 
88 Press any key to continue . . .


線性方程組的計(jì)算方法請(qǐng)參考另一篇blog:

使用OpenCASCADE的Math功能解線性方程組

http://m.shnenglu.com/eryar/archive/2012/06/21/179629.html

四、結(jié)論 Conclusion

OpenCascade的math_Matrix實(shí)現(xiàn)了矩陣的大部分運(yùn)算,也可以作為一個(gè)小型的C++矩陣計(jì)算庫來使用,在沒有安裝Matlab、Mathematica等軟件的情況下,可以使用這個(gè)庫進(jìn)行一些計(jì)算。

另外,對(duì)《計(jì)算方法》中算法感興趣的讀者可以參考OpenCascade其中代碼的實(shí)現(xiàn),加深對(duì)相關(guān)算法的理解。

五、參考文獻(xiàn) Bibliography

1. 同濟(jì)大學(xué)應(yīng)用數(shù)學(xué)系 線性代數(shù) 高等教育出版社 2003

2. 易大義,沈云寶,李有法 計(jì)算方法 浙江大學(xué)出版社 2002

 

PDF Version: OpenCascade Matrix

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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热福利| 一区二区毛片| 亚洲欧美国产精品专区久久| 欧美一区二区啪啪| 国产精品社区| 国产伦理精品不卡| 国产午夜精品一区二区三区视频 | 久久久国产精品亚洲一区| 久久久久国产一区二区三区四区| 久久先锋影音| 欧美日韩在线亚洲一区蜜芽| 国产精品免费小视频| 国产在线拍偷自揄拍精品| 亚洲成人资源网| 中国亚洲黄色| 久久亚洲一区| 夜夜嗨av一区二区三区四区| 欧美一区二区视频97| 欧美成人亚洲成人| 国产精品一区在线播放| 亚洲国产色一区| 亚洲欧美在线免费| 亚洲高清色综合| 亚洲国产精品一区二区第一页| 亚洲视频久久| 欧美激情1区2区3区| 国产精品综合av一区二区国产馆| 亚洲国产mv| 久久国产精品久久w女人spa| 亚洲国产一区二区视频| 午夜在线电影亚洲一区| 欧美日本不卡| 亚洲国产精品精华液2区45 | 亚洲黄色免费| 久久丁香综合五月国产三级网站| 欧美福利一区| 精品成人a区在线观看| 亚洲天堂偷拍| 亚洲国产欧美久久| 久久久久成人精品| 国产欧美一区二区三区在线老狼| 亚洲精品一线二线三线无人区| 欧美中在线观看| 一区二区激情| 欧美日韩不卡视频| 亚洲免费激情| 亚洲电影免费| 蜜月aⅴ免费一区二区三区| 国产一区二区精品久久91| 午夜视频精品| 亚洲专区一区二区三区| 欧美三级视频| 亚洲午夜电影网| 中日韩高清电影网| 国产精品久久久久三级| 亚洲一区二区三区四区在线观看| 亚洲激情一区二区| 欧美视频国产精品| 欧美日韩一本到| 99精品视频免费全部在线| 欧美顶级艳妇交换群宴| 久久综合网色—综合色88| 亚洲成人在线网| 亚洲高清av在线| 欧美精品午夜| 亚洲丝袜av一区| 亚洲资源在线观看| 黄色亚洲网站| 欧美高清hd18日本| 欧美连裤袜在线视频| 亚洲午夜一区二区三区| 这里只有精品视频| 国产免费成人av| 久久久噜噜噜久久中文字免| 久久婷婷成人综合色| 亚洲激情视频在线观看| 日韩视频在线观看一区二区| 国产精品久久久久高潮| 久久丁香综合五月国产三级网站| 久久精品91久久香蕉加勒比| 亚洲国产精品小视频| 亚洲日本中文字幕| 国产精品丝袜xxxxxxx| 久久久www成人免费精品| 美女免费视频一区| 午夜一区二区三区在线观看| 久久国产视频网站| 亚洲精品在线一区二区| 日韩一区二区免费看| 国产综合色产在线精品| 亚洲精品欧美一区二区三区| 国产精品五区| 亚洲国产高清高潮精品美女| 国产精品久久久久久av下载红粉| 久久久久国产一区二区三区四区| 欧美不卡激情三级在线观看| 亚洲欧美视频一区| 老司机免费视频久久| 欧美在线精品一区| 欧美片第一页| 久久综合亚州| 国产精品五月天| 日韩视频久久| 亚洲丰满在线| 亚洲永久免费精品| 99视频国产精品免费观看| 欧美在线观看视频一区二区三区| 日韩一级大片| 久久网站免费| 久久婷婷国产综合精品青草 | 久久综合精品一区| 午夜一级久久| 欧美午夜电影网| 欧美丰满高潮xxxx喷水动漫| 国产精品伊人日日| 99riav1国产精品视频| 91久久香蕉国产日韩欧美9色| 午夜久久美女| 欧美一区二区视频97| 欧美日韩第一页| 久久最新视频| 久久综合亚洲社区| 久久精品在线观看| 国产精品美女一区二区在线观看| 亚洲国产精品久久久久| 国产专区综合网| 亚洲永久免费观看| 午夜视频在线观看一区二区三区| 欧美日韩黄色大片| 亚洲三级观看| 9l国产精品久久久久麻豆| 欧美sm极限捆绑bd| 亚洲国产欧美一区二区三区久久| 在线播放精品| 久久五月天婷婷| 男男成人高潮片免费网站| 国产在线视频欧美| 久久精品视频va| 免费精品99久久国产综合精品| 黄色成人片子| 久久另类ts人妖一区二区| 老司机精品导航| 亚洲国产精品传媒在线观看| 免费中文日韩| av成人毛片| 午夜视频久久久| 狠狠色香婷婷久久亚洲精品| 久久久久久91香蕉国产| 欧美黄色aaaa| 宅男噜噜噜66一区二区| 国产精品多人| 欧美一区二区大片| 欧美凹凸一区二区三区视频| 亚洲精品国产精品国自产观看| 欧美激情片在线观看| 在线视频欧美日韩| 久久久国产91| 亚洲美女av在线播放| 欧美亚洲第一页| 欧美亚洲综合久久| 亚洲高清网站| 午夜亚洲激情| 亚洲福利视频网| 欧美偷拍一区二区| 欧美在线播放| 亚洲欧洲一区二区三区在线观看 | 日韩视频永久免费观看| 欧美日韩在线视频一区| 欧美在线高清| 亚洲美女精品久久| 久久精品免视看| 99视频一区二区| 精品不卡一区二区三区| 欧美午夜寂寞影院| 久久夜色精品亚洲噜噜国产mv | 久久人人看视频| 国产精品99久久99久久久二8| 韩国精品一区二区三区| 欧美日本中文字幕| 欧美专区在线播放| 99国产精品久久久久老师| 美女国内精品自产拍在线播放| 亚洲色图自拍| 在线免费观看日本欧美| 欧美视频免费| 蜜臀久久久99精品久久久久久| 亚洲一区精彩视频| 亚洲国产一区二区三区高清 | 欧美激情精品久久久久久黑人| 亚洲精品在线一区二区| 久久久久五月天| 亚洲综合日本| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲人成网站在线观看播放| 久久久九九九九| 午夜亚洲福利| 亚洲视频免费在线观看| 亚洲黄页视频免费观看|