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

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

?? cfunc.h

?? VC數值程序設計的源代碼
?? 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一区二区三区免费野_久草精品视频
日韩一级完整毛片| 国产老女人精品毛片久久| 在线精品观看国产| 亚洲女爱视频在线| 在线欧美日韩国产| 亚洲主播在线观看| 欧美日本一道本| 麻豆一区二区三| 国产亚洲成av人在线观看导航 | 亚洲乱码中文字幕综合| 色欧美88888久久久久久影院| 亚洲色图欧美偷拍| 欧美日韩一区二区三区免费看| 午夜久久久久久电影| 日韩一级精品视频在线观看| 国产精品一区二区视频| 亚洲欧洲性图库| 欧美日韩国产欧美日美国产精品| 日韩黄色一级片| 久久蜜桃av一区精品变态类天堂| 成人av中文字幕| 亚洲国产毛片aaaaa无费看| 日韩一区二区三区电影在线观看| 国产伦精品一区二区三区免费迷 | 99免费精品在线| 亚洲高清在线精品| 亚洲精品一区二区三区四区高清 | 亚洲综合在线免费观看| 欧美综合色免费| 美女在线视频一区| 亚洲欧洲综合另类在线| 欧美一区二区三区小说| 波多野结衣一区二区三区| 亚洲成人免费av| 欧美国产精品一区二区三区| 在线一区二区观看| 经典三级在线一区| 亚洲一区二区三区四区在线观看| 日韩精品一区二区三区四区 | 五月婷婷激情综合| 国产亚洲欧美日韩俺去了| 欧美三区在线视频| 粉嫩在线一区二区三区视频| 亚洲成人777| 国产精品国产三级国产三级人妇| 日韩一区二区三免费高清| 99久久久久久| 久久9热精品视频| 亚洲va国产va欧美va观看| 欧美激情在线看| 欧美videossexotv100| 色呦呦网站一区| 国产精品一卡二| 久久精品99国产国产精| 亚洲自拍与偷拍| 国产精品国产三级国产三级人妇| 日韩免费成人网| 69p69国产精品| 色婷婷综合久久久久中文一区二区 | 亚洲综合男人的天堂| 国产欧美一区二区精品仙草咪| 制服丝袜中文字幕亚洲| 日本电影亚洲天堂一区| 成人动漫一区二区三区| 国产美女视频91| 麻豆精品一二三| 午夜av一区二区三区| 亚洲一二三四久久| 亚洲精品乱码久久久久久久久| 国产日韩在线不卡| 久久久久久久久久久久久夜| 91精品国产乱码久久蜜臀| 欧美三级中文字幕| 欧洲av一区二区嗯嗯嗯啊| 色狠狠色噜噜噜综合网| 91在线云播放| 91小视频免费看| 91亚洲永久精品| 色婷婷国产精品| 不卡一区中文字幕| 99久久婷婷国产综合精品 | 国产乱子轮精品视频| 久久精品免费观看| 玖玖九九国产精品| 国产一区二区导航在线播放| 美女视频网站黄色亚洲| 日本不卡免费在线视频| 日韩国产欧美在线视频| 免费看黄色91| 国内外成人在线| 国产aⅴ综合色| 91视频xxxx| 欧美色精品天天在线观看视频| 欧美久久久久久久久中文字幕| 337p亚洲精品色噜噜噜| 日韩区在线观看| 久久精品亚洲国产奇米99| 中文字幕乱码日本亚洲一区二区| 中文字幕欧美一区| 亚洲国产sm捆绑调教视频| 婷婷国产v国产偷v亚洲高清| 麻豆精品国产传媒mv男同 | 99热精品一区二区| 欧美日韩免费观看一区二区三区| 欧美三级日韩三级| 日韩亚洲欧美高清| 国产欧美一区二区三区在线老狼| 国产精品每日更新| 亚洲国产aⅴ天堂久久| 久久精品国产精品亚洲精品| 国产一区在线观看麻豆| av一本久道久久综合久久鬼色| 色综合网色综合| 日韩一级视频免费观看在线| 国产精品全国免费观看高清| 亚洲综合成人在线| 美腿丝袜亚洲色图| 一本一道波多野结衣一区二区| 日韩一区二区在线观看视频播放| 欧美激情一区不卡| 美女国产一区二区| 91精品1区2区| 久久影院午夜片一区| 亚洲第一在线综合网站| 国产精品一区二区你懂的| 欧美三级资源在线| 中文字幕第一页久久| 奇米影视一区二区三区| 99久久精品一区| 久久久久久久网| 天使萌一区二区三区免费观看| 成人动漫一区二区在线| 精品入口麻豆88视频| 一区二区国产盗摄色噜噜| 国产老肥熟一区二区三区| 欧美精品18+| 亚洲黄一区二区三区| 国产成人精品亚洲777人妖| 欧美高清dvd| 亚洲精品乱码久久久久久黑人| 风间由美一区二区三区在线观看 | 欧美高清www午色夜在线视频| 国产99久久久久| 日本亚洲免费观看| 午夜伦欧美伦电影理论片| 国产传媒日韩欧美成人| 91视频91自| 欧美一区欧美二区| 亚洲午夜电影在线| 久久国产精品99久久久久久老狼| 国产精品综合二区| 日韩一级高清毛片| 日韩欧美黄色影院| 中文字幕一区二区在线播放| 国产精品久久午夜夜伦鲁鲁| 日韩精品1区2区3区| 国产精品综合av一区二区国产馆| 日本乱人伦一区| 26uuu亚洲综合色欧美| 久久久久久久精| 午夜精品爽啪视频| 亚洲成人www| 蜜臀a∨国产成人精品| 国产激情精品久久久第一区二区| 亚洲bdsm女犯bdsm网站| 欧美日韩视频在线一区二区 | 国产欧美日韩精品在线| 国产精品麻豆99久久久久久| 狠狠色丁香久久婷婷综合_中| 91美女片黄在线观看91美女| 欧美一区二区黄色| 老司机免费视频一区二区 | 亚洲一区免费在线观看| 国产精品一区二区你懂的| 国产美女在线观看一区| 日本道免费精品一区二区三区| 欧美一二三四区在线| 久久精品国产亚洲aⅴ| 91视频免费看| 日韩欧美国产小视频| 久久97超碰国产精品超碰| av在线播放不卡| 国产精品视频免费| 国产一区中文字幕| 88在线观看91蜜桃国自产| 精品一区二区三区免费毛片爱| 欧美性色欧美a在线播放| 欧美一卡二卡在线观看| 精品一区二区三区不卡| 精品视频在线看| 欧美激情一二三区| 国产精品亚洲成人| 日韩一区二区三区四区五区六区 | 色婷婷国产精品| 欧美国产在线观看| 老司机免费视频一区二区| 国产精品免费久久| 国产一区 二区 三区一级| 久久国产精品色婷婷| 国产精品蜜臀在线观看|