亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲成人精品影院| 91免费版pro下载短视频| 国产盗摄视频一区二区三区| 99久久久无码国产精品| 欧美剧情电影在线观看完整版免费励志电影 | 欧美一级免费观看| 国产精品对白交换视频| 另类小说一区二区三区| 色欧美88888久久久久久影院| 精品久久国产97色综合| 亚洲六月丁香色婷婷综合久久| 激情图区综合网| 欧美性生交片4| 亚洲日本va在线观看| 国产一区福利在线| 精品欧美一区二区在线观看| 亚洲一区二区三区自拍| av成人免费在线| 国产蜜臀97一区二区三区| 裸体健美xxxx欧美裸体表演| 欧美三级欧美一级| 亚洲综合一区二区精品导航| 成人一区在线观看| 国产区在线观看成人精品| 极品销魂美女一区二区三区| 欧美一区二区三区免费视频| 亚洲国产一区视频| 欧洲一区二区av| 艳妇臀荡乳欲伦亚洲一区| 91美女片黄在线观看| 最好看的中文字幕久久| av在线播放不卡| 自拍偷拍亚洲激情| 91麻豆免费视频| 亚洲一区二区三区精品在线| 在线免费观看一区| 成人午夜在线视频| 日本一区二区成人在线| 国产成人亚洲综合a∨猫咪| 欧美激情综合在线| www.在线成人| 亚洲黄色性网站| 欧美日韩国产乱码电影| 日本不卡视频在线| 日韩欧美一级精品久久| 国内精品伊人久久久久av一坑| 精品美女一区二区| 国产69精品久久99不卡| 欧美激情中文字幕| 91成人在线免费观看| 亚洲福利视频一区| 欧美不卡在线视频| 国产传媒欧美日韩成人| 亚洲国产精品传媒在线观看| av中文字幕亚洲| 石原莉奈在线亚洲二区| 337p日本欧洲亚洲大胆色噜噜| 国产成人亚洲精品狼色在线| 亚洲欧洲av另类| 精品1区2区3区| 国产在线精品国自产拍免费| 国产日韩欧美精品综合| 在线观看免费视频综合| 免费高清成人在线| 国产精品国产三级国产三级人妇| 91黄色激情网站| 久久不见久久见免费视频7| 国产精品麻豆99久久久久久| 欧美日韩另类一区| 国产精品1024| 亚洲一级片在线观看| 精品乱码亚洲一区二区不卡| av亚洲精华国产精华精华| 日本不卡中文字幕| 最好看的中文字幕久久| 日韩精品一区二区三区在线播放| 成人妖精视频yjsp地址| 午夜一区二区三区视频| 国产亚洲污的网站| 欧美日韩精品福利| 成人综合婷婷国产精品久久免费| 亚洲国产一二三| 国产精品入口麻豆九色| 欧美一区二区三区在| 色婷婷综合久久久久中文一区二区 | 亚洲丶国产丶欧美一区二区三区| 久久综合色鬼综合色| 欧美日韩国产精选| 99久久国产综合精品女不卡| 久久国产精品第一页| 亚洲精品免费播放| 国产精品视频一二三区| 欧美成人精品1314www| 欧美日韩一级黄| 99re8在线精品视频免费播放| 久久精品久久综合| 日韩精品一级中文字幕精品视频免费观看 | 国产精品另类一区| 2020国产精品自拍| 欧美一区二区国产| 欧美视频精品在线观看| 欧美一级黄色大片| 欧美日韩一本到| 91久久国产最好的精华液| 99久久精品国产导航| 国产精品一区二区免费不卡 | 日韩中文字幕一区二区三区| 亚洲美女少妇撒尿| 国产精品国产自产拍高清av| 欧美精品一区二区蜜臀亚洲| 日韩三级中文字幕| 日韩欧美激情一区| 555www色欧美视频| 欧美久久久久久久久| 欧美亚洲日本国产| 欧美日韩国产乱码电影| 欧美日韩国产一级片| 制服.丝袜.亚洲.中文.综合| 欧美日韩免费在线视频| 欧美性猛交一区二区三区精品| 91福利在线免费观看| 在线观看免费成人| 欧美乱妇一区二区三区不卡视频| 欧美午夜在线一二页| 欧美日韩一区二区三区在线| 欧美日本韩国一区二区三区视频| 欧美日韩视频不卡| 欧美一级xxx| 久久久天堂av| 国产精品精品国产色婷婷| 亚洲免费在线看| 天堂va蜜桃一区二区三区漫画版 | 日韩一区二区中文字幕| 日韩一级片在线观看| 亚洲精品一区在线观看| 欧美激情一区二区在线| 亚洲视频一二区| 日日夜夜精品视频免费| 激情图片小说一区| 91在线播放网址| 欧美丰满嫩嫩电影| 久久综合九色综合97婷婷| 欧美激情在线一区二区| 亚洲综合清纯丝袜自拍| 成人av在线观| 欧美视频在线一区| 久久综合色之久久综合| 亚洲少妇屁股交4| 欧美aaaaa成人免费观看视频| 国内成人自拍视频| 色婷婷av一区二区三区大白胸| 欧美色综合网站| 久久精品欧美日韩| 一区二区三区在线观看视频 | 日韩一本二本av| 亚洲国产精品ⅴa在线观看| 亚洲国产成人porn| 国产麻豆精品95视频| 91福利社在线观看| 久久久综合视频| 亚洲mv大片欧洲mv大片精品| 国产另类ts人妖一区二区| 欧美日韩中字一区| 国产精品卡一卡二卡三| 亚洲成人综合网站| voyeur盗摄精品| 2023国产一二三区日本精品2022| 亚洲色图都市小说| 国产东北露脸精品视频| 在线成人av网站| 亚洲精品乱码久久久久久黑人 | 欧美精品丝袜久久久中文字幕| 久久无码av三级| 亚洲mv在线观看| 97se亚洲国产综合自在线不卡| 久久综合av免费| 美女视频黄久久| 欧美三级资源在线| 中文字幕日韩欧美一区二区三区| 国模无码大尺度一区二区三区| 欧美日韩精品一区二区| 亚洲欧美日本韩国| 不卡av免费在线观看| 精品国产亚洲一区二区三区在线观看| 亚洲一二三四久久| 97久久超碰国产精品| 中文字幕精品一区二区精品绿巨人| 日韩 欧美一区二区三区| 欧美亚州韩日在线看免费版国语版| 欧美国产乱子伦 | 国产成人综合在线| 日韩欧美国产一区二区在线播放| 亚州成人在线电影| 欧美无砖砖区免费| 亚洲一区二区中文在线| 色婷婷久久久久swag精品| 中文字幕在线不卡一区| 不卡一区二区在线| 中文字幕亚洲欧美在线不卡| 国产成a人无v码亚洲福利|