中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

C#中矩陣運算方法實例分析
來源:易賢網 閱讀:1258 次 日期:2015-04-24 10:30:30
溫馨提示:易賢網小編為您整理了“C#中矩陣運算方法實例分析”,方便廣大網友查閱!

C#中矩陣運算方法實例分析

這篇文章主要介紹了C#中矩陣運算方法,實例分析了通過C#實現矩陣的初始化、轉置矩陣、求逆矩陣等各種常用的操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了C#中矩陣運算方法。分享給大家供大家參考。具體分析如下:

一、測試環境:

主機:XP

開發環境:VS2008

二、功能:

在C#中實現矩陣運算

三、源代碼:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

//矩陣數據結構

//二維矩陣

class _Matrix

{

public int m;

public int n;

public float[] arr;

//初始化

public _Matrix()

{

m = 0;

n = 0;

}

public _Matrix(int mm,int nn)

{

m = mm;

n = nn;

}

//設置m

public void set_mn(int mm,int nn)

{

m = mm;

n = nn;

}

//設置m

public void set_m(int mm)

{

m = mm;

}

//設置n

public void set_n(int nn)

{

n = nn;

}

//初始化

public void init_matrix()

{

arr = new float[m * n];

}

//釋放

public void free_matrix()

{

//delete [] arr;

}

//讀取i,j坐標的數據

//失敗返回-31415,成功返回值

public float read(int i,int j)

{

if (i >= m || j >= n)

{

return -31415;

}

//return *(arr + i * n + j);

return arr[i * n + j];

}

//寫入i,j坐標的數據

//失敗返回-1,成功返回1

public int write(int i,int j,float val)

{

if (i >= m || j >= n)

{

return -1;

}

arr[i * n + j] = val;

return 1;

}

};

//二維運算類

class _Matrix_Calc

{

//初始化

public _Matrix_Calc()

{

}

//C = A + B

//成功返回1,失敗返回-1

public int add(ref _Matrix A,ref _Matrix B,ref _Matrix C)

{

int i = 0;

int j = 0;

//判斷是否可以運算

if (A.m != B.m || A.n != B.n ||

A.m != C.m || A.n != C.n)

{

return -1;

}

//運算

for (i = 0;i < C.m;i++)

{

for (j = 0;j < C.n;j++)

{

C.write(i,j,A.read(i,j) + B.read(i,j));

}

}

return 1;

}

//C = A - B

//成功返回1,失敗返回-1

public int subtract(ref _Matrix A,ref _Matrix B, ref _Matrix C)

{

int i = 0;

int j = 0;

//判斷是否可以運算

if (A.m != B.m || A.n != B.n ||

A.m != C.m || A.n != C.n)

{

return -1;

}

//運算

for (i = 0;i < C.m;i++)

{

for (j = 0;j < C.n;j++)

{

C.write(i,j,A.read(i,j) - B.read(i,j));

}

}

return 1;

}

//C = A * B

//成功返回1,失敗返回-1

public int multiply(ref _Matrix A, ref _Matrix B, ref _Matrix C)

{

int i = 0;

int j = 0;

int k = 0;

float temp = 0;

//判斷是否可以運算

if (A.m != C.m || B.n != C.n ||

A.n != B.m)

{

return -1;

}

//運算

for (i = 0;i < C.m;i++)

{

for (j = 0;j < C.n;j++)

{

temp = 0;

for (k = 0;k < A.n;k++)

{

temp += A.read(i,k) * B.read(k,j);

}

C.write(i,j,temp);

}

}

return 1;

}

//行列式的值,只能計算2 * 2,3 * 3

//失敗返回-31415,成功返回值

public float det(ref _Matrix A)

{

float value = 0;

//判斷是否可以運算

if (A.m != A.n || (A.m != 2 && A.m != 3))

{

return -31415;

}

//運算

if (A.m == 2)

{

value = A.read(0,0) * A.read(1,1) - A.read(0,1) * A.read(1,0);

}

else

{

value = A.read(0,0) * A.read(1,1) * A.read(2,2) +

A.read(0,1) * A.read(1,2) * A.read(2,0) +

A.read(0,2) * A.read(1,0) * A.read(2,1) -

A.read(0,0) * A.read(1,2) * A.read(2,1) -

A.read(0,1) * A.read(1,0) * A.read(2,2) -

A.read(0,2) * A.read(1,1) * A.read(2,0);

}

return value;

}

//求轉置矩陣,B = AT

//成功返回1,失敗返回-1

public int transpos(ref _Matrix A,ref _Matrix B)

{

int i = 0;

int j = 0;

//判斷是否可以運算

if (A.m != B.n || A.n != B.m)

{

return -1;

}

//運算

for (i = 0;i < B.m;i++)

{

for (j = 0;j < B.n;j++)

{

B.write(i,j,A.read(j,i));

}

}

return 1;

}

//求逆矩陣,B = A^(-1)

//成功返回1,失敗返回-1

public int inverse(ref _Matrix A, ref _Matrix B)

{

int i = 0;

int j = 0;

int k = 0;

_Matrix m = new _Matrix(A.m,2 * A.m);

float temp = 0;

float b = 0;

//判斷是否可以運算

if (A.m != A.n || B.m != B.n || A.m != B.m)

{

return -1;

}

/*

//如果是2維或者3維求行列式判斷是否可逆

if (A.m == 2 || A.m == 3)

{

if (det(A) == 0)

{

return -1;

}

}

*/

//增廣矩陣m = A | B初始化

m.init_matrix();

for (i = 0;i < m.m;i++)

{

for (j = 0;j < m.n;j++)

{

if (j <= A.n - 1)

{

m.write(i,j,A.read(i,j));

}

else

{

if (i == j - A.n)

{

m.write(i,j,1);

}

else

{

m.write(i,j,0);

}

}

}

}

//高斯消元

//變換下三角

for (k = 0;k < m.m - 1;k++)

{

//如果坐標為k,k的數為0,則行變換

if (m.read(k,k) == 0)

{

for (i = k + 1;i < m.m;i++)

{

if (m.read(i,k) != 0)

{

break;

}

}

if (i >= m.m)

{

return -1;

}

else

{

//交換行

for (j = 0;j < m.n;j++)

{

temp = m.read(k,j);

m.write(k,j,m.read(k + 1,j));

m.write(k + 1,j,temp);

}

}

}

//消元

for (i = k + 1;i < m.m;i++)

{

//獲得倍數

b = m.read(i,k) / m.read(k,k);

//行變換

for (j = 0;j < m.n;j++)

{

temp = m.read(i,j) - b * m.read(k,j);

m.write(i,j,temp);

}

}

}

//變換上三角

for (k = m.m - 1;k > 0;k--)

{

//如果坐標為k,k的數為0,則行變換

if (m.read(k,k) == 0)

{

for (i = k + 1;i < m.m;i++)

{

if (m.read(i,k) != 0)

{

break;

}

}

if (i >= m.m)

{

return -1;

}

else

{

//交換行

for (j = 0;j < m.n;j++)

{

temp = m.read(k,j);

m.write(k,j,m.read(k + 1,j));

m.write(k + 1,j,temp);

}

}

}

//消元

for (i = k - 1;i >= 0;i--)

{

//獲得倍數

b = m.read(i,k) / m.read(k,k);

//行變換

for (j = 0;j < m.n;j++)

{

temp = m.read(i,j) - b * m.read(k,j);

m.write(i,j,temp);

}

}

}

//將左邊方陣化為單位矩陣

for (i = 0;i < m.m;i++)

{

if (m.read(i,i) != 1)

{

//獲得倍數

b = 1 / m.read(i,i);

//行變換

for (j = 0;j < m.n;j++)

{

temp = m.read(i,j) * b;

m.write(i,j,temp);

}

}

}

//求得逆矩陣

for (i = 0;i < B.m;i++)

{

for (j = 0;j < B.m;j++)

{

B.write(i,j,m.read(i,j + m.m));

}

}

//釋放增廣矩陣

m.free_matrix();

return 1;

}

};

namespace test

{

public partial class Form1 : Form

{

double zk;

double xkg, pkg, kk, xk, pk, q, r;

public Form1()

{

InitializeComponent();

xk = 0;

pk = 0;

q = 0.00001;

r = 0.0001;

int i = 0;

int j = 0;

int k = 0;

_Matrix_Calc m_c = new _Matrix_Calc();

//_Matrix m1 = new _Matrix(3,3);

//_Matrix m2 = new _Matrix(3,3);

//_Matrix m3 = new _Matrix(3,3);

_Matrix m1 = new _Matrix(2, 2);

_Matrix m2 = new _Matrix(2, 2);

_Matrix m3 = new _Matrix(2, 2);

//初始化內存

m1.init_matrix();

m2.init_matrix();

m3.init_matrix();

//初始化數據

k = 1;

for (i = 0;i < m1.m;i++)

{

for (j = 0;j < m1.n;j++)

{

m1.write(i,j,k++);

}

}

for (i = 0;i < m2.m;i++)

{

for (j = 0;j < m2.n;j++)

{

m2.write(i,j,k++);

}

}

m_c.multiply(ref m1,ref m2, ref m3);

//output.Text = Convert.ToString(m3.read(1,1));

output.Text = Convert.ToString(m_c.det(ref m1));

}

/*

private void button1_Click(object sender, EventArgs e)

{

zk = Convert.ToDouble(input.Text);

//時間方程

xkg = xk;

pkg = pk + q;

//狀態方程

kk = pkg / (pkg + r);

xk = xkg + kk * (zk - xkg);

pk = (1 - kk) * pkg;

//輸出

output.Text = Convert.ToString(xk);

}

private void textBox1_TextChanged(object sender, EventArgs e)

{

}

* */

}

}

希望本文所述對大家的C#程序設計有所幫助。

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:C#中矩陣運算方法實例分析
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
国产精品区二区三区日本| 欧美国产极速在线| 亚洲图片欧美一区| 欧美日韩视频在线观看一区二区三区| 亚洲国产一区二区三区在线播 | 亚洲免费伊人电影在线观看av| 国产精品成人av性教育| 亚洲欧美欧美一区二区三区| 国产亚洲福利| 美女久久一区| 一区二区三区免费观看| 国产视频观看一区| 欧美电影免费观看大全| 亚洲男女自偷自拍图片另类| 一区二区在线观看av| 欧美日韩一级大片网址| 久久精品国产清高在天天线| 亚洲狠狠丁香婷婷综合久久久| 欧美日韩一区二区三区四区在线观看| 亚洲精品乱码久久久久久蜜桃麻豆 | 国内自拍亚洲| 欧美日本亚洲视频| 久久精品国产精品亚洲综合| 亚洲另类春色国产| 蜜臀久久久99精品久久久久久| 一区二区精品| 亚洲第一精品久久忘忧草社区| 日韩一级视频免费观看在线| 国产精品视频你懂的| 国产精品手机视频| 久久综合色综合88| 亚洲一区影音先锋| 亚洲经典在线看| 国产日韩一区| 欧美日韩免费在线| 欧美不卡在线视频| 久久精品91| 亚洲欧美精品在线| 一本色道久久88精品综合| 国内外成人免费激情在线视频| 欧美精品在线播放| 久久久999国产| 欧美在线免费观看亚洲| 欧美日韩1区| 午夜在线观看免费一区| 美女视频一区免费观看| 国产精品红桃| 欧美精品在线播放| 欧美成人小视频| 榴莲视频成人在线观看| 欧美一区二区三区四区在线观看| 一本久道久久久| 99精品国产一区二区青青牛奶| 亚洲成在线观看| 在线播放国产一区中文字幕剧情欧美 | 狠狠色狠狠色综合日日五| 国产精品免费一区二区三区在线观看| 欧美日韩国产区一| 欧美日韩一区二区三区在线视频 | 久久精品一区二区三区不卡牛牛 | 欧美精品 国产精品| 欧美www在线| 欧美成年网站| 欧美精品三区| 欧美理论片在线观看| 欧美激情在线狂野欧美精品| 欧美精品黄色| 欧美视频福利| 国产精品wwwwww| 国产精品欧美日韩一区二区| 国产精品色婷婷久久58| 国产免费亚洲高清| 国语自产精品视频在线看8查询8| 国产一区二区三区四区hd| 国产自产精品| 亚洲欧洲一区二区三区久久| 99在线|亚洲一区二区| 亚洲自拍偷拍网址| 欧美在线观看视频在线| 麻豆免费精品视频| 欧美日韩一区二区三区| 国产乱人伦精品一区二区| 韩国三级电影一区二区| 日韩特黄影片| 欧美一区二区三区视频在线| 久久久久在线| 欧美日韩在线播放三区| 国产网站欧美日韩免费精品在线观看 | 欧美一区二区免费| 蜜桃久久av| 欧美午夜久久久| 一区福利视频| 亚洲视频电影图片偷拍一区| 久久精品99国产精品| 欧美激情亚洲一区| 国产日韩欧美亚洲一区| 亚洲精品一区二区三区婷婷月| 亚洲欧美精品一区| 欧美国产日韩视频| 国产亚洲欧美另类一区二区三区| 亚洲国产欧美不卡在线观看| 亚洲欧美成人| 欧美日本韩国| 亚洲电影免费在线 | 欧美激情久久久久久| 欧美日韩视频在线一区二区 | 欧美伦理91i| 国内精品99| 亚洲主播在线观看| 欧美v亚洲v综合ⅴ国产v| 国产精品一区二区三区免费观看| 亚洲高清三级视频| 久久国产精品网站| 欧美少妇一区二区| 在线观看一区| 欧美一区在线直播| 欧美日韩一区二区在线| 免费在线欧美黄色| 亚洲欧美日本日韩| 国产女人水真多18毛片18精品视频| 韩日精品视频| 国产精品香蕉在线观看| 国产主播喷水一区二区| 亚洲午夜未删减在线观看| 欧美理论电影在线播放| 亚洲欧美日韩国产综合在线 | 一区二区亚洲| 欧美日韩国产一中文字不卡| 欧美在线观看www| 亚洲淫性视频| 久久久一区二区三区| 国产伦精品一区二区三区四区免费| 亚洲精品一区二区三区樱花| 99国产精品| 国产精品v日韩精品v欧美精品网站 | 欧美国产日韩一区二区在线观看| 国产伦精品一区二区三区视频黑人 | 免费观看在线综合色| 国产在线精品成人一区二区三区| 午夜精品99久久免费| 国产精品免费一区豆花| 亚洲一区在线观看视频| 国产精品国产三级欧美二区| 9久草视频在线视频精品| 欧美日韩国产另类不卡| 亚洲视频在线看| 国产精品一区免费观看| 亚洲欧美综合国产精品一区| 国产精品视频免费观看| 欧美在线地址| 好看的av在线不卡观看| 另类图片国产| 9色porny自拍视频一区二区| 国产精品国产a| 欧美亚洲一区三区| 激情成人综合网| 欧美国产日韩一区二区三区| 亚洲一区二区三区777| 国产欧美一区二区三区久久 | 91久久精品国产91久久| 欧美精品日韩www.p站| 在线一区日本视频| 国产老女人精品毛片久久| 欧美影院午夜播放| 亚洲国产毛片完整版| 欧美日韩精品在线视频| 欧美一区成人| 亚洲国产91| 国产精品扒开腿做爽爽爽软件| 久久国产精品久久久久久久久久| 亚洲国产精品专区久久| 欧美午夜精品久久久久久久| 欧美在线关看| 一区二区三区精品久久久| 国产日韩一区| 欧美日韩一区二区三区免费| 欧美一区二区三区在线观看| 亚洲国产一区二区精品专区| 国产精品免费在线| 欧美激情精品久久久久久久变态| 亚洲欧美一级二级三级| 亚洲黄色精品| 国产午夜精品在线| 欧美日韩亚洲视频| 美女脱光内衣内裤视频久久影院| 亚洲性图久久| 亚洲人成人一区二区在线观看| 国产欧美精品日韩精品| 欧美美女喷水视频| 久久阴道视频| 欧美一级播放| 亚洲天堂激情| 亚洲精品中文字幕在线| 在线播放精品| 国产欧美在线看| 国产精品美女久久久久av超清| 欧美成人激情视频| 久热精品在线| 欧美在线高清视频| 亚洲永久免费精品|