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

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

?? vfunc.h

?? 陳必紅 編寫的《用C++語言編寫的數學常用算法》光盤內容
?? H
字號:
#ifndef VFUNC_H
#define VFUNC_H

#include <math.h>

#include "matrix.h"

class valgo	// 矩陣算法類
{
 private:
	DOUBLE yfactor;		// 乘因子,初始化為1
	DOUBLE xfactor;		// x軸放大因子,初始化為1
	DOUBLE addconst;	// 加和,初始化為0
	DOUBLE xshift;		// x平移量,初始化為0
 public:
	unsigned refnum;		// 引用數,初始化為1
	valgo():refnum(1),yfactor(1.0),xfactor(1.0),addconst(0.0),xshift(0.0){};
	 // 構造函數,產生y=x線性函數
	valgo(DOUBLE xs, DOUBLE xf,DOUBLE adc=0, DOUBLE yf=1):refnum(1),yfactor(yf),
		addconst(adc),xshift(xs),xfactor(xf){}; // 為子類的調用而存在的構造函數
	valgo(DOUBLE a):refnum(1),yfactor(0.0),xfactor(1.0),addconst(a),xshift(0.0){};
	 // 常函數的構造,輸出結構與輸入矩陣同樣階數的常數矩陣
	valgo(valgo & alg):yfactor(alg.yfactor),xfactor(alg.xfactor),
		addconst(alg.addconst),xshift(alg.xshift),refnum(1){}; // 拷貝構造函數
	virtual ~valgo(){};
	matrix cal(matrix & x); // 計算算法值
	virtual matrix& calculate(matrix & x)
		{return x;}; // 本身算法,將被繼承子類改寫, 返回的引用須與x同
	virtual valgo * clone(); // 克隆自己,必須被繼承子類改寫
	valgo * mul(DOUBLE a);	// 乘a
	valgo * add(DOUBLE a);	// 加a
	valgo * neg(); // 取負
	valgo * setxfactor(DOUBLE x);		// 設置x軸因子
	valgo * xroom(DOUBLE x);	// 將xfactor擴大x倍
	valgo * setxshift(DOUBLE x); // 設置xshift的值
	valgo * xshiftas(DOUBLE x);	// 從當前開始平移x
};

#ifndef FUNC_H
enum	method {cadd,csub,cmul,cdiv,cpow,ccom}; // 枚舉加減乘除乘方復合這四種運算
#endif

class valgojoin : public valgo // 結合算法
{
 public:
	valgo * leftalgo;	// 左算法,初始化為0
	valgo * rightalgo; // 右算法,初始化為0
	method met;	// 指明算法
	valgojoin(valgo * l, valgo * r, method m):leftalgo(l),
		rightalgo(r), met(m)
		{ if(leftalgo)
				leftalgo->refnum++;
		  if(rightalgo)
				rightalgo->refnum++;
		};
	valgojoin(valgojoin& alg):valgo(alg),
		leftalgo(alg.leftalgo),rightalgo(alg.rightalgo),met(alg.met){
			if(leftalgo)
				leftalgo->refnum++;
			if(rightalgo)
				rightalgo->refnum++;};
			// 拷貝構造函數
	virtual ~valgojoin() {
		if(leftalgo) {	// 如左或者右算法已經沒有被引用,則刪除
			leftalgo->refnum--;
			if(!leftalgo->refnum) delete leftalgo;
		}
		if(rightalgo) {
			rightalgo->refnum--;
			if(!rightalgo->refnum) delete rightalgo;
		}
	};
	virtual valgo * clone(); // 克隆自己
	virtual matrix& calculate(matrix& x);	// 實施結合算法
};

class valgofun : public valgo	// 函數算法
{
 public:
	matrix& (*f)(matrix&);	// 函數指針
	valgofun(matrix& (*fun)(matrix&)):f(fun){};	// 用函數指針進行初始化
	valgofun(valgofun& alg):valgo(alg),f(alg.f){}; // 拷貝構造函數
	virtual matrix& calculate(matrix& x);	// 實施函數算法
	virtual valgo * clone(); // 克隆自己
};

class valgofun1 : public valgo	// 標量到向量的函數算法
{
 public:
	matrix (*f)(DOUBLE);	// 標量到向量的函數指針
	valgofun1(matrix (*fun)(DOUBLE)):f(fun){};	// 用函數指針進行初始化
	valgofun1(valgofun1& alg):valgo(alg),f(alg.f){}; // 拷貝構造函數
	virtual matrix& calculate(matrix& x);	// 實施函數算法
	virtual valgo * clone(); // 克隆自己
};

class valgodiff : public valgo	// 微分方程組函數算法
{
 public:
	matrix (*f)(DOUBLE,matrix&);	// 表示f(t,y)的函數指針,y為向量
	DOUBLE t0;	// 初始變量
	matrix y0;	// 初值或稱邊界條件
	DOUBLE tnow;	// 最近值
	matrix ynow;	// 最近算得的y值
	valgodiff(matrix (*fun)(DOUBLE,matrix&), DOUBLE tt0, matrix& yy0):
		f(fun),t0(tt0),y0(yy0),tnow(tt0),ynow(yy0){};
	valgodiff(valgodiff& alg):valgo(alg),f(alg.f),t0(alg.t0),y0(alg.y0),
		tnow(alg.tnow),ynow(alg.ynow){};	// 拷貝構造函數
	virtual matrix& calculate(matrix& x);	// 實施函數算法
	virtual valgo * clone(); // 克隆自己
	matrix& calcul(DOUBLE t, DOUBLE eps=defaulterr);	// 標量算法
};

class vfunc {	// 矩陣函數類
 public:
	valgo * alg;	// 決定函數的算法

	vfunc();	// 缺省構造函數
	vfunc(DOUBLE a);	// 常函數的構造函數
	vfunc(matrix& (*fun)(matrix&));	// 函數指針的構造函數
	vfunc(matrix (*fun)(DOUBLE t)); // 標量到向量的函數指針構造函數
	vfunc(vfunc & fn);	// 拷貝構造函數
	vfunc(valgo * a):alg(a){} // 算法構造函數,使用要小心,不能將一個算法產生
									// 兩個函數,除非自己控制引用數的增加
	virtual ~vfunc() {		// 析構函數
		if(alg) {
			alg->refnum--;	// 引用數減一,如再無其它引用,則刪除算法
			if(!alg->refnum)
				delete alg;
		}
	};

	matrix operator()(matrix& x){return alg->cal(x);}; // 計算x的函數值
	vfunc& operator=(vfunc& fn);	// 賦值運算符
	vfunc& operator=(matrix& (*fn)(matrix&)); // 用函數指針的賦值運算符
	vfunc& operator=(DOUBLE a); // 常函數的賦值運算符

	vfunc& operator+=(vfunc& fn);	// 自身加一個函數
	vfunc& operator+=(DOUBLE a){alg=alg->add(a);return (*this);};//自身加一個常數
	vfunc& operator+=(matrix& (*f)(matrix&)); // 自身加一個函數指針
	vfunc operator+(vfunc& fn);	// 相加產生新函數
	vfunc operator+(DOUBLE a);	// 與常數相加產生新函數
	friend vfunc operator+(DOUBLE a, vfunc& f); // 同上但常數在前
	vfunc operator+(matrix& (*f)(matrix&)); // 加一個函數指針產生新函數
	friend vfunc operator+(matrix& (*f)(matrix&),vfunc& fn);
		 // 同上但函數指針在前

	vfunc& neg(); // 自身取負
	vfunc operator-(); // 產生負函數

	vfunc& operator-=(vfunc& fn); // 自身減一個函數
	vfunc& operator-=(DOUBLE a){alg=alg->add(-a);return (*this);};
				//自身減一個常數
	vfunc& operator-=(matrix& (*f)(matrix&)); // 自身減一個函數指針
	vfunc operator-(vfunc& fn);	// 相減產生新函數
	vfunc operator-(DOUBLE a);	// 與常數相減產生新函數
	friend vfunc operator-(DOUBLE a, vfunc& f); // 同上但常數在前
	vfunc operator-(matrix& (*f)(matrix&)); // 減一個函數指針產生新函數
	friend vfunc operator-(matrix& (*f)(matrix&),vfunc& fn); // 函數指針減函數

	vfunc& operator*=(vfunc& fn);	// 自身乘一個函數
	vfunc& operator*=(DOUBLE a){alg=alg->mul(a);return (*this);};//自身乘一個常數
	vfunc& operator*=(matrix& (*f)(matrix&)); // 自身乘一個函數指針
	vfunc operator*(vfunc& fn);	// 相乘產生新函數
	vfunc operator*(DOUBLE a);	// 與常數相乘產生新函數
	friend vfunc operator*(DOUBLE a, vfunc& f); // 同上但常數在前
	vfunc operator*(matrix& (*f)(matrix&)); // 乘一個函數指針產生新函數
	friend vfunc operator*(matrix& (*f)(matrix&),vfunc& fn); // 函數指針乘函數

	vfunc& operator/=(vfunc& fn);	// 自身除以一個函數
	vfunc& operator/=(DOUBLE a){alg=alg->mul(1.0/a);return (*this);
			};//自身除以常數
	vfunc& operator/=(matrix& (*f)(matrix&)); // 自身除以一個函數指針
	vfunc operator/(vfunc& fn);	// 相除產生新函數
	vfunc operator/(DOUBLE a);	// 與常數相除產生新函數
	friend vfunc operator/(DOUBLE a, vfunc& f); // 常數除以函數
	vfunc operator/(matrix& (*f)(matrix&)); // 除以一個函數指針產生新函數
	friend vfunc operator/(matrix& (*f)(matrix&),vfunc& fn); // 函數指針除以函數

	vfunc operator()(vfunc & fn);	// 復合函數,產生新的函數

	void setxfactor(DOUBLE a);	// 設置x因子為a
	void xroom(DOUBLE a);	  // x方向擴大a倍
	void setxshift(DOUBLE a);	// 設置函數沿x軸平移a
	void shiftxas(DOUBLE a); // 函數沿x軸右移a
};

class vfuncdiff : public vfunc	// 微分方程函數
{
 public:
	vfuncdiff(matrix (*fun)(DOUBLE,matrix&), DOUBLE t0, matrix& y0):
		vfunc(new valgodiff(fun,t0,y0)){};	// 構造函數,fun為微分方程右端函數
				// 的函數指針,t0起始時間,y0為起始值
	matrix& operator()(DOUBLE t) {
		return ((valgodiff*)alg)->calcul(t); };
};

class linemodel  // 線性動態觀測系統模型
					// 用作測試卡爾曼濾波器而產生仿真觀測數據
{
 public:
	matrix	x;		// 當前狀態變量
	matrix	a;		// 當前狀態轉移矩陣
	matrix	h;		// 當前觀測矩陣
	gassvector w;	// 模型噪聲源
	gassvector v;	// 觀測噪聲源
	matrix	y;		// 當前觀測向量
	linemodel(matrix& va, matrix & vh, matrix & q, matrix & r, matrix & vx);
			// 構造函數,va初始狀態轉移矩陣,vh初始觀測矩陣,q當前模型噪聲協
			// 方差陣,r當前觀測噪聲協方差陣,vx初始狀態變量
	void setdata(matrix& va, matrix & vh, matrix & q, matrix & r);
	void seta(matrix& va);
	void seth(matrix& vh);
	void setq(matrix& q);
	void setr(matrix& r);
	matrix & next();	// 計算下一級x值并返回新的x對應的y值
};

class kalman 	// 卡爾曼濾波類
{
 public:
	matrix	x;		// 當前狀態變量的估值
	matrix	p;		// 當前估值的誤差協方差陣
	matrix	a;		// 當前狀態轉移矩陣
	matrix	h;		// 當前觀測矩陣
	matrix	y;		// 當前觀測向量
	matrix	q;		// 當前模型噪聲協方差陣
	matrix	r;		// 當前觀測噪聲協方差陣
	kalman(matrix &va,matrix& vq,matrix& vr,matrix& vh,matrix& vx,matrix& vp);
		// 構造函數,va為狀態轉移矩陣,vh觀測矩陣,vq模型噪聲協方差陣,
		// vr當前觀測噪聲協方差陣,vx初始狀態變量估值,vp初始估值協方差陣
	void setdata(matrix &va,matrix& vq,matrix& vr,matrix& vh);
		// 為時變系統隨時設置系統參數,va為狀態轉移矩陣,vh觀測矩陣,vq模型噪
		// 聲協方差陣,vr當前觀測噪聲協方差陣
	void seta(matrix& va);
	void seth(matrix& vh);
	void setq(matrix& vq);
	void setr(matrix& vr);
	matrix& next(matrix& y);	// 根據下一個觀測值獲得新的狀態變量的估值
};

inline vfunc operator+(DOUBLE a, vfunc& f) // 常數加函數
{	return f+a; }

inline vfunc operator+(matrix& (*f)(matrix&),vfunc& fn) // 函數指針加函數
{	return fn+f;}

vfunc operator-(DOUBLE a, vfunc& f); // 常數減函數
vfunc operator-(matrix& (*f)(matrix&),vfunc& fn); // 函數指針減函數

inline vfunc operator*(DOUBLE a, vfunc& f) // 常數乘函數
{	return f*a; }
inline vfunc operator*(matrix& (*f)(matrix&),vfunc& fn) // 函數指針乘函數
{	return fn*f;}

vfunc operator/(DOUBLE a, vfunc& f); // 常數除以函數
vfunc operator/(matrix& (*f)(matrix&),vfunc& fn); // 函數指針除以函數

class regress	// 多元線性回歸分析類
{
 public:
	matrix a;	// 算出的回歸系數m+1維向量
	matrix v;	// 算出的偏相關系數m維向量
	DOUBLE q;	// 偏差平方和
	DOUBLE s;	// 平均標準偏差
	DOUBLE r;	// 復相關系數
	DOUBLE u;	// 回歸平方和
	regress(matrix& x, matrix& y);	// x為mXn維矩陣,y為n個觀測值
	DOUBLE operator()(matrix& x); // 回歸后的線性函數,x是自變量
};

#endif // VFUNC_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu国产电影一区二区| 91色乱码一区二区三区| 亚洲国产日韩一区二区| 综合在线观看色| 日本一区二区免费在线观看视频 | 国产精品99久久久久久似苏梦涵| 亚洲国产成人91porn| 一二三四社区欧美黄| 亚洲精品免费视频| 一区二区久久久| 亚洲宅男天堂在线观看无病毒| 亚洲另类在线制服丝袜| 亚洲视频免费看| 亚洲靠逼com| 亚洲成a人在线观看| 青青国产91久久久久久| 久久成人羞羞网站| 成人午夜伦理影院| 色视频一区二区| 欧美一区二区成人| 国产亚洲成av人在线观看导航| 国产日韩视频一区二区三区| 中文字幕亚洲欧美在线不卡| 亚洲一区影音先锋| 久久精品理论片| zzijzzij亚洲日本少妇熟睡| 色综合色综合色综合色综合色综合| 91福利国产精品| 日韩欧美一二三四区| 亚洲精选免费视频| 亚洲国产精品嫩草影院| 国产在线精品一区二区夜色| 成人激情小说网站| 欧美精品色一区二区三区| 精品88久久久久88久久久| 最近日韩中文字幕| 男女性色大片免费观看一区二区| 国产成人综合网| 欧美日韩另类一区| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲国产精品久久不卡毛片| 国产一区高清在线| 欧美三区在线观看| 2023国产一二三区日本精品2022| 亚洲另类春色校园小说| 久久99国内精品| 91黄视频在线观看| 亚洲国产精品国自产拍av| 午夜成人免费电影| 成人av片在线观看| 久久在线观看免费| 午夜久久久久久电影| 不卡的看片网站| 久久久综合视频| 成人国产亚洲欧美成人综合网| 欧美精品 日韩| 亚洲一二三区视频在线观看| 成人午夜精品在线| 欧美精品一区男女天堂| 亚洲丰满少妇videoshd| 91免费视频大全| 欧美国产日韩一二三区| 久色婷婷小香蕉久久| 欧美亚洲一区二区在线观看| 国产日产欧美一区二区视频| 久久99久久久欧美国产| 在线综合视频播放| 亚洲成人你懂的| 欧美在线视频你懂得| 亚洲精品一卡二卡| 99re这里只有精品视频首页| 国产精品青草久久| 成人午夜精品在线| 国产免费久久精品| 丰满放荡岳乱妇91ww| 久久亚洲一区二区三区四区| 另类欧美日韩国产在线| 日韩免费高清av| 久久99精品国产麻豆不卡| 日韩欧美高清在线| 国产呦萝稀缺另类资源| 精品国产一区二区三区不卡 | 成人免费视频一区二区| 国产精品污网站| 国产成人免费在线视频| 国产欧美视频一区二区三区| 国产成人av在线影院| 一色桃子久久精品亚洲| 99国产精品久| 亚洲成人一区在线| 日韩精品一区二区三区在线观看| 日韩电影网1区2区| 亚洲精品在线三区| 高清不卡一二三区| 亚洲视频 欧洲视频| 欧美在线观看一区| 日韩高清在线观看| 国产欧美精品日韩区二区麻豆天美| 国产69精品久久99不卡| 亚洲欧美另类在线| 91精品免费观看| 国产精品一二三区在线| 亚洲精品免费在线观看| 日韩一区二区三区精品视频 | 国产一区 二区 三区一级| 久久精品夜色噜噜亚洲a∨| 成人国产亚洲欧美成人综合网 | 欧美人xxxx| 韩日精品视频一区| 一区二区三区精品视频| 日韩三级伦理片妻子的秘密按摩| 国产精品白丝jk黑袜喷水| 亚洲另类色综合网站| 日韩午夜av电影| 99re成人精品视频| 久久精品国产久精国产爱| 亚洲视频你懂的| 久久久久久亚洲综合影院红桃| 91亚洲大成网污www| 麻豆91精品视频| 一区二区三区在线视频免费| 精品久久久久久无| 欧美亚洲综合一区| 国产成人午夜99999| 免费在线成人网| 亚洲女子a中天字幕| 国产午夜精品一区二区三区嫩草| 欧美午夜免费电影| 国产精品夜夜嗨| 美女被吸乳得到大胸91| 亚洲精品高清在线| 欧美国产在线观看| 日韩视频国产视频| 欧美日韩在线一区二区| 不卡的电影网站| 国产麻豆午夜三级精品| 青青草精品视频| 亚洲电影在线免费观看| 亚洲欧美日韩国产成人精品影院 | 一区二区三国产精华液| 国产性色一区二区| 久久亚洲综合av| 欧美不卡在线视频| 欧美一级日韩免费不卡| 欧美伦理影视网| 欧美视频完全免费看| 色综合欧美在线视频区| av一区二区三区四区| 成人av网站免费| 成人性生交大片免费| 国产不卡视频一区| 岛国精品在线播放| 成人avav影音| 99久久免费国产| 一本久久a久久精品亚洲| 99精品一区二区三区| 91在线视频官网| 欧美午夜寂寞影院| 欧美日韩国产成人在线91| 欧美丰满少妇xxxxx高潮对白| 欧美日韩视频第一区| 91精品国产综合久久精品| 欧美一区二区高清| 久久久久久久久免费| 久久久综合网站| 国产精品免费看片| 亚洲激情五月婷婷| 视频一区二区中文字幕| 日韩一区精品视频| 国产成人综合在线| 91日韩精品一区| 在线播放国产精品二区一二区四区 | 亚洲综合一区二区三区| 一区二区高清视频在线观看| 亚洲成人久久影院| 久久99国产精品久久| 国产成+人+日韩+欧美+亚洲| 91亚洲精品乱码久久久久久蜜桃 | 成人av免费在线观看| 色综合中文字幕国产| 一本到不卡免费一区二区| 欧美日韩在线播放三区| 欧美va亚洲va在线观看蝴蝶网| 国产日韩综合av| 一区二区三区不卡视频在线观看 | 久久婷婷一区二区三区| 国产精品无人区| 亚洲国产美女搞黄色| 黄一区二区三区| 日本乱人伦一区| 2021国产精品久久精品| 亚洲免费观看高清在线观看| 免费看黄色91| 色婷婷综合久久久中文一区二区| 欧美理论在线播放| 国产精品久久毛片| 日韩经典中文字幕一区| av在线一区二区| 欧美r级在线观看| 一区二区高清在线|