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

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

?? cfunc.h

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

#include <math.h>

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

class calgo	// 復數算法類,專門生成自變量為實數,運算結果為復數的算法
{
 private:
	COMPLEX yfactor;		// 乘因子,初始化為1
	DOUBLE xfactor;		// x軸放大因子,初始化為1
	COMPLEX addconst;	// 加和,初始化為0
	DOUBLE xshift;		// x平移量,初始化為0
 public:
	unsigned refnum;		// 引用數,初始化為1
	calgo():refnum(1),yfactor(1.0),xfactor(1.0),addconst(0.0),xshift(0.0){};
	 // 構造函數,產生y=x線性函數
	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)
		{};	 // 常函數的構造
	calgo(calgo & alg):yfactor(alg.yfactor),xfactor(alg.xfactor),
		addconst(alg.addconst),xshift(alg.xshift),refnum(1){}; // 拷貝構造函數
	virtual ~calgo(){}; // 虛析構函數
	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++;};
			// 拷貝構造函數
	virtual ~calgojoin() {
		if(leftalgo) {	// 如左或者右算法已經沒有被引用,則刪除
			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	// 函數算法
{
 public:
	COMPLEX (*f)(DOUBLE);	// 函數指針
	calgofun(COMPLEX (*fun)(DOUBLE)):f(fun){};	// 用函數指針進行初始化
	calgofun(calgofun& alg):calgo(alg),f(alg.f){}; // 拷貝構造函數
	virtual COMPLEX calculate(DOUBLE x);	// 實施函數算法
	virtual calgo * clone(); // 克隆自己
};

class calgopoly : public calgo	// 復多項式
{
 public:
	cmatrix data;	//	n乘1矩陣,存放n-1次多項式的系數a(0)到a(n-1)
	calgopoly(cmatrix& d):data(d){};	// 用矩陣構造多項式
	calgopoly(calgopoly& alg):calgo(alg),data(alg.data){}; // 拷貝構造函數
	virtual COMPLEX calculate(DOUBLE x);	// 實施函數算法
	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++;} // 拷貝構造函數
	virtual ~calgoenter(){
		er->refnum--;
		if(!er->refnum) delete er;
		ei->refnum--;
		if(!ei->refnum) delete ei;};
	virtual COMPLEX calculate(DOUBLE x);	// 實施函數算法
	virtual calgo * clone();	// 克隆自己
};

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

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

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

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

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

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

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

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

	cfunc& operator/=(cfunc& fn);	// 自身除以一個函數
	cfunc& operator/=(COMPLEX a){alg=alg->mul(1.0/a);return (*this);
			};//自身除以常數
	cfunc& operator/=(COMPLEX (*f)(DOUBLE)); // 自身除以一個函數指針
	cfunc operator/(cfunc& fn);	// 相除產生新函數
	cfunc operator/(COMPLEX a);	// 與常數相除產生新函數
	friend cfunc operator/(COMPLEX a, cfunc& f); // 常數除以函數
	cfunc operator/(COMPLEX (*f)(DOUBLE)); // 除以一個函數指針產生新函數
	friend cfunc operator/(COMPLEX (*f)(DOUBLE),cfunc& 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

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

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

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

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

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

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

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

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

#endif // CFUNC_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级专区免费大片| 北条麻妃一区二区三区| 黄网站免费久久| 精品国产百合女同互慰| 国产91精品在线观看| 国产精品丝袜久久久久久app| 国产真实精品久久二三区| 久久久国产精品不卡| 99久久久无码国产精品| 亚洲国产综合视频在线观看| 91黄色免费看| 国产黄色精品视频| 亚洲精品ww久久久久久p站| 欧美视频中文一区二区三区在线观看| 1024成人网| 日韩欧美中文字幕公布| 成人h动漫精品| 偷窥国产亚洲免费视频| 欧美va亚洲va在线观看蝴蝶网| 国产一区二区中文字幕| 亚洲综合免费观看高清完整版| 91成人免费电影| 水野朝阳av一区二区三区| 久久综合999| 欧美zozozo| 欧美变态凌虐bdsm| 精品福利在线导航| 精品免费一区二区三区| 91精品国产综合久久福利| 色88888久久久久久影院按摩| 国产综合色精品一区二区三区| 蜜臀av一级做a爰片久久| 亚洲综合色视频| 夜夜嗨av一区二区三区中文字幕 | 免费av网站大全久久| 日韩影院免费视频| 亚洲一级在线观看| 亚洲国产成人av| 亚洲成人在线网站| 午夜精彩视频在线观看不卡| 日本少妇一区二区| 日日骚欧美日韩| 国产真实乱偷精品视频免| 粉嫩aⅴ一区二区三区四区五区| 国产成人免费在线视频| 色婷婷国产精品| 欧美精品在线观看播放| 日韩欧美三级在线| 国产欧美精品一区| 亚洲图片一区二区| 国产又黄又大久久| 欧美中文字幕一区二区三区亚洲| 欧美日韩日日夜夜| 久久久久久久久久久久久女国产乱| 国产色91在线| 日韩中文字幕麻豆| 精品制服美女久久| 制服丝袜亚洲色图| 91精品国产91久久综合桃花 | 国产高清不卡二三区| 亚洲四区在线观看| 一级日本不卡的影视| 精品91自产拍在线观看一区| av欧美精品.com| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲一区二区高清| 色综合久久久久综合体桃花网| 久久在线免费观看| 欧美日韩高清一区| 国产精品原创巨作av| 中文字幕不卡在线观看| 在线精品观看国产| 久久99国产精品尤物| 日韩电影在线观看一区| 日本韩国一区二区三区视频| 精品国产一区二区亚洲人成毛片 | 99国产欧美另类久久久精品| 欧美吞精做爰啪啪高潮| 中文字幕在线不卡| 99久久久国产精品免费蜜臀| 久久精品国产77777蜜臀| 色偷偷久久一区二区三区| 亚洲欧洲av一区二区三区久久| 国产乱妇无码大片在线观看| 日韩欧美在线不卡| 国产女人18水真多18精品一级做| 日韩和欧美的一区| 久久久777精品电影网影网 | 午夜久久电影网| 久久蜜桃av一区二区天堂| 97国产精品videossex| 欧美一卡二卡三卡四卡| 国内精品免费在线观看| 国产精品美女一区二区在线观看| 欧美另类z0zxhd电影| 麻豆成人综合网| 欧美午夜视频网站| 国产精品久久久久7777按摩| 91丨九色丨蝌蚪富婆spa| 亚洲欧洲日韩女同| a美女胸又www黄视频久久| 久久九九99视频| av一区二区三区四区| 亚洲一卡二卡三卡四卡五卡| 欧美三级在线播放| 蜜臀99久久精品久久久久久软件| 精品国产免费人成电影在线观看四季| 精彩视频一区二区| 亚洲色图在线视频| 欧美一区日韩一区| 奇米影视在线99精品| 欧美经典一区二区三区| 国产aⅴ综合色| 一区二区国产盗摄色噜噜| 91精品在线免费| 久久99国产精品免费网站| 国产日韩欧美麻豆| 欧美日韩国产美女| 国产精品夜夜嗨| 亚洲成a人在线观看| 最新国产精品久久精品| 久久久精品免费观看| 欧美日韩精品一区二区三区| 91免费观看视频在线| 国产精品一区二区你懂的| 亚洲精品日韩专区silk| 国产精品精品国产色婷婷| 欧美成人精品二区三区99精品| 在线一区二区三区四区| av中文字幕不卡| 成人激情黄色小说| 亚洲伊人伊色伊影伊综合网| 国产精品女上位| 亚洲国产精品成人综合色在线婷婷| 日韩精品一区二区在线观看| 在线视频亚洲一区| 91色porny在线视频| 粉嫩av一区二区三区| 99久久er热在这里只有精品15| 久久99国产精品麻豆| 亚洲成人黄色小说| 精品一区二区免费看| 国产在线精品不卡| 风间由美一区二区三区在线观看| 国产成人精品网址| 91蜜桃在线观看| 欧美一区二区三区小说| 91高清视频免费看| 2023国产精华国产精品| 亚洲欧洲日韩av| 日韩成人伦理电影在线观看| 亚洲午夜激情av| 国产原创一区二区三区| 99久久久久免费精品国产| 欧美日韩成人综合| 国产精品乱码人人做人人爱| 亚洲午夜在线观看视频在线| 老司机精品视频导航| 色综合网站在线| 久久久久88色偷偷免费| 中文字幕亚洲综合久久菠萝蜜| 一区二区三区四区不卡视频| 蜜臀久久久久久久| av一区二区不卡| 欧美三级中文字| 一区二区久久久| 97精品国产97久久久久久久久久久久 | 欧美哺乳videos| 亚洲电影在线播放| 成人爱爱电影网址| 精品久久久久久久久久久久包黑料| 成人欧美一区二区三区在线播放| 久草热8精品视频在线观看| 色域天天综合网| 一二三区精品福利视频| 99国产精品视频免费观看| 国产日韩欧美高清在线| 国产乱码精品一品二品| 99久久精品免费精品国产| 精品国产91亚洲一区二区三区婷婷| 日韩经典一区二区| 欧美日韩精品一区二区| 日本中文在线一区| 91视频91自| 日日摸夜夜添夜夜添亚洲女人| 欧美在线免费观看亚洲| 亚洲成人一区二区在线观看| 国产成a人亚洲精品| 亚洲视频一区在线观看| 欧美日韩在线不卡| 国产在线视视频有精品| 国产欧美一区二区精品久导航| 精品一区二区久久| 欧美国产精品一区| 在线欧美日韩国产| 国产一区二区在线观看视频| 亚洲人成7777| 久久综合久久综合久久| 男人的j进女人的j一区| 国产精品乱码一区二三区小蝌蚪|