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

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

?? cfunc.h

?? 整理分享:常用的數(shù)學運算程序源代碼 包括常用的幾種數(shù)學運算程序的C++代碼
?? H
字號:
#ifndef CFUNC_H
#define CFUNC_H

#include <math.h>

#include "matrix.h"
#include "cmatrix.h"
#include "func.h"

class calgo	// 復數(shù)算法類,專門生成自變量為實數(shù),運算結果為復數(shù)的算法
{
 private:
	COMPLEX yfactor;		// 乘因子,初始化為1
	DOUBLE xfactor;		// x軸放大因子,初始化為1
	COMPLEX addconst;	// 加和,初始化為0
	DOUBLE xshift;		// x平移量,初始化為0
 public:
	unsigned refnum;		// 引用數(shù),初始化為1
	calgo():refnum(1),yfactor(1.0),xfactor(1.0),addconst(0.0),xshift(0.0){};
	 // 構造函數(shù),產(chǎn)生y=x線性函數(shù)
	calgo(DOUBLE xs, DOUBLE xf,COMPLEX adc=0.0, COMPLEX yf=1.0):refnum(1),
		yfactor(yf),addconst(adc),xshift(xs),xfactor(xf){};
	calgo(COMPLEX a):refnum(1),yfactor(0.0),xfactor(1.0),addconst(a),xshift(0.0)
		{};	 // 常函數(shù)的構造
	calgo(calgo & alg):yfactor(alg.yfactor),xfactor(alg.xfactor),
		addconst(alg.addconst),xshift(alg.xshift),refnum(1){}; // 拷貝構造函數(shù)
	virtual ~calgo(){}; // 虛析構函數(shù)
	COMPLEX cal(DOUBLE x); // 計算算法值
	virtual COMPLEX calculate(DOUBLE x)
		{return x;}; // 本身算法,將被繼承子類改寫
	virtual calgo * clone(); // 克隆自己,必須被繼承子類改寫
	calgo * mul(COMPLEX a);	// 乘a
	calgo * add(COMPLEX a);	// 加a
	calgo * neg(); // 取負
	calgo * setxfactor(DOUBLE x);		// 設置x軸因子
	calgo * xroom(DOUBLE x);	// 將xfactor擴大x倍
	calgo * setxshift(DOUBLE x); // 設置xshift的值
	calgo * xshiftas(DOUBLE x);	// 從當前開始平移x
};

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

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

class calgopoly : public calgo	// 復多項式
{
 public:
	cmatrix data;	//	n乘1矩陣,存放n-1次多項式的系數(shù)a(0)到a(n-1)
	calgopoly(cmatrix& d):data(d){};	// 用矩陣構造多項式
	calgopoly(calgopoly& alg):calgo(alg),data(alg.data){}; // 拷貝構造函數(shù)
	virtual COMPLEX calculate(DOUBLE x);	// 實施函數(shù)算法
	virtual calgo * clone();	// 克隆自己
};

class calgoenter : public calgo	// 等間隔插值算法
{
 public:
	algoenter * er;
	algoenter * ei;	// 兩個插值算法構成結果的實部與虛部
	calgoenter(matrix& ver, matrix& vei, DOUBLE x0, DOUBLE h):
		er(new algoenter(ver,x0,h)), ei(new algoenter(vei,x0,h)) {};
	calgoenter(calgoenter& alg):calgo(alg),er(alg.er),ei(alg.ei) {
		er->refnum++; ei->refnum++;} // 拷貝構造函數(shù)
	virtual ~calgoenter(){
		er->refnum--;
		if(!er->refnum) delete er;
		ei->refnum--;
		if(!ei->refnum) delete ei;};
	virtual COMPLEX calculate(DOUBLE x);	// 實施函數(shù)算法
	virtual calgo * clone();	// 克隆自己
};

class cfunc {	// 復函數(shù)類,計算自變量為實數(shù)而結果是復數(shù)的類
 public:
	calgo * alg;	// 決定函數(shù)的算法

	cfunc();	// 缺省構造函數(shù)
	cfunc(COMPLEX a);	// 常函數(shù)的構造函數(shù)
	cfunc(COMPLEX (*fun)(DOUBLE));	// 函數(shù)指針的構造函數(shù)
	cfunc(cfunc & fn);	// 拷貝構造函數(shù)
	cfunc(calgo * a):alg(a){} // 算法構造函數(shù),使用要小心,不能將一個算法產(chǎn)生
									// 兩個函數(shù),除非自己控制引用數(shù)的增加
	cfunc(cmatrix& m);	// 構造多項式,m為nX1矩陣,是n-1階多項式系數(shù),
				// 其中m(0,0)為常數(shù)項,m(n-1,0)為n-1次項。

	virtual ~cfunc() {		// 析構函數(shù)
		if(alg) {
			alg->refnum--;	// 引用數(shù)減一,如再無其它引用,則刪除算法
			if(!alg->refnum)
				delete alg;
		}
	};

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

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

	cfunc& neg(); // 自身取負
	cfunc operator-(); // 產(chǎn)生負函數(shù)

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

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

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

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

	cfunc& power(cfunc& f);	// 函數(shù)的f次乘冪,函數(shù)自身改變
	cfunc& power(COMPLEX a);	// 函數(shù)的a次冪,函數(shù)自身改變
	cfunc operator^(cfunc & fn);	// 函數(shù)的fn次乘冪,產(chǎn)生新函數(shù),原函數(shù)不變
	cfunc operator^(COMPLEX a);  // 函數(shù)的a次冪,產(chǎn)生新函數(shù),原函數(shù)不變
};

inline cfunc operator+(COMPLEX a, cfunc& f) // 常數(shù)加函數(shù)
{	return f+a; }

inline cfunc operator+(COMPLEX (*f)(DOUBLE),cfunc& fn) // 函數(shù)指針加函數(shù)
{	return fn+f;}

cfunc operator-(COMPLEX a, cfunc& f); // 常數(shù)減函數(shù)
cfunc operator-(COMPLEX (*f)(DOUBLE),cfunc& fn); // 函數(shù)指針減函數(shù)

inline cfunc operator*(COMPLEX a, cfunc& f) // 常數(shù)乘函數(shù)
{	return f*a; }
inline cfunc operator*(COMPLEX (*f)(DOUBLE),cfunc& fn) // 函數(shù)指針乘函數(shù)
{	return fn*f;}

cfunc operator/(COMPLEX a, cfunc& f); // 常數(shù)除以函數(shù)
cfunc operator/(COMPLEX (*f)(DOUBLE),cfunc& fn); // 函數(shù)指針除以函數(shù)

class cfuncenter: public cfunc {	// 插值復函數(shù)
 public:
	cfuncenter(cmatrix& s,DOUBLE t0, DOUBLE dt);
};

cfunc fourier(func& f,DOUBLE tb, DOUBLE te, DOUBLE dt, DOUBLE df);
	// 利用fft技術對函數(shù)f作傅里葉變換,其中tb為采樣窗口的起始點,te為結束點,
	// 必須te>tb,dt為采樣間隔,df為頻率采樣間隔,但返回的cfunc是作了插值的
	// 插值函數(shù)

#endif // CFUNC_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩黄色小视频| 久久精品国产精品亚洲红杏| 午夜久久久影院| 国产成人午夜精品5599| 欧美性受xxxx黑人xyx| 久久一二三国产| 日韩av高清在线观看| 91免费看片在线观看| 久久精品亚洲一区二区三区浴池| 亚洲国产婷婷综合在线精品| 大胆亚洲人体视频| 精品入口麻豆88视频| 午夜视频在线观看一区二区三区| 99久久久久久| 国产精品免费视频网站| 国产一区二区中文字幕| 日韩欧美自拍偷拍| 日本视频在线一区| 欧美日韩精品免费| 亚洲va韩国va欧美va| 在线视频中文字幕一区二区| 亚洲视频在线观看一区| 成人h版在线观看| 国产精品五月天| 成人综合婷婷国产精品久久免费| 久久久蜜桃精品| 国产米奇在线777精品观看| 欧美一个色资源| 老司机午夜精品| 日韩欧美在线观看一区二区三区| 欧美96一区二区免费视频| 欧美男人的天堂一二区| 视频一区二区欧美| 日韩三区在线观看| 美女网站色91| 久久女同精品一区二区| 国产凹凸在线观看一区二区 | 视频在线观看91| 欧美日韩的一区二区| 婷婷久久综合九色综合绿巨人 | 亚洲日本青草视频在线怡红院| 粉嫩蜜臀av国产精品网站| 国产亚洲视频系列| 99免费精品在线| 亚洲一区av在线| 91精品国产综合久久久久久| 蜜桃av一区二区| 久久色成人在线| 99久久精品免费| 亚洲sss视频在线视频| 日韩一区二区三区在线视频| 精品一区精品二区高清| 国产免费观看久久| 欧美中文字幕一区二区三区亚洲| 日韩高清不卡一区二区| 久久久久久久久久看片| 欧美一级日韩一级| 国产一区二区三区在线观看免费视频| 久久精品夜色噜噜亚洲aⅴ| 91在线国产福利| 日本最新不卡在线| 国产精品进线69影院| 欧美日韩亚洲另类| 国产白丝网站精品污在线入口| 亚洲精品va在线观看| 日韩限制级电影在线观看| 成人免费观看视频| 日韩成人一区二区三区在线观看| 久久久精品一品道一区| 欧美三级电影网站| 国产99久久久国产精品| 亚洲午夜久久久久| 欧美激情在线看| 7777女厕盗摄久久久| 不卡一二三区首页| 蓝色福利精品导航| 亚洲一级在线观看| 国产精品天天看| 精品免费一区二区三区| 色狠狠av一区二区三区| 国产精品99久久久久久久vr| 亚洲丰满少妇videoshd| 最新欧美精品一区二区三区| 欧美一区二区在线看| 91黄视频在线| 国产成人综合网| 久久99蜜桃精品| 午夜影院久久久| 一区二区三区欧美视频| 欧美激情中文不卡| 精品999在线播放| 7777女厕盗摄久久久| 在线观看91视频| 色域天天综合网| 不卡的av电影| 风间由美一区二区三区在线观看 | 欧美日韩精品一区二区三区四区| 国产91精品久久久久久久网曝门| 蜜臀av一区二区在线观看| 亚洲精品视频自拍| ...中文天堂在线一区| 欧美激情在线观看视频免费| 久久看人人爽人人| www国产成人| 欧美一级艳片视频免费观看| 在线成人免费观看| 7777精品久久久大香线蕉| 在线观看av一区二区| 在线观看成人免费视频| 色欧美片视频在线观看在线视频| 95精品视频在线| 91免费版在线看| 日本韩国欧美三级| 91福利社在线观看| 欧美色视频一区| 欧美裸体一区二区三区| 欧美肥妇free| 精品国产一区二区亚洲人成毛片| 日韩欧美国产wwwww| 欧美不卡在线视频| 日韩欧美激情一区| 久久综合狠狠综合久久综合88| www国产成人免费观看视频 深夜成人网| 欧美一级高清大全免费观看| 精品伦理精品一区| 国产偷v国产偷v亚洲高清| 国产精品久久久久久久浪潮网站 | 亚洲一本大道在线| 亚洲www啪成人一区二区麻豆| 亚洲18女电影在线观看| 久久精品99国产精品日本| 国产在线观看免费一区| 国产jizzjizz一区二区| 色美美综合视频| 在线成人av网站| 久久一二三国产| ...xxx性欧美| 日本vs亚洲vs韩国一区三区 | 狠狠久久亚洲欧美| 国产成人久久精品77777最新版本| 国产成人免费在线观看不卡| 91美女片黄在线观看91美女| 欧美日韩在线播放一区| 精品久久久久久久久久久院品网| 国产欧美日韩综合| 亚洲二区在线视频| 激情小说亚洲一区| 色综合一个色综合亚洲| 91精品国产日韩91久久久久久| 久久久久久综合| 艳妇臀荡乳欲伦亚洲一区| 激情久久五月天| 在线国产电影不卡| 国产亚洲1区2区3区| 一区2区3区在线看| 国产大片一区二区| 欧美老女人第四色| 亚洲欧美在线观看| 久久99精品网久久| 欧美亚洲国产一区二区三区 | 亚洲日本丝袜连裤袜办公室| 午夜欧美在线一二页| 风间由美一区二区av101| 欧美日韩aaaaa| 中文字幕在线观看不卡| 免费精品99久久国产综合精品| 亚洲一区二区在线视频| 亚洲高清免费视频| 国产成人精品综合在线观看| 欧美另类一区二区三区| 中文字幕一区免费在线观看| 美脚の诱脚舐め脚责91| 欧美性xxxxx极品少妇| 国产精品区一区二区三| 蜜桃av一区二区三区| 欧美日韩国产片| 1024亚洲合集| 岛国一区二区在线观看| 日韩午夜三级在线| 视频在线观看国产精品| 欧美又粗又大又爽| 亚洲麻豆国产自偷在线| www.亚洲精品| 国产欧美综合色| 国产精品12区| 久久综合九色综合欧美亚洲| 免费高清在线一区| 欧美精品1区2区| 午夜欧美电影在线观看| 欧美性大战久久久久久久蜜臀 | 国产成人精品三级| 日韩午夜在线影院| 美女在线视频一区| 午夜在线成人av| 欧美亚洲综合网| 亚洲欧美另类图片小说| av一区二区三区四区| 国产精品理论在线观看| 成人少妇影院yyyy| 午夜电影网亚洲视频|