最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

用C語言計算行列式

2021-02-16 22:27 作者:風(fēng)氫云氮  | 我要投稿

如何用C語言計算行列式?


首先我們來看一個一般的三階行列式

D%3D%0A%5Cleft%7C%5Cbegin%7Barray%7D%7Bc%7D%20%0A%20%20%20%20a_%7B11%7D%20%26%20%20%20%20a_%7B12%7D%20%20%20%20%26%20a_%7B13%7D%20%5C%5C%20%0A%20%20%20%20%20a_%7B21%7D%20%26%20%20%20%20%20a_%7B22%7D%20%20%20%26%20%20a_%7B23%7D%5C%5C%20%0A%20%20%20%20%20a_%7B31%7D%20%26%20%20a_%7B32%7D%20%26%20%20a_%7B33%7D%20%0A%5Cend%7Barray%7D%5Cright%7C

對于這么一個行列式我們可以用利用余子式來計算,具體一點就是取這個行列式第一行的每一個元素分別乘以對應(yīng)的代數(shù)余子式,再相加

D%20%3D%20a_%7B11%7DA_%7B11%7D%20%2B%20a_%7B12%7DA_%7B12%7D%20%2Ba_%7B13%7DA_%7B13%7D

每個余子式又都是二階行列式,這時就可以用對角線法則來計算。這樣就得到了D的值。


下面來考慮如何用代碼實現(xiàn)這一過程。

1. 創(chuàng)建一個N階行列式

  • 為了便于得到余子式,可以用結(jié)構(gòu)體儲存每一行的元素,并用鏈表鏈接這些結(jié)構(gòu)體

  • 參數(shù):N 行列式階數(shù)

2. 創(chuàng)建余子式

  • 創(chuàng)建余子式與創(chuàng)建行列式異曲同工,先得到已經(jīng)創(chuàng)建好的行列式指針,再創(chuàng)建一個N-1階行列式,并對新行列式賦上舊行列式除第一行第c列的元素

A_%7B12%7D%20%3D%20%5Cleft%7C%5Cbegin%7Barray%7D%7Bc%7D%20%0A%20%20%20%20%EF%BC%9F%20%26%20%20%20%20%EF%BC%9F%20%20%20%20%5C%5C%20%0A%20%20%20%20%20%EF%BC%9F%20%26%20%20%20%20%20%EF%BC%9F%20%20%20%0A%5Cend%7Barray%7D%5Cright%7C%0A%3D%20%5Cleft%7C%5Cbegin%7Barray%7D%7Bc%7D%20%0A%20%20%20%20%7B%5Ccolor%7Bred%7D%20%7Ba_%7B11%7D%7D%7D%20%26%20%20%20%20%20%7B%5Ccolor%7Bred%7D%20%7Ba_%7B12%7D%7D%7D%20%20%20%20%26%20%20%7B%5Ccolor%7Bred%7D%20%7Ba_%7B13%7D%7D%7D%20%5C%5C%20%0A%20%20%20%20%20%20%7B%5Ccolor%7Bgreen%7D%20%7Ba_%7B21%7D%7D%7D%20%26%20%20%20%20%20%20%7B%5Ccolor%7Bred%7D%20%7Ba_%7B22%7D%7D%7D%20%20%20%26%20%20%7B%5Ccolor%7Bgreen%7D%20%7Ba_%7B23%7D%7D%7D%20%5C%5C%20%0A%20%20%20%20%20%7B%5Ccolor%7Bgreen%7D%20%7Ba_%7B31%7D%7D%7D%20%26%20%20%7B%5Ccolor%7Bred%7D%20%7Ba_%7B32%7D%7D%7D%20%26%20%20%7B%5Ccolor%7Bgreen%7D%20%7Ba_%7B33%7D%7D%7D%20%20%0A%5Cend%7Barray%7D%5Cright%7C????

此處c為2,即得

A_%7B12%7D%20%3D%20%5Cleft%7C%5Cbegin%7Barray%7D%7Bc%7D%20%0A%20%20%20%20a_%7B21%7D%20%26%20%20%20%20a_%7B23%7D%20%20%20%20%5C%5C%20%0A%20%20%20%20%20a_%7B31%7D%20%26%20%20%20%20%20a_%7B33%7D%20%20%20%0A%5Cend%7Barray%7D%5Cright%7C

  • 參數(shù):p 原行列式指針、N 原行列式階數(shù)、c去除的列數(shù)

3. 計算

  • 計算行列式要根據(jù)階數(shù)分情況討論

    %5Cleft%5C%7B%0A%5Cbegin%7Barray%7D%7Blcl%7D%0A%E5%8D%B3%E4%B8%BA%E8%AF%A5%E5%85%83%E7%B4%A0%E6%9C%AC%E8%BA%AB%20%20%20%20%20%26%20%20%20%20%20%20%26%20%7BN%20%3D%201%7D%5C%5C%0A%E5%88%A9%E7%94%A8%E5%AF%B9%E8%A7%92%E7%BA%BF%E6%B3%95%E5%88%99%20%20%20%20%20%26%20%20%20%20%20%20%26%20%7BN%20%3D%202%7D%5C%5C%0A%E5%88%A9%E7%94%A8%E4%BD%99%E5%AD%90%E5%BC%8F%E8%AE%A1%E7%AE%97%20%20%20%20%20%26%20%20%20%20%20%20%26%20%7BN%20%3E%202%7D%5C%5C%0A%5Cend%7Barray%7D%20%5Cright.

  • 參數(shù):p 待計算的行列式指針、N 行列式階數(shù)

4. main函數(shù)


所需的函數(shù)已經(jīng)準(zhǔn)備好,接下來看看main函數(shù)。

主要的就是創(chuàng)建行列式,并且對每一行賦值

*使用的是scanf_s,而非scanf

  • 整體代碼如下

最后開始計算!

1.

輸入:

????1

????5

輸出:

示例1

2.

輸入:

????2

????2????3

????4????7

輸出:

示例2

3.

輸入:

????6

????5????4????6????1????9????5

????4????9????5????2????4????7

????3????6????9????2????5????7

????1????6????2????4????7????8

????2????3????8????9????4????2

????4????5????6????8????1????3

輸出:

示例3

?4.

輸入:

????5

????1????8????9????4????6

????0????2????6????8????7

????0????0????3????5????9

????0????0????0????4????7

????0????0????0????0????5

輸出:

示例4——上三角行列式

好像算到10多階的時候,算的時間就比較長了,階數(shù)再大一點就會崩潰,可能是沒有free內(nèi)存的緣故,又或者是棧溢出?不過我懶管了啊啊啊啊啊哈哈哈哈哈哈哈哈哈。

用C語言計算行列式的評論 (共 條)

分享到微博請遵守國家法律
承德市| 荥阳市| 大田县| 汉川市| 牙克石市| 河西区| 措美县| 岱山县| 岐山县| 鄂伦春自治旗| 静乐县| 油尖旺区| 西乌珠穆沁旗| 伽师县| 丰镇市| 绥德县| 台北市| 新民市| 芦山县| 县级市| 宜良县| 温泉县| 手游| 章丘市| 昌邑市| 闽侯县| 会昌县| 郎溪县| 林甸县| 邢台市| 清流县| 普兰县| 海南省| 鹿邑县| 淮南市| 抚宁县| 清苑县| 鄂伦春自治旗| 来宾市| 峡江县| 四川省|