原生矩陣操作類及方法

2021-07-15 19:59:59 字數 2983 閱讀 4885

package com.util;

/** */

public class matrix

/* * 杜航 功能: 構造n行n列的空矩陣

*/public matrix(int n)

/* * 杜航 功能: 無參建構函式預設構造2行2列的空矩陣

*/public matrix()

/* * 杜航 功能: 構造矩陣,由陣列mat提供矩陣元素

*/public matrix(float mat)

/* * 杜航 功能: 獲得矩陣第i行第j列的元素

*/public float get(int i, int j)

/* * 杜航 功能: 設定矩陣第i行第j列的元素

*/public void set(int i, int j, int k)

/* * 杜航 功能: 行主序遍歷,訪問矩陣全部元素

*/public string tostring()

return str;

} /*

* 杜航 功能: this和b兩個矩陣相加,改變當前矩陣

*/public void add(matrix b)

/* * 杜航 功能:this和b兩個矩陣相減,改變當前矩陣

*/public void minus(matrix b)

/* * 杜航 功能: 矩陣相乘:當前矩陣=當前矩陣*b

*/public matrix multi(matrix b)

matrix temp = new matrix(value.length, b.value[0].length);

for (int i = 0; i < value.length; i++)

for (int j = 0; j < b.value[0].length; j++)

this.value = temp.value;

return this;

} /*

* 杜航 功能: 返回轉置矩陣

*/public matrix transpose()

/* * 杜航 功能: 返回伴隨矩陣

*/private matrix ajoint() else }}

return temp.transpose();

} else

} /*

* 杜航 功能: 返回行列式的代數余子式

*/private matrix detcofactor(int i, int j) else

}} else else }}

} return temp;

} /*

* 杜航 功能:求解矩陣(行列式)的模值

*/public float detvalue() else else

}} return val;

} /*

* 杜航 功能:求n*n矩陣的逆矩陣

*/public matrix reverse()

}return temp;

} else

} /*

* 杜航 功能:main()測試矩陣的基本操作函式

*/public static void main(string args) , };

matrix a = new matrix(m1);

float m2 = , , };

matrix b = new matrix(m2);

system.out.print("matrix a:\n" + a.tostring());

system.out.print("matrix b:\n" + b.tostring());

a.multi(b);

system.out.print("matrix a*b:\n" + a.tostring());

system.out.println("a的轉置矩陣:\n" + a.transpose().tostring());

float m3 = , , };

matrix c = new matrix(m3);

system.out.println("value of det:\n" + c.detcofactor(3, 3).tostring());

float m4 = , };

matrix d = new matrix(m4);

system.out.println("value of det:\n" + d.detvalue());

float m5 = , , };

matrix e = new matrix(m5);

system.out.println("伴隨矩陣:\n" + e.ajoint().tostring());

float m51 = , };

matrix e1 = new matrix(m51);

system.out.println("伴隨矩陣:\n" + e1.ajoint().tostring());

float m6 = , , };

matrix f = new matrix(m6);

system.out.println("逆矩陣:\n" + f.reverse().tostring());

float m7 = , };

matrix g = new matrix(m7);

system.out.println("逆矩陣:\n" + g.reverse().tostring());

// 驗證 「矩陣伴隨的轉置等於矩陣轉置的伴隨」

float m8 = , , };

matrix h = new matrix(m8);

system.out.println("矩陣伴隨的轉置:\n" + h.ajoint().transpose().tostring());

system.out.println("矩陣轉置的伴隨:\n" + h.transpose().ajoint().tostring());

}}

javascript各種方法的原理及原生實現

object.create function obj f.prototype obj return new f var newobj object.create obj 原型鏈的關係如下 newobj.proto f.prototype obj 訪問順序 newobj newobj.proto ob...

原生js對陣列的操作方法

pop 刪除陣列的最後乙個元素 shift 刪除陣列的第乙個元素 返回值被刪除的元素push 在陣列的末尾新增乙個或多個元素 unshift 在陣列的開頭新增乙個或多個元素 返回值陣列的長度sort 無引數按照首個字元的unicode編碼值進行排序 有引數按照引數指定的順序進行排序sort排序 va...

Python 類 類的建立及操作

1,類的建立 class person object init函式是乙個建構函式,在建立例項過程中自動執行,為例項的初始化工作。name為init函式的區域性變數,self.name是例項的屬性,二者看似相同,實則區別很大。通過self.name name的方式,我們可以把name屬性賦值給self...