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

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

?? qrmethod.cpp

?? vc下的QR分解法
?? CPP
字號:
#include "math.h"
#include "iostream.h"
#include "stdio.h"
#include <iomanip.h>

#define BOOL int
#define FALSE 0
#define TRUE 1

double ee = 0.00000000001;  //精度水平ee=1e-12;

//顯示矩陣
void ShowMatrix(double * P_Matrix,int N)
{
	cout<<endl;
	for(int i = 0; i < N; i++)
	{
		cout<<endl<<i+1<<" row numbers are:"<<endl;
		for(int j = 0; j < N; j++)
		{
	 		cout<<setiosflags(ios::scientific)<<setprecision(11)<<P_Matrix[i*N+j]<<"  ";
		}
	}
	
}

//顯示列向量
void ShowVector(double * P_Vector,int N)
{
	cout<<endl;
	
	for(int i = 0; i < N; i++)
	{
		cout<<setiosflags(ios::scientific)<<setprecision(11)<<P_Vector[i]<<endl;
	}	
}

//顯示所有特征值Lmuda
void ShowVectorLumda(double * pf_LmudaRe,double * pf_LmudaIm,int N)
{
	cout<<endl;
	
	for(int i = 0; i < N; i++)
	{
		if(pf_LmudaIm[i] == 0)
		{
			cout<<setiosflags(ios::scientific)<<setprecision(11)<<pf_LmudaRe[i]<<endl;
		}
		if(pf_LmudaIm[i] < 0)
		{
			cout<<setiosflags(ios::scientific)<<setprecision(11)<<pf_LmudaRe[i]<<" - "<<-pf_LmudaIm[i]<<" i"<<endl;
		}
		if(pf_LmudaIm[i] > 0)
		{
			cout<<setiosflags(ios::scientific)<<setprecision(11)<<pf_LmudaRe[i]<<" + "<<pf_LmudaIm[i]<<" i"<<endl;
		}
	}
	
	
}

//矩陣乘法——相同維數矩陣相乘
double * Multiply(double * pf_MatraixA, double * pf_MatraixB, int N)
{
	int i,j,k;
	double * pf_Result = new double[N*N];
	
	for(i = 0; i < N; i++)
	{
		for(j = 0; j < N; j++)
		{
			pf_Result[i*N+j] = 0;
			for(k = 0; k < N; k++)
			{
				pf_Result[i*N+j] += pf_MatraixA[i*N+k]*pf_MatraixB[k*N+j]; 
			}
		}
	}
	
	return pf_Result;

}


//矩陣乘法——矩陣乘以列向量
double * MultiplyMV(double * pf_MatraixA, double * pf_Vector, int N)
{
	int i,k;
	double * pf_Result = new double[N];
	
	for(i = 0; i < N; i++)
	{
		pf_Result[i] = 0;
		for(k = 0; k < N; k++)
		{
			pf_Result[i] += pf_MatraixA[i*N+k]*pf_Vector[k]; 
		}
	}
	
	return pf_Result;

}

//矩陣乘法——數乘以矩陣
double * MultiplyNumM(double * pf_MatraixA, double num, int N)
{
	int i,j;
	double * pf_Result = new double[N*N];
	
	for(i = 0; i < N; i++)
	{
		for(j = 0; j < N; j++)
		{
			pf_Result[i*N+j] = pf_MatraixA[i*N+j] * num; 
		}
	}
	
	return pf_Result;
	
}

//行向量乘以列向量
double MultiplyRC(double * pf_VectorA, double * pf_VectorB, int N)
{
	int i;
	double temp = 0;

	for(i = 0; i < N; i++)
	{
			temp += pf_VectorA[i]*pf_VectorB[i]; 
	}
	
	return temp;

}

//列向量乘以行向量
double * MultiplyCR(double * pf_VectorA, double * pf_VectorB, int N)
{
	int i,j;
	double temp = 0;
	double * pf_Result = new double[N*N];
	
	for(i = 0; i < N; i++)
	{
		for(j = 0; j < N; j++)
		{
			pf_Result[i*N+j] = pf_VectorA[i]*pf_VectorB[j];
		}
	}
	
	return pf_Result;
	
}


//矩陣轉置
double * MatrixT(double * pf_Matraix, int N)
{
	int i,j;
	double * pf_MatraixT = new double[N*N];

	for(i = 0; i < N; i++)
	{
		for(j = 0; j < N; j++)
		{
			pf_MatraixT[i*N+j] = pf_Matraix[j*N+i];
		}
	}

	return pf_MatraixT;
	
}

//向量乘以數
double * VectorMultiNum(double * pf_Vector, double num, int N)
{
	int i;

	double * pf_Result = new double[N];

	for(i = 0; i < N; i++)
	{
		pf_Result[i] = pf_Vector[i]*num;
	}

	return pf_Result;
}

//向量相減
double * VectorSub(double * pf_VectorA, double * pf_VectorB, int N)
{
	int i;
	double temp;
	double * pf_Result = new double[N];

	for(i = 0; i < N; i++)
	{
		pf_Result[i] = pf_VectorA[i] - pf_VectorB[i];
	}

	return pf_Result;
}


//矩陣相減
BOOL MatrixSub(double * pf_MatrixA, double * pf_MatrixB, double * pf_Result, int N)
{
	int i,j;

	for(i = 0; i < N; i++)
	{
		for(int j = 0; j < N; j++)
		{
			pf_Result[i*N+j] = pf_MatrixA[i*N+j] - pf_MatrixB[i*N+j];
		}
	}
	
	return TRUE;
}



//對矩陣第r列進行上三角變換
BOOL HessOneStep(double * pf_Matraix,int r, int N)
{
	int i;
	double dr,cr,hr,temp;

	temp = 0;
	for(i = r+1; i < N; i++)
	{
		temp += pf_Matraix[i*N+r]*pf_Matraix[i*N+r];
	}

	dr = sqrt(temp);
	
	if (pf_Matraix[(r+1)*N+r] <= 0)
	{
		cr = dr;
	}
	else
	{
		cr = -dr;
	}

	hr = cr*cr - cr*pf_Matraix[(r+1)*N+r];

	double * ur = new double [N];
	double * pr;
	double * qr;
	double tr = 0;
	double * wr;

	for(i = 0; i < N; i++)
	{
		if (i <= r) 
		{
			ur[i] = 0;
		}
		
		if (i == r+1)
		{
			ur[i] = pf_Matraix[i*N+r] - cr;
		}
		if( i > r+1)
		{
			ur[i] = pf_Matraix[i*N+r];
		}
	}
	
	double * pf_MatraixT;

	pf_MatraixT = MatrixT(pf_Matraix,N);

	pr = VectorMultiNum(MultiplyMV(pf_MatraixT,ur,N),1/hr,N);
	qr = VectorMultiNum(MultiplyMV(pf_Matraix,ur,N),1/hr,N);
	tr = MultiplyRC(pr,ur,N)/hr;
	wr = VectorSub(qr,VectorMultiNum(ur,tr,N),N);

	MatrixSub(pf_Matraix,MultiplyCR(wr,ur,N),pf_Matraix,N);
	MatrixSub(pf_Matraix,MultiplyCR(ur,pr,N),pf_Matraix,N);

	delete ur;
	delete pr;
	delete qr;
	delete wr;
	delete pf_MatraixT;
	return TRUE;
}

//矩陣擬上三角化
double * Hessenberg(double * pf_Matraix,int N)
{
	double * pf_HessMatraix = new double[N*N];
	int i,j;
	
	//矩陣:A1 = A
	for(i = 0; i < N; i++)
	{
		for(int j = 0; j < N; j++)
		{
			pf_HessMatraix[i*N+j] = pf_Matraix[i*N+j];
		}
	}	

	int r;
	BOOL flag;

	for(r = 0; r < N-2; r++)
	{
		flag = FALSE;
		for(i = r+2; i < N; i++)
		{
			if (fabs(pf_HessMatraix[i*N+r]) > ee)
			{
				flag = TRUE;
				break;
			}
		}
		HessOneStep(pf_HessMatraix,r,N);
	}
	for(i = 0; i < N; i++)
	{
		for(int j = 0; j < N; j++)
		{
			if (fabs(pf_HessMatraix[i*N+j]) <= ee)
			{
				pf_HessMatraix[i*N+j] = 0;
			}
		}
	}		
	return pf_HessMatraix;
}

void QRDDStep4(double * pf_Matraix, double * pf_LmudaRe,double * pf_LmudaIm, int N, int k,int& m,int& count);
void QRDDStep567(double * pf_Matraix, double * pf_LmudaRe,double * pf_LmudaIm, int N, int k,int& m,int& count);
void QRDDStep8910(double * pf_Matraix, double * pf_LmudaRe,double * pf_LmudaIm, int N, int k,int& m,int& count);
void QRDDStep11(int& m);
void QROneStep(double * pf_Matraix,double * pf_MatraixM,int r,int N);

//step(3)
void QRDDStep3(double * pf_Matraix, double * pf_LmudaRe,double * pf_LmudaIm, int N, int k,int& m,int& count)
{
	if (fabs(pf_Matraix[(m-1)*N+m-2]) <= ee)	
	{
		pf_LmudaRe[count] = pf_Matraix[(m-1)*N+m-1];
		count++;
		m = m-1;
		QRDDStep4(pf_Matraix,pf_LmudaRe,pf_LmudaIm,N,k,m,count);

	}
	else
	{
		QRDDStep567(pf_Matraix,pf_LmudaRe,pf_LmudaIm,N,k,m,count);
	}
	
}

//step(4)
void QRDDStep4(double * pf_Matraix, double * pf_LmudaRe,double * pf_LmudaIm, int N, int k,int& m,int& count)
{
	if (m == 1)	
	{
		pf_LmudaRe[count] = pf_Matraix[0];
		count++;
		QRDDStep11(m);	
		
	}
	if(m == 0)
	{
		QRDDStep11(m);
	}
	
	if (m > 1)
	{
		QRDDStep3(pf_Matraix,pf_LmudaRe,pf_LmudaIm,N,k,m,count);
	}
	
}

void GetTwoLumda(double * pf_LmudaRe,double * pf_LmudaIm,double b,double c,int& count)
{
	double Delta;	//delta = b*b - 4ac
	
	Delta = b*b-4*c;
		
	if ( Delta >= 0)
	{
		pf_LmudaRe[count] = (-b + sqrt(Delta))/2;
		count++;		
		pf_LmudaRe[count] = (-b - sqrt(Delta))/2;
		count++;		
	}
	else
	{
		pf_LmudaRe[count] = -b/2;
		pf_LmudaIm[count] = sqrt(-Delta)/2;
		count++;		
		
		pf_LmudaRe[count] = -b/2;
		pf_LmudaIm[count] = -sqrt(-Delta)/2;
		count++;		
		
	}
}

//step(5)&&step(6)&&step(7)
void QRDDStep567(double * pf_Matraix, double * pf_LmudaRe,double * pf_LmudaIm, int N, int k,int& m,int& count)
{
	double s1,s2;
	int i;

	double * pf_MatraixD;

	pf_MatraixD = new double[4];

	pf_MatraixD[0] = pf_Matraix[(m-2)*N+m-2];
	pf_MatraixD[1] = pf_Matraix[(m-2)*N+m-1];
	pf_MatraixD[2] = pf_Matraix[(m-1)*N+m-2];
	pf_MatraixD[3] = pf_Matraix[(m-1)*N+m-1];	

	double b,c;	//二階方程的系數b,c

	b = -(pf_MatraixD[0]+pf_MatraixD[3]);
	c = ((pf_MatraixD[0] * pf_MatraixD[3]) - (pf_MatraixD[1] * pf_MatraixD[2]));

	if (m == 2)	
	{
		GetTwoLumda(pf_LmudaRe,pf_LmudaIm,b,c,count);
		QRDDStep11(m);
	}
	else
	{
		if (fabs(pf_Matraix[(m-2)*N+m-3]) <= ee)
		{
			GetTwoLumda(pf_LmudaRe,pf_LmudaIm,b,c,count);			
			m = m - 2;
			QRDDStep4(pf_Matraix,pf_LmudaRe,pf_LmudaIm,N,k,m,count);
		}
		else
		{
			QRDDStep8910(pf_Matraix,pf_LmudaRe,pf_LmudaIm,N,k,m,count);
		}				
	}
}

//step(8)&&step(9)&&step(10)
void QRDDStep8910(double * pf_Matraix, double * pf_LmudaRe,double * pf_LmudaIm, int N, int k,int& m,int& count)
{
	int i,j,r;
	
	double * pf_MatraixA = new double[m*m];
	double * pf_MatraixM = new double[m*m];
	
	for(i = 0; i < m; i++)
	{
		for(j = 0; j < m; j++)
		{
			pf_MatraixA[i*m+j] = pf_Matraix[i*N+j];
		}
	}

	double s,t;

	s = pf_Matraix[(m-2)*N+m-2] + pf_Matraix[(m-1)*N+m-1];
	t = (pf_Matraix[(m-2)*N+m-2] * pf_Matraix[(m-1)*N+m-1])
		 - (pf_Matraix[(m-1)*N+m-2] * pf_Matraix[(m-2)*N+m-1]);

	double * pf_MatraixI= new double[m*m];		//單位矩陣	
	
	//單位矩陣賦值
	for(i = 0; i < m; i++)
	{
		for(j = 0; j < m; j++)
		{
			if (i == j)
			{
				pf_MatraixI[i*m+j] = 1;
			}
			else
			{
				pf_MatraixI[i*m+j] = 0;
			}
			
		}
	}
	

	
	MatrixSub(Multiply(pf_MatraixA,pf_MatraixA,m),MultiplyNumM(pf_MatraixA,s,m),pf_MatraixM,m);	//M1 = A^2-sA
	MatrixSub(pf_MatraixM,MultiplyNumM(pf_MatraixI,-t,m),pf_MatraixM,m);						//M = M1-(-tI)

	BOOL flag;
	
	for(r = 0; r < m - 1; r++)
	{
		flag = FALSE;
		for(i = r+1; i < m; i++)
		{
			if (fabs(pf_MatraixM[i*m+r]) > ee)
			{
				flag = TRUE;
				break;
			}
		}
		QROneStep(pf_MatraixM,pf_MatraixA,r,m);
	}

	//矩陣A的前m*m元素賦值為QR分解后的矩陣
	for(i = 0; i < m; i++)
	{
		for(j = 0; j < m; j++)
		{
			pf_Matraix[i*N+j] = pf_MatraixA[i*m+j];
		}
	}
	
	delete  pf_MatraixM;
	delete  pf_MatraixI;
	delete  pf_MatraixA;
	
	
}

//step(11)
void QRDDStep11(int& m)
{
	m = 0;
}

//用具體簡化算法進行QR分解
void QROneStep(double * pf_MatraixB,double * pf_MatraixC,int r,int m)
{
	int i;
	double dr,cr,hr,temp;
	
	temp = 0;
	for(i = r; i < m; i++)
	{
		temp += pf_MatraixB[i*m+r]*pf_MatraixB[i*m+r];
	}	
	dr = sqrt(temp);
	
	if (pf_MatraixB[r*m+r] <= 0)
	{
		cr = dr;
	}
	else
	{
		cr = -dr;
	}
	
	hr = cr*cr - cr*pf_MatraixB[r*m+r];
	
	double * ur = new double [m];
	double * pr;
	double * qr;
	double * vr;
	double tr = 0;
	double * wr;

	for(i = 0; i < m; i++)
	{
		if (i < r) 
		{
			ur[i] = 0;
		}
		
		if (i == r)
		{
			ur[i] = pf_MatraixB[i*m+r] - cr;
		}
		if( i > r)
		{
			ur[i] = pf_MatraixB[i*m+r];
		}
	}

	vr = VectorMultiNum(MultiplyMV(MatrixT(pf_MatraixB,m),ur,m),1/hr,m);
	MatrixSub(pf_MatraixB,MultiplyCR(ur,vr,m),pf_MatraixB,m);	//求B(r+1)
	pr = VectorMultiNum(MultiplyMV(MatrixT(pf_MatraixC,m),ur,m),1/hr,m);
	qr = VectorMultiNum(MultiplyMV(pf_MatraixC,ur,m),1/hr,m);
	tr = MultiplyRC(pr,ur,m) / hr;
	wr = VectorSub(qr,VectorMultiNum(ur,tr,m),m);

	MatrixSub(pf_MatraixC,MultiplyCR(wr,ur,m),pf_MatraixC,m);	//求C(r+1)
	MatrixSub(pf_MatraixC,MultiplyCR(ur,pr,m),pf_MatraixC,m);	//求C(r+1)

	delete ur;
	delete pr;
	delete qr;
	delete wr;
	delete vr;
}

//對擬上三角化的矩陣進行QR分解求特征值
BOOL QRDoubleDispace(double * pf_Matraix,int N, double * pf_LmudaRe,double * pf_LmudaIm)
{
	int i,k,m,count;

	count = 0;
	m = N;
	
	while (m != 0)
	{
		QRDDStep3(pf_Matraix,pf_LmudaRe,pf_LmudaIm,N,k,m,count);
		
	}	
	for(i = 0; i < N; i++)
	{
		for(int j = 0; j < N; j++)
		{
			if (fabs(pf_Matraix[i*N+j]) <= ee)
			{
				pf_Matraix[i*N+j] = 0;
			}
		}
	}		
	return TRUE;
}

//對矩陣進行選主元素高斯消去
BOOL GaussRe(double * P_Matrix,double * P_MatrixG, int N)
{
	double m,temp;
	
	int i,j,k,l;

	int flag = 0;
	
	if (P_Matrix[0] == 0)
	{
		return FALSE;
	}

	//復制原始矩陣和向量
	for(i = 0; i < N; i++)
	{
		for(j = 0; j < N; j++)
		{
			P_MatrixG[i*N+j] = P_Matrix[i*N+j];
		}
	}
	//開始消去法
	for(k = 0; k < N-1; k++)
	{
		temp = P_MatrixG[k];
		flag = k;
		//找出主元素
		for(l = k; l < N; l++ )
		{
			if (fabs(P_MatrixG[l*N+k]) > fabs(temp)) 
			{
				temp = P_MatrixG[l*N+k];
				flag = l;
			}
		}
		//交換行
		if (flag != k)
		{
			for(l = k; l < N; l++)//交換系數矩陣元素
			{				
				temp = P_MatrixG[flag*N+l];
				P_MatrixG[flag*N+l] = P_MatrixG[k*N+l];
				P_MatrixG[k*N+l] = temp;
			}		
		}				
		for(i = k+1; i < N; i++)
		{			
			m = P_MatrixG[i*N+k]/P_MatrixG[k*N+k];
			P_MatrixG[i*N+k] = 0;	//消去的元素為0			
			for(j = k+1; j < N; j++)
			{
				P_MatrixG[i*N+j] = P_MatrixG[i*N+j]-m*P_MatrixG[k*N+j];
			}
		}
	}
	return TRUE;
}

//回代求解
BOOL Calculate(double * P_MatrixG, double * P_VectorX, int N)
{
	int j,k;
	double temp;

	P_VectorX[N-1] = 1;	//因為是齊次線性方程組,將最后一個x直接賦值為1
	for(k = N-2; k >= 0; k--)
	{
		temp = 0;
		for(j = k+1; j < N; j++)
			{
				temp += P_MatrixG[k*N+j]*P_VectorX[j];
			}
		P_VectorX[k] =  -temp/P_MatrixG[k*N+k];
	}	
	return TRUE;	
}

//求出每個實特征值的特征向量
void CalVectors(double * pf_Matrix,int N, double * pf_LmudaRe,double * pf_LmudaIm)
{
	int i,j,k;
	double * pf_MatrixASubLmuda = new double[N*N];
	double * pf_VectorX = new double[N];

	for (k = 0; k < N; k++)
	{
		if (pf_LmudaIm[k] != 0)	//若特征值不是實數,不進行計算
		{
			continue;
		}

		cout<<endl<<"This is the vector of "<<k+1<<" (";
		cout<<setiosflags(ios::scientific)<<setprecision(11)<<pf_LmudaRe[k]<<"):";
		for(i = 0; i < N; i++)
		{
			for(j = 0; j < N; j++)
			{
				if (i == j)
				{
					pf_MatrixASubLmuda[i*N+j] = pf_Matrix[i*N+j] - pf_LmudaRe[k];
				}
				else
				{
					pf_MatrixASubLmuda[i*N+j] = pf_Matrix[i*N+j];
				}
			}
		}		
		double * pf_MatrixG = new double[N*N];		
		GaussRe(pf_MatrixASubLmuda,pf_MatrixG,N);			
		Calculate(pf_MatrixG,pf_VectorX,N);		
		ShowVector(pf_VectorX,N);		
	}	
}

void main()
{
	int N;
	int i,j;

	N = 10;
	
	double * pf_MatrixA = new double[N*N];
 	double * pf_Result; 
	double * pf_LmudaIm = new double[N]; 
	double * pf_LmudaRe = new double[N]; 
	
	//Lumda虛部為0
	for(i = 0; i < N; i++)
	{
		pf_LmudaIm[i] = 0;
	}

	for(i = 0; i < N; i++)
	{
		for(j = 0; j < N; j++)
		{
			if (i == j)
			{
				pf_MatrixA[i*N+j] = 1.5*cos(i+1+1.2*(j+1));
			}
			else
			{
				pf_MatrixA[i*N+j] = sin(0.5*(i+1)+0.2*(j+1));
			}
		}
	}
		pf_Result = Hessenberg(pf_MatrixA,N);
		cout<<"The hessenberg matrix is:"<<endl;
		ShowMatrix(pf_Result,N);
		
 		QRDoubleDispace(pf_Result,N,pf_LmudaRe,pf_LmudaIm);
		cout<<endl<<"The matrix after QR is :";		
		ShowMatrix(pf_Result,N);

		cout<<endl<<"The Lmudas are :";		
		ShowVectorLumda(pf_LmudaRe,pf_LmudaIm,N);
		
		cout<<endl<<"The X vectors are :";
		CalVectors(pf_MatrixA,N,pf_LmudaRe,pf_LmudaIm);	
}



















?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品电影一区二区| 国产精品视频一二| 欧美国产精品一区| 亚洲成在线观看| 国产精品亚洲一区二区三区妖精 | 国产精品自拍av| 欧美日韩亚洲综合| 国产精品久久网站| 黄色成人免费在线| 在线电影院国产精品| 国产精品久久久久四虎| 国内精品久久久久影院色| 欧美日韩国产片| 一区二区三区在线播放| 不卡电影一区二区三区| 久久久久久一二三区| 另类中文字幕网| 欧美一区二区三区系列电影| 亚洲国产欧美另类丝袜| 一本久道中文字幕精品亚洲嫩| 久久久久国产成人精品亚洲午夜| 久久99久久久久| 91精品国产品国语在线不卡| 亚洲国产精品久久不卡毛片| 色老汉av一区二区三区| 亚洲猫色日本管| 一本到一区二区三区| 亚洲黄色av一区| 91极品美女在线| 一区二区三区欧美久久| 99热精品国产| 亚洲美女视频在线观看| 91在线无精精品入口| 国产精品热久久久久夜色精品三区| 国产精品综合视频| 国产精品午夜在线观看| 波多野结衣中文字幕一区二区三区 | 亚洲精品菠萝久久久久久久| 韩国欧美国产1区| 久久综合久久综合久久| 狠狠狠色丁香婷婷综合激情 | 91精品综合久久久久久| 日韩黄色片在线观看| 日韩一区二区在线观看| 国产美女一区二区三区| 中文字幕av资源一区| 99热99精品| 无吗不卡中文字幕| 日韩一级高清毛片| 国产乱码精品一区二区三区av| 久久久99精品免费观看| 99re免费视频精品全部| 亚洲一区二区欧美日韩| 欧美一级久久久| 国产成人精品在线看| 亚洲欧美日韩在线| 在线播放中文字幕一区| 国产精品一二三区在线| 日韩毛片一二三区| 欧美人与禽zozo性伦| 精品一区二区在线播放| 国产精品久久久久精k8| 欧美日韩免费高清一区色橹橹| 麻豆精品在线视频| 中文字幕av资源一区| 欧美久久高跟鞋激| 国产乱码精品一区二区三区av| 亚洲男人的天堂在线观看| 欧美一区二区三区免费视频| 国产aⅴ综合色| 亚洲国产精品视频| 久久精品人人爽人人爽| 91久久奴性调教| 国产电影一区在线| 午夜精品123| 中文字幕中文字幕一区二区| 欧美一级淫片007| 成人激情午夜影院| 美女一区二区在线观看| 亚洲欧美日韩国产中文在线| 日韩视频免费观看高清在线视频| 粉嫩嫩av羞羞动漫久久久 | 一区二区三区久久| 久久久99久久精品欧美| 欧美午夜片在线看| 成人av在线影院| 久久精品国产亚洲aⅴ| 亚洲精品第一国产综合野| 日本一区二区三区高清不卡| 欧美一区二区在线免费播放| 91色.com| 成人成人成人在线视频| 狠狠色狠狠色综合日日91app| 亚洲国产成人91porn| 国产精品美女久久久久久久久久久 | 日韩成人免费电影| 亚洲欧美日韩国产综合| 中文字幕一区二区视频| 久久久99精品免费观看| 欧美一区永久视频免费观看| 91福利在线免费观看| 成人性色生活片免费看爆迷你毛片| 奇米精品一区二区三区四区| 亚洲影院理伦片| 亚洲免费三区一区二区| 亚洲视频电影在线| 综合久久久久久| 国产精品午夜免费| 一区在线观看视频| 中文字幕一区二区三区不卡| 日本一区二区久久| 国产精品午夜春色av| 国产色91在线| 国产精品污污网站在线观看| 日本一区二区三区在线观看| 久久久国产精品不卡| 久久久三级国产网站| 久久嫩草精品久久久精品| 精品欧美一区二区久久 | 久久精品国产久精国产爱| 亚洲成人综合网站| 天堂久久久久va久久久久| 亚洲高清免费在线| 日韩精品一级二级| 美日韩一级片在线观看| 国产综合久久久久影院| 国产福利91精品一区| 不卡欧美aaaaa| 91高清视频在线| 6080日韩午夜伦伦午夜伦| 日韩欧美国产综合在线一区二区三区| 日韩视频在线一区二区| 久久久精品国产免费观看同学| 国产精品国产三级国产aⅴ中文 | 欧美中文字幕不卡| 欧美日韩一区二区欧美激情| 在线播放91灌醉迷j高跟美女| 日韩亚洲欧美在线观看| 国产亚洲女人久久久久毛片| 国产精品久久影院| 亚洲成人自拍偷拍| 免费欧美日韩国产三级电影| 国产精品一区二区不卡| 91福利在线播放| 亚洲精品一线二线三线| 中文字幕在线不卡| 日韩精品一二三四| 成人免费精品视频| 欧美日韩在线播放一区| 久久久亚洲综合| 国产精品成人在线观看| 视频在线观看国产精品| 国产一区二区三区免费| 91福利社在线观看| 日韩一区二区免费电影| 国产拍欧美日韩视频二区| 亚洲影院在线观看| 成人美女视频在线观看18| 欧美日韩激情在线| 国产精品麻豆视频| 日韩精品一级二级| 色婷婷精品久久二区二区蜜臀av| 欧美一级生活片| 一区二区三区四区中文字幕| 久草这里只有精品视频| 色香色香欲天天天影视综合网 | 欧美性生活影院| 久久婷婷国产综合国色天香| 亚洲午夜羞羞片| 成人蜜臀av电影| 久久久综合精品| 日日夜夜精品视频免费 | 成人ar影院免费观看视频| 日韩午夜在线观看| 一区av在线播放| 99久久精品情趣| 久久久99精品免费观看| 久久精品99久久久| 欧洲中文字幕精品| 中文字幕亚洲综合久久菠萝蜜| 毛片av一区二区| 日韩欧美一区二区三区在线| 亚洲图片欧美综合| 色先锋aa成人| 亚洲视频一二区| 91蝌蚪porny| 亚洲欧洲av一区二区三区久久| 国产精品影视网| 精品第一国产综合精品aⅴ| 免费成人你懂的| 91精品国产福利| 日本成人在线不卡视频| 欧美日韩精品一区二区| 亚洲国产一区二区视频| 欧美色综合影院| 亚洲在线观看免费视频| 欧美老女人在线| 日韩精品乱码av一区二区| 欧美精品v国产精品v日韩精品 | 亚洲美女少妇撒尿|