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

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

?? func.h

?? 《陳必紅算法》一書的附帶的源代碼
?? H
字號:
#ifndef FUNC_H
#define FUNC_H

#include <math.h>

#include "matrix.h"

#ifndef DOUBLE
#define DOUBLE double
#endif
#include "cmatrix.h"
class cmatrix;

DOUBLE gamma(DOUBLE x); // 計算伽馬函數
DOUBLE gamma2(DOUBLE a, DOUBLE x); // 計算不完全伽馬函數
DOUBLE erf(DOUBLE x); // 計算誤差函數
DOUBLE beta(DOUBLE a,DOUBLE b,DOUBLE x); // 計算不完全貝塔函數
DOUBLE gass(DOUBLE a,DOUBLE d,DOUBLE x); // 給定均值a,標準差d的正態分布函數
DOUBLE student(DOUBLE t, size_t n);	// t-分布函數
DOUBLE chii(DOUBLE x,size_t n); // X-方分布函數
DOUBLE fdisp(DOUBLE f,size_t n1,size_t n2); // F-分布函數
DOUBLE integral(DOUBLE (*f)(DOUBLE),DOUBLE a, DOUBLE b, DOUBLE eps=defaulterr);
 // 函數f,在(a,b)區間積分,采用勒讓德高斯求積法
DOUBLE sinn(DOUBLE x);	// 正弦積分函數
DOUBLE coss(DOUBLE x);	// 余弦積分函數
DOUBLE expp(DOUBLE x);	// 指數積分函數
DOUBLE getroot(DOUBLE (*f)(DOUBLE), DOUBLE x0=0.9, DOUBLE eps=defaulterr);
 // 求函數f(x)=0在x0附近的根,返回此根,如找不到根,則丟出例外
class algo;
DOUBLE getroot(algo & alg, DOUBLE x0=0.9, DOUBLE eps=defaulterr);
 // 同上,但函數為algo類變量


class algo	// 算法類
{
 public:
	DOUBLE yfactor;		// 乘因子,初始化為1
	DOUBLE xfactor;		// x軸放大因子,初始化為1
	DOUBLE addconst;	// 加和,初始化為0
	DOUBLE xshift;		// x平移量,初始化為0
	unsigned refnum;		// 引用數,初始化為1
	algo():refnum(1),yfactor(1.0),xfactor(1.0),addconst(0.0),xshift(0.0){};
	 // 構造函數,產生y=x線性函數
	algo(DOUBLE xs, DOUBLE xf,DOUBLE adc=0, DOUBLE yf=1):refnum(1),yfactor(yf),
		addconst(adc),xshift(xs),xfactor(xf){};
	algo(DOUBLE a):refnum(1),yfactor(0.0),xfactor(1.0),addconst(a),xshift(0.0){};
	 // 常函數的構造
	algo(algo & alg):yfactor(alg.yfactor),xfactor(alg.xfactor),
		addconst(alg.addconst),xshift(alg.xshift),refnum(1){}; // 拷貝構造函數
	virtual ~algo(){}; // 虛析構函數
	DOUBLE cal(DOUBLE x); // 計算算法值
	virtual DOUBLE calculate(DOUBLE x)
		{return x;}; // 本身算法,將被繼承子類改寫
	virtual algo * clone(); // 克隆自己,必須被繼承子類改寫
	algo * mul(DOUBLE a);	// 乘a
	algo * add(DOUBLE a);	// 加a
	algo * neg(); // 取負
	algo * setxfactor(DOUBLE x);		// 設置x軸因子
	algo * xroom(DOUBLE x);	// 將xfactor擴大x倍
	algo * setxshift(DOUBLE x); // 設置xshift的值
	algo * xshiftas(DOUBLE x);	// 從當前開始平移x
	DOUBLE integ(DOUBLE a, DOUBLE b, DOUBLE eps = defaulterr); // 在(a,b)區間積分
			// 采用勒讓德高斯求積法
};

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

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

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

class algogass : public algo	// 正態分布函數
{
 public:
	algogass(DOUBLE a, DOUBLE d):algo(a,1.0/d){};	// 用均值a和標準差d進行初始化
	algogass(algogass& alg):algo(alg){}; // 拷貝構造函數
	virtual DOUBLE calculate(DOUBLE x);	// 實施函數算法
	virtual algo * clone(); // 克隆自己
};

class algoinverse : public algo	// 根據一個算法求反函數的算法
	// 通過不斷求f(x)-y=0在給定的各個y值下的根來進行
{
 public:
	algo * al;
	algoinverse(algo * a):al(a){if(al) al->refnum++;};	// a 是要求反函數的算法
	algoinverse(algoinverse& alg):algo(alg),al(alg.al){
   	al->refnum++;	}; // 拷貝構造函數
	~algoinverse() {
		if(al) {
			al->refnum--;
			if(!al->refnum)
				delete al;
		}
	};		// 析構函數
	virtual DOUBLE calculate(DOUBLE x);	// 實施函數算法
	virtual algo * clone(); // 克隆自己
};

class algoregress : public algo // 線性回歸算法產生線性函數
{
 public:
	algoregress(matrix & xy, matrix* dt=0); // xy為n行2列的矩陣為n個樣本點
		// dt必須指向一個6列一行的矩陣向量,六個數依次為偏差平方和,平均標準
		// 偏差,回歸平方和,最大偏差,最小偏差,偏差平均值
};

class algopoly : public algo	// 多項式
{
 public:
	matrix data;	//	n乘1矩陣,存放n-1次多項式的系數a(0)到a(n-1)
	algopoly(){}; // 缺省構造函數,給子類作調用
	algopoly(matrix& d):data(d){};	// 用矩陣構造多項式
	algopoly(algopoly& alg):algo(alg),data(alg.data){}; // 拷貝構造函數
	virtual DOUBLE calculate(DOUBLE x);	// 實施函數算法
	virtual algo * clone();	// 克隆自己
	cmatrix getroots();	// 求出此多項式的所有根
};

class algopair : public algopoly // 最小二乘擬合類
{
 public:
	algopair(matrix& xy, size_t m, DOUBLE & t0,DOUBLE &t1,DOUBLE &t2);
		// m為擬合多項式的項數,dt0為誤差平方和,dt1為誤差絕對值和,
		// dt2為最大誤差絕對值
	algopair(algopair& alg):algopoly(alg){}; // 拷貝構造函數
};

class algoenter2 : public algo	// 一元全區間不等距插值
{
 public:
	matrix data;	//	n乘2矩陣,n個坐標,先x后y,x必須從小到大
	algoenter2(matrix& d):data(d){};	// 用矩陣構造多項式
	algoenter2(algoenter2& alg):algo(alg),data(alg.data){}; // 拷貝構造函數
	virtual DOUBLE calculate(DOUBLE x);	// 實施函數算法
	virtual algo * clone();	// 克隆自己
};

class algoenter : public algo	// 一元全區間等距插值
{
 public:
	DOUBLE x0;		// 起始點
	DOUBLE h;		// 步長
	matrix data;	//	n乘1矩陣,n個函數值
	algoenter(matrix& d,DOUBLE xx0, DOUBLE hh):
		data(d),x0(xx0),h(hh){};
	algoenter(algoenter& alg):algo(alg),data(alg.data),
		x0(alg.x0),h(alg.h){}; // 拷貝構造函數
	virtual DOUBLE calculate(DOUBLE x);	// 實施函數算法
	virtual algo * clone();	// 克隆自己
};

enum funckind {polyfunc, enter2func, gammafunc}; // 函數種類

class func {	// 函數類
 public:
	algo * alg;	// 決定函數的算法

	func();	// 缺省構造函數
	func(DOUBLE a);	// 常函數的構造函數
	func(DOUBLE (*fun)(DOUBLE));	// 函數指針的構造函數
	func(func & fn);	// 拷貝構造函數
	func(algo * a); // 算法構造函數
   func(algo& a); // 算法構造函數
	func(DOUBLE a, DOUBLE d);	// 產生正態分布函數a為均值,d為標準差
	func(matrix& m, funckind kind=polyfunc);	// 構造數值相關函數,
				// 如kind = polyfunc, 則m為nX1矩陣,是n-1階多項式系數,
				// 其中m(0,0)為常數項,m(n-1,0)為n-1次項。
				// 如kind = enter2func, 則m為nX2矩陣,代表n個坐標點
				// 其中第1列是由小到大排過序的各點的x坐標
	func(matrix& m, DOUBLE x0, DOUBLE h); // 構造等距插值函數
			// 其中m是nX1階矩陣,代表n個y值,x0是起始點,h是步長(采樣間隔)
	virtual ~func() {		// 析構函數
		if(alg) {
			alg->refnum--;	// 引用數減一,如再無其它引用,則刪除算法
			if(!alg->refnum)
				delete alg;
		}
	};

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

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

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

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

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

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

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

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

	DOUBLE integ(DOUBLE a, DOUBLE b, DOUBLE eps=defaulterr);
		// 從a到b計算函數的定積分
	DOUBLE singleroot(DOUBLE x=0.9, DOUBLE eps = defaulterr);
		// 計算函數f(x)=0的一個單根
	func inverse();	// 產生反函數

	void getab(DOUBLE& a,DOUBLE& b) {	// 主要被線性回歸子類用,返回線性因子
   												// 和加常數
		a = alg->yfactor;
		b = alg->addconst;
	};
};

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

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

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

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

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

class funcgass : public func // 正態分布函數
{
 public:
	funcgass(DOUBLE a=0.0, DOUBLE d=1.0):func(new algogass(a,d)){};
	void setmandd(DOUBLE a, DOUBLE d){
		alg->xshift = a;
		alg->xfactor = 1.0/d; }; // 設置均值和標準差
	void getmandd(DOUBLE &a, DOUBLE &d) {
		a = alg->xshift; d=1.0/alg->xfactor;}; // 獲得均值和標準差
};

class funcpoly : public func	// 多項式函數
{
 public:
	funcpoly(matrix& d):func(new algopoly(d)){};
	matrix& getdata(){return ((algopoly*)alg)->data;};
	cmatrix getroots(){return ((algopoly*)alg)->getroots();};
};

class funcenter2 : public func // 一元全區間不等距插值
{
 public:
	funcenter2(matrix& d):func(new algoenter2(d)){};
	matrix& getdata(){return ((algoenter2*)alg)->data;};
};

class funcenter : public func // 一元全區間等距插值
{
 public:
	funcenter(matrix& d, DOUBLE x0, DOUBLE h):
		func(new algoenter(d,x0,h)){};
	matrix& getdata(DOUBLE &xx0, DOUBLE &hh){
		xx0 = ((algoenter*)alg)->x0; hh = ((algoenter*)alg)->h;
		return ((algoenter*)alg)->data; };
};

class funcpair : public func // 最小二乘擬合函數
{
 public:
	funcpair(matrix& xy, size_t m, DOUBLE & t0,DOUBLE &t1,DOUBLE &t2);
		// xy為n行2列數組,存放n個樣本點
			// m為擬合多項式的項數,dt0為誤差平方和,dt1為誤差絕對值和,
		// dt2為最大誤差絕對值
	matrix & getdata(){return ((algopair*)alg)->data;};
	 // 返回結果擬合系數一維矩陣
	cmatrix getroots(){return ((algopoly*)alg)->getroots();};
		// 求出所有根
};

class funcregress : public func // 線性回歸函數,其實就是線性函數ax+b
	// 但由數據樣本點構成a與b
{
 public:
	funcregress(matrix & xy, matrix* dt=0);  // xy為n行2列的矩陣為n個樣本點
		// dt必須指向一個6列一行的矩陣向量,六個數依次為偏差平方和,平均標準
		// 偏差,回歸平方和,最大偏差,最小偏差,偏差平均值
};

#endif // FUNC_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区福利视频| www.欧美日韩| **性色生活片久久毛片| 欧美猛男男办公室激情| 成人免费高清在线观看| 日韩国产欧美三级| 亚洲乱码国产乱码精品精的特点| 欧美一级免费大片| 在线中文字幕一区二区| 国产福利一区二区三区视频| 日韩在线观看一区二区| 亚洲精品第一国产综合野| 久久女同性恋中文字幕| 51午夜精品国产| 欧美中文字幕一区二区三区亚洲 | 国产精品天天摸av网| 欧美偷拍一区二区| 95精品视频在线| 国产麻豆91精品| 日本不卡一区二区三区 | 亚洲女人小视频在线观看| 亚洲精品一区二区三区在线观看| 在线看国产日韩| jizzjizzjizz欧美| 国产suv精品一区二区6| 狠狠色丁香久久婷婷综| 免播放器亚洲一区| 婷婷丁香久久五月婷婷| 亚洲综合色婷婷| 亚洲男人的天堂在线观看| 欧美激情艳妇裸体舞| 精品国产乱码久久久久久久久| 欧美精品日韩精品| 欧美日韩另类国产亚洲欧美一级| 91免费看`日韩一区二区| 成人高清在线视频| 成人网男人的天堂| 国产精品自拍一区| 国产成人夜色高潮福利影视| 久久成人免费电影| 精品一区二区三区影院在线午夜| 日本成人在线一区| 麻豆国产欧美一区二区三区| 日本视频中文字幕一区二区三区| 天堂一区二区在线免费观看| 婷婷六月综合亚洲| 视频一区视频二区在线观看| 亚洲sss视频在线视频| 丝袜亚洲另类欧美| 奇米精品一区二区三区在线观看| 日韩精品乱码av一区二区| 日韩精品91亚洲二区在线观看| 亚洲成av人影院| 美女免费视频一区| 国产一区二区三区精品视频| 国产一区二区精品久久| 国产成人小视频| 99久久综合色| 欧洲另类一二三四区| 欧美精品久久天天躁| 欧美一卡2卡3卡4卡| 精品人伦一区二区色婷婷| 久久精品日产第一区二区三区高清版| 久久久电影一区二区三区| 中文字幕不卡的av| 亚洲日本一区二区| 五月激情综合网| 韩国v欧美v日本v亚洲v| 风间由美一区二区三区在线观看 | 风间由美性色一区二区三区| 成人开心网精品视频| 91官网在线观看| 欧美久久久一区| 久久色在线观看| 国产精品国产a级| 亚洲国产成人精品视频| 秋霞午夜av一区二区三区| 国产美女精品人人做人人爽| av亚洲精华国产精华精| 在线观看日韩国产| 欧美r级在线观看| 最近日韩中文字幕| 蜜臀久久99精品久久久久久9| 国产精品99久久久久| 日本精品一区二区三区高清| 欧美一区二区三区在线观看 | 亚洲午夜影视影院在线观看| 九色综合狠狠综合久久| 91在线porny国产在线看| 9191久久久久久久久久久| 国产欧美日韩在线观看| 亚洲国产你懂的| 国产精品亚洲人在线观看| 欧洲av一区二区嗯嗯嗯啊| 久久影音资源网| 亚洲宅男天堂在线观看无病毒| 狠狠狠色丁香婷婷综合激情| 在线一区二区视频| 国产亚洲综合av| 日本美女一区二区| 一本色道久久综合精品竹菊| 久久日韩精品一区二区五区| 亚洲一区二区高清| 成人在线综合网站| 欧美va亚洲va| 亚洲成国产人片在线观看| 99免费精品视频| 精品粉嫩aⅴ一区二区三区四区| 亚洲香肠在线观看| 99精品欧美一区| 久久久精品国产免费观看同学| 日日欢夜夜爽一区| 91麻豆国产香蕉久久精品| 国产视频一区二区在线| 另类小说综合欧美亚洲| 欧美日韩一区三区四区| 欧美激情综合五月色丁香小说| 久久不见久久见免费视频1| 欧美日韩亚洲不卡| 亚洲欧美日韩国产一区二区三区| 国产成人在线影院| 精品久久久久久久久久久久久久久久久 | 亚洲一区二区三区免费视频| 成人开心网精品视频| 久久免费看少妇高潮| 久久99精品久久久久| 欧美一区二区观看视频| 天堂在线亚洲视频| 欧美巨大另类极品videosbest| 亚洲综合丝袜美腿| 91国模大尺度私拍在线视频| 亚洲欧洲日韩av| 成人网男人的天堂| 国产精品网站导航| 高清不卡在线观看| 国产精品欧美综合在线| 7777精品伊人久久久大香线蕉完整版 | 日韩欧美一级在线播放| 日韩制服丝袜av| 在线综合+亚洲+欧美中文字幕| 亚洲一区二区三区在线播放| 日本高清视频一区二区| 一区二区视频在线| 91免费版在线| 伊人色综合久久天天| 欧美午夜在线一二页| 亚洲超碰精品一区二区| 欧美日本一区二区三区| 舔着乳尖日韩一区| 欧美成人一区二区三区在线观看| 精品一区二区三区影院在线午夜| 精品福利在线导航| 丁香一区二区三区| 亚洲啪啪综合av一区二区三区| 91福利在线看| 午夜久久久久久久久| 91精品国产黑色紧身裤美女| 九九精品一区二区| 国产无一区二区| 91免费版在线看| 日韩激情一二三区| 欧美变态tickling挠脚心| 国产盗摄女厕一区二区三区| 国产精品不卡一区二区三区| 欧美吻胸吃奶大尺度电影| 日本美女一区二区三区视频| 久久夜色精品一区| 成人国产电影网| 亚洲不卡一区二区三区| 欧美电视剧免费全集观看| 粉嫩蜜臀av国产精品网站| 亚洲欧美国产三级| 日韩小视频在线观看专区| 国产精品996| 亚洲一区二区三区影院| 日韩你懂的在线播放| 不卡影院免费观看| 午夜精品久久久久久久久久| 欧美精品一区在线观看| 91啪亚洲精品| 看国产成人h片视频| 国产精品国产a| 在线不卡中文字幕播放| 国产69精品久久久久777| 亚洲va欧美va国产va天堂影院| 久久久久久久久久久久久女国产乱 | 久久99精品一区二区三区三区| 成人免费在线观看入口| 欧美麻豆精品久久久久久| 成人网男人的天堂| 奇米777欧美一区二区| 国产精品少妇自拍| 日韩一级片在线观看| 色综合天天综合网天天看片| 国内国产精品久久| 亚洲3atv精品一区二区三区| 亚洲欧洲av色图| 久久这里都是精品| 91精品国产综合久久精品性色| 99精品视频免费在线观看|