在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 _matrix(int mm,int nn)
//設定m
public void set_mn(int mm,int nn)
//設定m
public void set_m(int mm)
//設定n
public void set_n(int nn)
//初始化
public void init_matrix()
//釋放
public void free_matrix()
//讀取i,j座標的資料
//失敗返回-31415,成功返回值
public float read(int i,int j)
//return *(arr + i * n + j);
return arr[i * n + j];
} //寫入i,j座標的資料
//失敗返回-1,成功返回1
public int write(int i,int j,float val)
arr[i * n + j] = val;
return 1;
} };//二維運算類
class _matrix_calc
//c = a + b
//成功返回1,失敗返回-1
public int add(ref _matrix a,ref _matrix b,ref _matrix c)
//運算
for (i = 0;i < c.m;i++)
} return 1;
} //c = a - b
//成功返回1,失敗返回-1
public int subtract(ref _matrix a,ref _matrix b, ref _matrix c)
//運算
for (i = 0;i < c.m;i++)
} return 1;
} //c = a * b
//成功返回1,失敗返回-1
public int multiply(ref _matrix a, ref _matrix b, ref _matrix c)
//運算
for (i = 0;i < c.m;i++)
c.write(i,j,temp);
} }
return 1;
} //行列式的值,只能計算2 * 2,3 * 3
//失敗返回-31415,成功返回值
public float det(ref _matrix a)
//運算
if (a.m == 2)
else
return value;
}//求轉置矩陣,b = at
//成功返回1,失敗返回-1
public int transpos(ref _matrix a,ref _matrix b)
//運算
for (i = 0;i < b.m;i++)
} return 1;
} //求逆矩陣,b = a^(-1)
//成功返回1,失敗返回-1
public int inverse(ref _matrix a, ref _matrix b)
/* //如果是2維或者3維求行列式判斷是否可逆
if (a.m == 2 || a.m == 3)
} */
//增廣矩陣m = a | b初始化
m.init_matrix();
for (i = 0;i < m.m;i++)
else
else
} }
} //高斯消元
//變換下三角
for (k = 0;k < m.m - 1;k++)
} if (i >= m.m)
else
} }
//消元
for (i = k + 1;i < m.m;i++)
} }
//變換上三角
for (k = m.m - 1;k > 0;k--)
} if (i >= m.m)
else
} }
//消元
for (i = k - 1;i >= 0;i--)
} }
//將左邊方陣化為單位矩陣
for (i = 0;i < m.m;i++)
} }
//求得逆矩陣
for (i = 0;i < b.m;i++)
} //釋放增廣矩陣
m.free_matrix();
return 1;
} };
namespace test
} for (i = 0;i < m2.m;i++)
}m_c.multiply(ref m1,ref m2, ref m3);
= convert.tostring(m3.read(1,1));
output.text = convert.tostring(m_c.det(ref m1));}/*
private void button1_click(object sender, eventargs e)
private void textbox1_textchanged(object sender, eventargs e)
* */
}}
C 中矩陣運算的實現
這兩天圖形學的實驗對三維圖形進行放縮平移投影,裡面需要用到一些矩陣的運算,於是需要動手寫乙個矩陣運算的類cmatrix mfc中進行開發所以第乙個字母是c 最好做的和普通的數字預算一樣簡單。由於在mfc程式中圖形變化是不斷進行的,需要大量矩陣預算,並且程序會一直保持執行狀態,所以矩陣預算要進行手動記...
矩陣的基本運算(C實現)
使用函式來實現對矩陣的基本輸入輸出以及求和 相乘等運算。include define n 10 void print matrix float a,int m,int n 列印矩陣 void input matrix float a,int m,int n 輸入矩陣 void multiply ma...
C語言實現矩陣運算
最近在學習機械人運動控制學,用到了矩陣運算,並用c語言實現之 首先宣告該 在ubuntu18.04下執行通過,如若在windows下執行失敗請考慮編譯器版本問題 乙個矩陣最基本的有行數line,列數row和 行數乘以列數個資料 row line 所以用乙個最基本的結構體變數來表示乙個矩陣 矩陣的結構...