亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? matrix.h

?? c語言編寫數(shù)學常用算法
?? H
字號:
#ifndef MATRIX_H

#define MATRIX_H

// 定義適合數(shù)學運算的實數(shù)matrix類,數(shù)據將存放在buffer類中

#include <iostream.h>
#include <iomanip.h>
#include <stdio.h>

// buffer.h包含實數(shù)緩存類buffer的定義
#include "buffer.h"

// 實數(shù)矩陣類,每個矩陣有rownum行,colnum列,總共rownum乘colnum個實數(shù)
// 下標一律從0開始起算,即存在第0行第0列
class matrix {
 public:
	buffer * buf;  // 緩存區(qū)指針,指向存放實數(shù)的地方,可以是任何媒體
		// buffer類是一抽象類,具體的子類可以將數(shù)據存放在內存或者
		// 臨時文件中,用戶還可以設計自己的緩存區(qū)子類
	size_t rownum, colnum;  // 矩陣的行數(shù)和列數(shù)
	unsigned	istrans:1;		// 轉置標志,0為缺省,1為轉置
	unsigned isneg:1;			// 為負標志,0為非負,1為取負
	unsigned issym:1;			// 對稱標志,0為非對稱,1為對稱,不具有約束力
	// 在下面的所有構造函數(shù)中,緩存區(qū)指針b通常不設,缺省為0,這樣程序將根據
	// 自動申請缺省的緩存區(qū)類型。如果用戶定義了特殊的緩顧慮區(qū)類型,可以
	// 先申請后在構造函數(shù)中指明
	matrix(buffer * b=0); // 缺省構造函數(shù),產生0行0列空矩陣
	matrix(size_t n, buffer * b=0); // 產生nX1列向量
	matrix(size_t r, size_t c, buffer * b=0); // 構造函數(shù),產生r行c列矩陣
	matrix(matrix& m); //拷貝構造函數(shù),產生的矩陣內容同m相同,
		// 新產生的矩陣并不申請新的緩存,而是指向與m同樣的緩存,
		// 只是它們共同指向的緩存的引用數(shù)增1,這樣可以節(jié)省存儲資源
	matrix(const char * filename, buffer * b=0); /* 文件構造函數(shù),
		使用數(shù)據文件對矩陣初使化,數(shù)據文件為文本文件,格式:
		以小寫的matrix關鍵詞打頭,然后是空格,再跟矩陣的行數(shù),再跟
		空格,再跟列數(shù),再跟空格,接著是內容,
		內容按行分,首先是行號,從1開始計數(shù),行號后面緊跟著冒號:,
		然后是這行的數(shù)據,各個數(shù)據之間都用空格或者換行隔開 */
	matrix(void * data, size_t r, size_t c=1, buffer * b=0); /* 數(shù)據構造函數(shù),
		行數(shù)為r,列數(shù)為c,data必須指向一存放實數(shù)的內存,按先列后行的
		順序進行存放。構造函數(shù)進行數(shù)據拷貝,因此在構造函數(shù)完成后,
		data指向的數(shù)據區(qū)可以釋放 */
	DOUBLE operator()(size_t r, size_t c); // 重載函數(shù)運算符()返回第r行第c列的實數(shù),
	DOUBLE operator()(size_t r){return (*this)(r,0);}; // 取回第r行0列的實數(shù)
	virtual void set(size_t r, size_t c, DOUBLE v) {
		size_t l;
		v = isneg ? -v : v;
		l = istrans ? r+c*rownum : r*colnum+c;
		buf = buf->set(l, v); }; // 設置第r行第c列的值為v,
		// 在設置時如果緩存的引用數(shù)大于1,產生新的緩存
		// 因此每次設置返回的緩存區(qū)指針都要再賦給buf。
	void set(size_t r, DOUBLE v) {
		set(r,0,v);};	// 設置第r行0列的值為v,用作列向量
	virtual ~matrix(){ // 析構函數(shù),如果緩存的引用數(shù)大于1,說明還有其它的
			// 矩陣在用此緩存,則不釋放緩存,只是將引用數(shù)減1
		buf->refnum--;
		if(!buf->refnum) delete buf;};
	matrix& operator=(matrix& m); // 重載賦值運算符,使矩陣的內容等于另一個矩陣
	matrix& operator=(DOUBLE a); // 通過賦值運算符將矩陣所有元素設為a
	matrix operator*(DOUBLE a);	// 重載乘法運算符,實現(xiàn)矩陣與數(shù)相乘,矩陣在前
				// 數(shù)在后
	matrix& operator*=(DOUBLE a);  // 重載*=運算符,功能同上,但*產生了一個新
			// 的矩陣,原矩陣不變,而本運算符修改了原矩陣
	friend matrix operator*(DOUBLE a, matrix& m);
			// 數(shù)乘矩陣,但數(shù)在前矩陣在后
	matrix operator+(matrix& m); // 矩陣相加,原二矩陣不變并產生一個新的和矩陣
	matrix& operator+=(matrix &m); // 矩陣相加,不產生新矩陣,有一矩陣的內容改變?yōu)楹?
	matrix operator+(DOUBLE a);	// 矩陣加常數(shù),指每一元素加一固定的常數(shù),產生
											// 新矩陣,原矩陣不變
	friend matrix operator+(DOUBLE a, matrix& m); // 常數(shù)加矩陣,產生新的和矩陣
	matrix& operator+=(DOUBLE a);	// 矩陣自身加常數(shù),自身內容改變

	matrix operator*(matrix& m); // 矩陣相乘,產生出新的矩陣
	matrix& operator*=(matrix& m); // 矩陣相乘,結果修改原矩陣

	matrix operator-(); // 矩陣求負,產生新的負矩陣
	matrix & trans(){
		size_t r = rownum; rownum = colnum; colnum = r;
		istrans = !istrans; return (*this);}; // 矩陣自身轉置
	matrix t(); // 矩陣轉置,產生新的矩陣
	matrix & neg(){isneg = !isneg; return (*this);}; // 將自己求負

	matrix operator-(matrix& m); // 矩陣相減,產生新的矩陣
	matrix& operator-=(matrix& m); // 矩陣相減,結果修改原矩陣
	matrix operator-(DOUBLE a) 	// 矩陣減常數(shù),指每一元素減一固定的常數(shù),產生
											// 新矩陣,原矩陣不變
	{ return (*this)+(-a); };
	friend matrix operator-(DOUBLE a, matrix& m); // 常數(shù)減矩陣,產生新的矩陣
	matrix& operator-=(DOUBLE a)	// 矩陣自身減常數(shù),自身內容改變
	{ return operator+=(-a);};

	int isnear(matrix& m, double e = defaulterr); // 檢查兩個矩陣是否近似相等,
								// 如近似相等則返回1,否則返回0,e為允許誤差
	int isnearunit(double e = defaulterr); // 檢查矩陣是否近似為單位矩陣
								// 如是則返回1,否則返回0,e為允許誤差

	matrix row(size_t r); // 提取第r行行向量
	matrix col(size_t c); // 提取第c列列向量

	void checksym();	// 檢查和嘗試調整矩陣到對稱矩陣

	void swapr(size_t r1, size_t r2, size_t k=0); // 交換兩行,只交換k列以上
	void swapc(size_t c1, size_t c2, size_t k=0); // 交換兩列,只交換k行以上
	void swap(size_t r1, size_t c1, size_t r2, size_t c2){ // 交換兩個元素
		DOUBLE a; a=(*this)(r1,c1);set(r1,c1,(*this)(r2,c2));
		set(r2,c2,a);};
	DOUBLE maxabs(size_t &r, size_t &c, size_t k=0);
		 // 求主元值和位置,即k行k列之后的最大元素,
		// 元素所在的行列將放在r,c中,返回此元素值
	size_t zgsxy(matrix & m, int fn=0);	// 主高斯消元運算
	matrix& operator/=(matrix m); // 用主高斯消元法求解線性方程的解
		// 矩陣本身為系數(shù)矩陣,m為常數(shù)向量,返回解向量
	matrix operator/(matrix m); // 左乘m的逆矩陣

	matrix& inv();		// 用全選主元高斯-約當法求逆矩陣
	matrix operator~();	// 求逆矩陣,但產生新矩陣
	friend matrix operator/(DOUBLE a, matrix& m); // 求逆矩陣再乘常數(shù)
	matrix& operator/=(DOUBLE a); // 所有元素乘a的倒數(shù),自身改變
	matrix operator/(DOUBLE a); // 所有元素乘a的倒數(shù),產生新的矩陣
	matrix cholesky(matrix& d);	// 用喬里斯基分解法求對稱正定陣的線性
		// 方程組ax=d返回方程組的解,本身為a,改變?yōu)榉纸怅噓,d不變

	DOUBLE det(DOUBLE err=defaulterr);		// 求行列式的值
	size_t rank(DOUBLE err=defaulterr);		// 求矩陣的秩

	void house(buffer & b, buffer & c); // 用豪斯荷爾德變換將對稱陣變?yōu)閷ΨQ三對
											// 角陣,b返回主對角線元素,c返回次對角線元素
	void trieigen(buffer& b, buffer& c, size_t l=600, DOUBLE eps=defaulterr);
						// 計算三對角陣的全部特征值與特征向量
	matrix eigen(matrix & eigenvalue, DOUBLE eps=defaulterr, size_t l=600);
		 // 計算對稱陣的全部特征向量和特征值
		// 返回按列排放的特征向量,而eigenvalue將返回一維矩陣,為所有特征值
		// 組成的列向量
	int ispositive();		// 判定矩陣是否對稱非負定陣,如是返回1,否則返回0

	void hessenberg();	// 將一般實矩陣約化為赫申伯格矩陣
	void qreigen(matrix & a, matrix & b, size_t l=600, DOUBLE eps=defaulterr);
		// 求一般實矩陣的所有特征根
		// a和b均返回rownum行一列的列向量矩陣,返回所有特征根的實部和虛部

	friend ostream& operator<<(ostream& o, matrix& m);
	friend istream& operator>>(istream& in, matrix& m);
	virtual DOUBLE value(size_t r, size_t c){ // 返回第r行c列的數(shù)值,不做行列檢查
		DOUBLE a;
		a = istrans ? (*buf)[r+c*rownum] : (*buf)[r*colnum + c];
		return isneg ? -a : a;
	};
 protected:
	DOUBLE detandrank(size_t & r, DOUBLE err);	// 求方陣的行列式和秩
};

inline matrix operator*(DOUBLE a, matrix& m) {
	return m*a;
};

inline matrix operator+(DOUBLE a, matrix& m) { // 常數(shù)加矩陣,產生新的和矩陣
	return m+a;
};

matrix operator-(DOUBLE a, matrix& m); // 常數(shù)減矩陣,產生新的矩陣
matrix operator/(DOUBLE a, matrix& m); // 求逆矩陣再乘常數(shù)


ostream& operator<<(ostream& o, matrix& m);
istream& operator>>(istream& in, matrix& m);

matrix unit(size_t n);	// 產生n階單位矩陣

DOUBLE gassrand(int rr=0);	// 返回一零均值單位方差的正態(tài)分布隨機數(shù)
			// rr為種子

class gassvector //返回零均值給定協(xié)方差陣的正態(tài)隨機向量的類
{
 public:
	matrix a;	// a是增益矩陣,由協(xié)方差矩陣算出
	gassvector(matrix & r);	//r必須是正定對稱陣,為正態(tài)隨機向量的協(xié)方差
	matrix operator()(matrix & r); // 返回給定協(xié)方差矩陣的正態(tài)隨機向量
	matrix operator()();	// 返回已設定的協(xié)方差矩陣的正態(tài)隨機向量
	void setdata(matrix & r); // 根據協(xié)方差矩陣設置增益矩陣
};

DOUBLE lineopt(matrix& a,matrix& b, matrix& c, matrix & x);
	// 線性規(guī)劃最優(yōu)點尋找程序,a為mXn不等式約束條件左端系數(shù)矩陣,b為不等式約束
	// 條件的右端項,為m維向量,c為目標函數(shù)系數(shù),n維向量,x返回極小點,為n維向量

#endif // MATRIX_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩天堂在线观看| 日本精品视频一区二区| 亚洲综合一区在线| 亚洲色图视频免费播放| 欧美经典一区二区| 精品欧美一区二区久久| 欧美美女bb生活片| 在线电影一区二区三区| 欧美片网站yy| 4438x成人网最大色成网站| 欧美日韩中文字幕精品| 欧美丝袜丝交足nylons| 欧美色电影在线| 欧美男女性生活在线直播观看 | 日韩色在线观看| 欧美一区二区三区在线观看| 欧美日韩久久一区| 91精品国产色综合久久| 欧美电影免费观看高清完整版 | 久久久久亚洲蜜桃| 欧美激情自拍偷拍| 亚洲一区二区中文在线| 婷婷丁香久久五月婷婷| 精品综合免费视频观看| 成人在线视频一区二区| 一本色道**综合亚洲精品蜜桃冫| 91福利在线播放| 日韩一级精品视频在线观看| 久久亚洲二区三区| 一区二区三区四区精品在线视频| 亚洲成人激情自拍| 国产在线播放一区三区四| 本田岬高潮一区二区三区| 欧美日韩在线直播| 亚洲精品一线二线三线| 亚洲乱码中文字幕| 狠狠色丁香久久婷婷综合丁香| 国产a级毛片一区| 欧美三级日韩在线| 国产欧美视频在线观看| 亚洲五月六月丁香激情| 国内精品不卡在线| 在线精品国精品国产尤物884a| 欧美一级久久久| 成人免费一区二区三区在线观看| 亚洲sss视频在线视频| 成人免费视频播放| 日韩欧美一二三区| 亚洲动漫第一页| av不卡免费电影| 欧美videos大乳护士334| 一区二区国产视频| gogo大胆日本视频一区| 精品久久一区二区| 日产精品久久久久久久性色| 99国产精品99久久久久久| 欧美一区二区三区在线看| 亚洲已满18点击进入久久| 成人午夜电影小说| 久久综合九色综合欧美就去吻| 亚洲一区在线免费观看| 成人国产精品免费网站| www亚洲一区| 久久精品国产99国产| 欧美性xxxxx极品少妇| 亚洲美女少妇撒尿| 91一区二区在线观看| 亚洲国产高清在线| 国产乱人伦偷精品视频免下载| 91精品国产91综合久久蜜臀| 亚洲一区二区三区四区在线免费观看 | 91精品国产综合久久久蜜臀粉嫩 | 亚洲成a人片综合在线| 日本高清不卡在线观看| 中文字幕亚洲电影| 成人永久看片免费视频天堂| 久久青草欧美一区二区三区| 美腿丝袜亚洲一区| 精品剧情v国产在线观看在线| 日本不卡不码高清免费观看| 91精品国产综合久久久久久久久久 | 91黄色免费网站| 一区二区三区精品久久久| 91碰在线视频| 一区二区三区四区视频精品免费| 91免费看视频| 亚洲国产一二三| 欧美日韩成人综合天天影院 | 国产婷婷色一区二区三区四区 | 国产精品美女www爽爽爽| 成人综合在线观看| 亚洲欧美国产毛片在线| 欧美视频在线不卡| 日韩高清欧美激情| www国产精品av| 成人黄色777网| 一区二区欧美视频| 欧美一级日韩不卡播放免费| 久久精品99久久久| 国产色91在线| 在线一区二区三区四区五区| 亚洲成av人片一区二区| 精品国产乱码久久久久久浪潮| 国产精品一区二区不卡| 亚洲精品久久嫩草网站秘色| 欧美日韩亚洲丝袜制服| 狠狠色丁香久久婷婷综| 亚洲天堂精品视频| 欧美一区二区在线播放| 国产91露脸合集magnet| 亚洲一区二区精品视频| 亚洲精品在线观看网站| 色婷婷国产精品| 美女在线观看视频一区二区| 国产女人18毛片水真多成人如厕| 91国产福利在线| 国产乱妇无码大片在线观看| 一区二区三区在线不卡| 久久久不卡网国产精品一区| 色婷婷av久久久久久久| 黄一区二区三区| 亚洲风情在线资源站| 国产欧美日韩激情| 日韩欧美一二三区| 欧洲精品在线观看| 成人综合婷婷国产精品久久免费| 亚州成人在线电影| 国产精品国产成人国产三级| 欧美一级日韩一级| 欧美视频中文一区二区三区在线观看 | 中文字幕一区二区三区蜜月| 欧美一二三四区在线| 日本精品视频一区二区三区| 国产成人精品亚洲日本在线桃色| 亚洲国产欧美一区二区三区丁香婷| 国产亚洲综合色| 欧美成人一区二区三区片免费| 色菇凉天天综合网| 成人免费看的视频| 国产美女精品在线| 免费看欧美美女黄的网站| 亚洲综合男人的天堂| 国产精品午夜春色av| 国产网站一区二区三区| 欧美成人精精品一区二区频| 91精品国产日韩91久久久久久| 一本色道综合亚洲| 97超碰欧美中文字幕| 丁香婷婷深情五月亚洲| 国产一区二区三区免费| 极品美女销魂一区二区三区免费| 日本不卡一二三| 日韩成人精品在线| 美女网站色91| 久久精品国产精品亚洲综合| 久久91精品久久久久久秒播| 日韩国产欧美在线视频| 秋霞av亚洲一区二区三| 欧美96一区二区免费视频| 日韩电影在线免费| 日本色综合中文字幕| 美美哒免费高清在线观看视频一区二区 | 亚洲国产日韩一级| 亚洲第一激情av| 日韩二区三区四区| 久久99热99| 粉嫩13p一区二区三区| 国产不卡视频在线播放| 懂色av一区二区夜夜嗨| 成熟亚洲日本毛茸茸凸凹| 成人精品免费看| 91小视频在线免费看| 欧美天堂一区二区三区| 日韩欧美国产成人一区二区| 精品久久久久久久一区二区蜜臀| 亚洲精品一区二区三区四区高清| 久久中文字幕电影| 亚洲女人****多毛耸耸8| 亚洲国产视频一区二区| 久久国产麻豆精品| 成人高清视频在线| 欧美色图第一页| 久久综合色8888| 亚洲精品乱码久久久久久黑人| 污片在线观看一区二区| 黄色小说综合网站| 色狠狠综合天天综合综合| 欧美一卡二卡三卡四卡| 国产日韩欧美a| 亚洲va韩国va欧美va| 极品瑜伽女神91| 91国偷自产一区二区开放时间| 欧美一区二区三区思思人| 久久综合狠狠综合| 亚洲综合在线免费观看| 国产一区二区在线影院| 日本韩国视频一区二区| 久久久影视传媒| 性做久久久久久免费观看欧美| 国产精品1区2区3区在线观看|