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

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

?? goodtutorialonc++templateforbeginners.txt

?? 給c++初學者一個用于科學計算的好例子
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
  l[i]=a[i]/u[i-1];
  u[i]=b[i]-(l[i])*(c[i-1]);
 }
 
 DOUBLE* y=new DOUBLE[nRow];
 y[0]=pb[0];
 
 for(i=1;i<=nRow-1;i++)
  y[i]=pb[i]-(l[i])*(y[i-1]);
 
 //DOUBLE* x=new DOUBLE[nRow];
 
 pb[nRow-1]=y[nRow-1]/u[nRow-1];
 
 
 for(i=nRow-2;i>=0;i--)
  pb[i]=(y[i]-(c[i])*(pb[i+1]))/u[i];
 
 delete [] a;
 delete [] b;
 delete [] c;
 delete [] l;
 delete [] u;
 delete [] y;
}

BOOL CMatrix::ReadMatrix(char c)
{
 //從文件以文本形式讀入數據到數組;
 
 
 //檢查隔離符是否正確
 if(c!=' ' && c!=',' && c!='$' && c!=' ')
 {
  AfxMessageBox("數據間隔符只能用',','$',空格和Tab鍵!");
  exit(0);
 }
 
 int i,j;
 typedef CArray<DOUBLE,DOUBLE> DblArray;
 DblArray p;
 
 static char BASED_CODE szFilter[] = "Ascii Files(*.MAsc)|*.MAsc|";
 //static char BASED_CODE szFilter[] = "Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";
 
 CFileDialog dlg(true,"MAsc",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
 if(dlg.DoModal()==IDOK)
 {
  CFile file(dlg.GetPathName(),CFile::modeRead);
  CArchive ar(&file,CArchive::load);
        
  CString str;
  CStringArray strA;
  ar.ReadString(str);
  while(str!="")
  {
   strA.Add((LPTSTR)(LPCTSTR)str);
   ar.ReadString(str);
  }
  
  for(i=0;i<strA.GetSize();i++)
  {
   CString str=strA[i];
   CString strL,strR;
   int k,l;
   
   str.TrimLeft();
   str.TrimRight();
   
   l=str.GetLength();
   k=str.Find(c);
   
   while(k!=-1)
   {
    strL=str.Left(k);
    strR=str.Right(l-k-1);
    
    str=strR;
    str.TrimLeft();
    str.TrimRight();
    
    //strL.TrimLeft();//
    strL.TrimRight();
    DOUBLE t=atof((LPTSTR)(LPCTSTR)strL);
    p.Add(t);
    
    strL=strR;
    strL.TrimLeft();
    strL.TrimRight();
    l=strL.GetLength();
    k=strL.Find(c);
   }
   DOUBLE t;
   strL.TrimLeft();
   strL.TrimRight();
   t=atof((LPTSTR)(LPCTSTR)strL);
   p.Add(t);
  }
  int m,n,L;
  m=strA.GetSize();
  L=p.GetSize();
  
  if((L%m)!=0)
  {
   AfxMessageBox("數據讀取錯誤!");
   exit(0);
  }
  else
   n=L/m; 
  
  allocMemory(m,n);
  
  for(i=0;i<m;i++)
   for(j=0;j<n;j++)
   {
    Val[i][j]=p[n*i+j];
    DOUBLE tt=Val[i][j];
   }
   return true;//讀取到數據;
 }
 else
  return false;//用戶選擇了取消;
}

 

DOUBLE CMatrix::Bspline3(DOUBLE xi, DOUBLE Vx[], DOUBLE Vy[], int n)
{
 //n為給定的插值節點總數目;
 //先判斷計算點xi是否在插值節點范圍內,并找出所屬的區間位置;
 int i;
 if(xi>Vx[n-1] || xi<Vx[0])
 {
  AfxMessageBox("要計算的點不在已給插值點之間!");
  exit(0);
 }
 
 if(fabs(xi-Vx[0])<1e-20)
  return Vy[0];
 if((fabs(xi-Vx[n-1])<1e-20))
  return Vy[n-1];
 
 int j;
 for(i=0;i<=n-2;i++)
 {
  if(xi<Vx[i+1])
  {
   j=i;
   i=n-1;
  }
 }
 

 //n為給定的插值節點的數目;
 DOUBLE* h=new DOUBLE[n-1];
 DOUBLE* f=new DOUBLE[n-1];
 DOUBLE* u=new DOUBLE[n-1]; //u[0] is useless;
 DOUBLE* ff=new DOUBLE[n-1];//ff[0] is useless;
 DOUBLE* d=new DOUBLE[n-1];// d[0] is useless;
 DOUBLE* r=new DOUBLE[n-1];
/* -------------------------用GetParam()代替--------------------------------------
 for(i=0;i<=n-2;i++)
 {
  h[i]=Vx[i+1]-Vx[i];
  f[i]=(Vy[i+1]-Vy[i])/h[i];
 }
 for(i=1;i<=n-2;i++)
 {
  u[i]=h[i-1]/(h[i-1]+h[i]);
  r[i]=1-u[i];
  ff[i]=(f[i-1]-f[i])/(Vx[i-1]-Vx[i+1]);
  d[i]=6*ff[i];
  }
 ---------------------------------------------------------------------------*/
 GetParam(Vx,Vy,n,h,f,u,r,ff,d);
 
 
 CMatrix A(n-2,n-2);
 DOUBLE* b=new DOUBLE[n-2];
 DOUBLE* M=new DOUBLE[n];

 /*--------------------用GetM()代替;---------------------------------
 
   
  A(0,0)=2;A(0,1)=r[1];
  for(i=1;i<=n-3;i++)
  {
  A(i,i)=2;
  A(i,i+1)=r[i+1];
  A(i,i-1)=u[i+1];
  }
  A(n-2,n-2)=2;A(n-2,n-3)=u[n-1];
  
 -------------------------------------------------------------------*/
 
 
 GetA(u,r,d,A);
 
 //自然邊界條件;M0=Mn=0;
 
 
 b[0]=d[1];
 for(i=1;i<=n-4;i++)
  b[i]=d[i+1];
 b[n-3]=d[n-2];
 
 A.chase_EQ(b);//用追趕法求解代數方程組;
 
 M[0]=0;
 for(i=1;i<=n-2;i++)
  M[i]=b[i-1];
 M[n-1]=0;
 

 ////////////////////////////////

 DOUBLE t1,t2,t3,t33,t44,t4;
 t1=(Vx[j+1]-xi)*(Vx[j+1]-xi)*(Vx[j+1]-xi);
 t1=t1*(M[j])/(6*h[j]);
 
 t2=(xi-Vx[j])*(xi-Vx[j])*(xi-Vx[j]);
 t2=t2*(M[j+1])/(6*h[j]);
 
 t3=(Vx[j+1]-xi)/h[j];
 t33=Vy[j]-(M[j])*(h[j])*(h[j])/6;
 t3=t3*t33;
 
 t4=(xi-Vx[j])/(h[j]);
 t44=Vy[j+1]-(M[j+1])*(h[j])*(h[j])/6;
 t4=t4*t44;
 
 delete [] h;
 delete [] f;
 delete [] u;
 delete [] ff;
 delete [] d;
 delete [] r;
 delete [] b;//
 delete [] M;
 double t5=t1+t2+t3+t4;
 return t5; 
}

DOUBLE* CMatrix::Bspline3(DOUBLE xi[], int m, DOUBLE Vx[], DOUBLE Vy[], int n)
{
 DOUBLE* s=new DOUBLE[m];
 double t;
 int i;
 for(i=0;i<=m-1;i++)
 {
   t=Bspline3(xi[i],Vx,Vy,n);
   s[i]=t;
 }
 return s;
}


void CMatrix::allocMemory(int m, int n)
{
 
 //先釋放Val已經分配的內存,然后按照制定的大小重新分配內存; 
 /*---------------------------------------------------------------------
 注意:實際上,不能夠根據Val是否為NULL來判斷Val是否已經被分配過內存;
 比如:假如CMatrix類包含一個系統提供的默認的拷貝構造函數
 (即不進行任何初始化的操作的構造函數),那么,Val的值將是一個隨機值,
 如果對象是用此默認構造函數生成,則該對象的Val!=NULL,但是此時,Val
 被沒有被分配過內存;
 
   至于在本程序中,在CMatrix類的所有的構造函數中都對Val進行了初始化,
   故可以根據Val是否為空來判斷Val是否已經分配過內存;
 ----------------------------------------------------------------------*/
 //先調用freeMemory()函數;
 //freeMemory()函數會根據Val是否為空來檢查Val是否已經被分配了內存;
 
 freeMemory();
 nRow=m;
 nCol=n;
 Val=new DOUBLE* [nRow];
 for(int i=0;i<nRow;i++)
  Val[i]=new DOUBLE [nCol];
}

BOOL CMatrix::ReadMatrix(CString strFilePath, char c)
{
 
 //從文件以文本形式讀入數據到數組;
 
 
 //檢查隔離符是否正確
 if(c!=' ' && c!=',' && c!='$' && c!=' ')
 {
  AfxMessageBox("數據間隔符只能用',','$',空格和Tab鍵!");
  exit(0);
 }
 
 int i,j;
 typedef CArray<DOUBLE,DOUBLE> DblArray;
 DblArray p;
 
 
 CFile file(strFilePath,CFile::modeRead);
 CArchive ar(&file,CArchive::load);
 
 CString str;
 CStringArray strA;
 if((ar.ReadString(str))==false)
 {
  AfxMessageBox("文件讀取出錯!檢查文件名和文件路徑!");
  exit(0);
 }
 while(str!="")
 {
  strA.Add((LPTSTR)(LPCTSTR)str);
  ar.ReadString(str);
 }
 
 for(i=0;i<strA.GetSize();i++)
 {
  CString str=strA[i];
  CString strL,strR;
  int k,l;
  
  str.TrimLeft();
  str.TrimRight();
  
  l=str.GetLength();
  k=str.Find(c);
  
  while(k!=-1)
  {
   strL=str.Left(k);
   strR=str.Right(l-k-1);
   
   str=strR;
   str.TrimLeft();
   str.TrimRight();
   
   //strL.TrimLeft();//
   strL.TrimRight();
   DOUBLE t=atof((LPTSTR)(LPCTSTR)strL);
   p.Add(t);
   
   strL=strR;
   strL.TrimLeft();
   strL.TrimRight();
   l=strL.GetLength();
   k=strL.Find(c);
  }
  DOUBLE t;
  strL.TrimLeft();
  strL.TrimRight();
  t=atof((LPTSTR)(LPCTSTR)strL);
  p.Add(t);
 }
 int m,n,L;
 m=strA.GetSize();
 L=p.GetSize();
 
 if((L%m)!=0)
 {
  AfxMessageBox("數據讀取錯誤!");
  exit(0);
 }
 else
  n=L/m; 
 
 allocMemory(m,n);
 
 for(i=0;i<m;i++)
  for(j=0;j<n;j++)
  {
   Val[i][j]=p[n*i+j];
   DOUBLE tt=Val[i][j];
  }
  return true;//讀取到數據;
}

void CMatrix::GSElimin_EQ(DOUBLE *pb,DOUBLE TOL)
{
/*-------------------------------------------------------
高斯消去法解線性代數方程組;
Ax=b; pb為數組b;;
A:方陣;
x為代求的解,是與b同維數的數組;
返回值保存在參數pb中;
 --------------------------------------------------------*/
 if(nRow!=nCol)
 {
  AfxMessageBox("高斯消元法只適用于方陣!");
  exit(0);
 }
 
 /*---------------------------------開始消元-----------------------*/
 int i;
 int iM;
 for(i=0;i<=nRow-2;i++)
 {
  iM=findMainElem(i);
  if(iM==i && fabs(Val[i][i]-0)<TOL)
  {
   AfxMessageBox("矩陣為奇異矩陣,無法求得唯一解!");
   exit(0);
  }
  else if(iM!=i)
  {
   exchangeRow(i,iM);
   DOUBLE bt;
   bt=pb[i];
   pb[i]=pb[iM];
   pb[iM]=bt;
  }
  
  int m,n;
  DOUBLE l;
  for(m=i+1;m<=nRow-1;m++)
  {
   l=-Val[m][i]/Val[i][i];
   Val[m][i]=0;
   for(n=i+1;n<=nCol-1;n++)
   {
    Val[m][n]=Val[m][n]+l*Val[i][n];
   }
   pb[m]=pb[m]+l*pb[i];
  } 
 }
 
 if(fabs(Val[nRow-1][nCol-1])<TOL)
 {
  AfxMessageBox("矩陣奇異,無法求得唯一解 !");
  exit(0);
 }
 /*-------------------------消元完畢----------------------*/
 
 /********************開始求解********************************/
 
 DOUBLE* x=new DOUBLE[nRow];
 
 x[nRow-1]=pb[nRow-1]/Val[nRow-1][nRow-1];
 
 int kk;
 for(kk=nRow-2;kk>=0;kk--)
 {
  DOUBLE sum=0;
  for(int jj=kk+1;jj<=nRow-1;jj++)
  {
   sum=sum+Val[kk][jj]*x[jj];
  }
  sum=pb[kk]-sum;
  x[kk]=sum/Val[kk][kk];
 }
 /********************求解完畢********************************/
 
 for(i=0;i<=nRow-1;i++)
  pb[i]=x[i];
 delete [] x;
}


void CMatrix::exchangeRow(int i, int j)
{
 //僅僅用于高斯消元;
 int k;
 DOUBLE t;
 for(k=i;k<=nCol-1;k++)
 {
  t=Val[i][k];
  Val[i][k]=Val[j][k];
  Val[j][k]=t;
 }
}

int CMatrix::findMainElem(int row)
{
 //僅僅用于高斯消元;
 
 int i;
 DOUBLE max;
 int n;
 max=Val[row][row];
 n=row;
 for(i=row+1;i<=nRow-1;i++)
 {
  
  if(fabs(Val[i][row])>fabs(max))
  {
   max=Val[i][row];
   n=i;
  } 
 }
 return n;
}

BOOL CMatrix::SaveMatrix(BOOL bAscii)
{ 
 static char BASED_CODE szFilter[]="Ascii Files(*.MAsc)|*.MAsc|Binary Files(*.MBin)|*.MBin|";
 CFileDialog dlg(false,"MatrixFile.MAsc",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
 if(dlg.DoModal()==IDOK)
 {
  CString str=dlg.GetPathName();
  CFile file(str,CFile::modeCreate|CFile::modeReadWrite);
  CArchive ar(&file,CArchive::store);
  
  int i,j;
  CString s;
  CString s1;
  if(bAscii)
  {
   for(i=0;i<=nRow-1;i++)
   {
    s="";
    for(j=0;j<=nCol-1;j++)
    {
     s1.Format("%.8lf  ",Val[i][j]);
     s=s+s1; 
    }
    ar.WriteString(s);
    ar.WriteString("\r\n");//回車換行符號;
   }   
   return true;
  }
  if(!bAscii)
  {
   Serialize(ar);
   return true;
  }
 }
 return false;
}

void CMatrix::GetSize(int &m, int &n)
{
 m=nRow;
 n=nCol;
}

BOOL CMatrix::SaveMatrix(CString strPath, BOOL bAscii)
{
 
 CFile file(strPath,CFile::modeCreate|CFile::modeReadWrite);
 CArchive ar(&file,CArchive::store);
 if(bAscii)
 {
  int i,j;
  CString s;
  CString s1;
  for(i=0;i<=nRow-1;i++)
  {
   s="";
   for(j=0;j<=nCol-1;j++)
   {
    s1.Format("%.8lf  ",Val[i][j]);
    s=s+s1; 
   }
   ar.WriteString(s);
   ar.WriteString("\r\n");//回車換行符號;
  }    
  return true;
 }
 else
 {
 
 Serialize(ar);
 return true;
 }
 return false;
}

int CMatrix::GetRowSize()
{
 return nRow;
}

int CMatrix::GetColSize()
{
 return nCol;
}

BOOL CMatrix::LoadMatrix(CString strPath)
{ 
  CFile file(strPath,CFile::modeRead);
  CArchive ar(&file,CArchive::load);

  Serialize(ar);
  return true;
}

BOOL CMatrix::LoadMatrix()
{
 static char BASED_CODE szFilter[] = "Ascii Files(*.MAsc)|*.MAsc|Binary Files(*.MBin)|*.MBin|";
    CFileDialog dlg(true,NULL,"2進制數據文件.MBin",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
 
 if(dlg.DoModal()==IDOK)
 {
  CString str=dlg.GetPathName();
  CFile file(str,CFile::modeRead);
  CArchive ar(&file,CArchive::load);

  Serialize(ar);
  return true;
 }
 return false;
}


還有很多算法,比如矩陣求逆,矩陣求秩,矩陣分解,子矩陣的提取,高斯-賽德爾迭代法等暫時還沒有添加進去,有空慢慢寫。


Powered by BlogDriver 2.1 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区**美女毛片| 国内一区二区视频| 精彩视频一区二区| 91免费国产在线| 2014亚洲片线观看视频免费| 中文字幕欧美日本乱码一线二线| 亚洲最大的成人av| 成人美女在线视频| 久久综合五月天婷婷伊人| 香蕉久久夜色精品国产使用方法| 成人福利视频在线| 26uuuu精品一区二区| 日韩电影在线免费观看| 色噜噜狠狠成人网p站| 国产精品免费视频观看| 狠狠色丁香久久婷婷综合丁香| 欧美日韩在线播放一区| 亚洲男人的天堂在线aⅴ视频| 国产乱码精品一区二区三区五月婷| 欧美人xxxx| 亚洲福利视频三区| 色播五月激情综合网| 国产精品少妇自拍| 国产激情一区二区三区四区| 欧美va亚洲va国产综合| 日本中文一区二区三区| 欧美美女网站色| 午夜av区久久| 欧美日韩一区二区三区四区| 一区二区三区视频在线看| 色综合久久天天| 亚洲三级视频在线观看| 色综合色综合色综合色综合色综合 | 国产精品乱子久久久久| 国产成人av电影免费在线观看| 久久久久久久久久久久电影| 国产一区二区精品久久91| 精品sm捆绑视频| 国产一区二区三区黄视频 | 免费三级欧美电影| 69堂成人精品免费视频| 日韩高清不卡一区二区三区| 日韩欧美国产一二三区| 久草在线在线精品观看| 国产婷婷一区二区| 成人晚上爱看视频| 一区二区三区四区国产精品| 欧美日韩亚洲高清一区二区| 日本vs亚洲vs韩国一区三区| 日韩午夜精品视频| 国产福利91精品一区二区三区| 日本一区二区三区电影| 99久久精品国产毛片| 一区二区三区产品免费精品久久75| 欧美最猛黑人xxxxx猛交| 日韩国产精品91| 久久久亚洲午夜电影| 99re免费视频精品全部| 性做久久久久久| 国产欧美一二三区| 在线视频一区二区三| 免费在线观看一区| 日本一区二区高清| 欧美日产在线观看| 国产精品综合视频| 亚洲观看高清完整版在线观看| 日韩精品综合一本久道在线视频| 成人av午夜影院| 日韩国产一区二| 欧美激情一二三区| 欧美日本一道本| 成人永久免费视频| 日韩高清不卡一区二区| 国产精品视频看| 欧美一区二区成人6969| zzijzzij亚洲日本少妇熟睡| 日韩avvvv在线播放| 国产精品少妇自拍| 欧美mv日韩mv| 日本韩国精品在线| 欧美午夜精品一区二区蜜桃| 极品美女销魂一区二区三区免费| 亚洲人成精品久久久久久 | 精品夜夜嗨av一区二区三区| 亚洲色图欧美激情| 欧美精品一区二区三区视频| 欧美三级视频在线| aaa欧美色吧激情视频| 久久99国内精品| 香蕉影视欧美成人| 亚洲男女一区二区三区| 国产精品午夜电影| 欧美不卡在线视频| 欧美高清dvd| 欧美性猛片xxxx免费看久爱 | 中文字幕一区不卡| 久久午夜国产精品| 欧美电影免费观看高清完整版在线观看 | 日韩伦理电影网| 国产日韩欧美精品一区| 日韩精品一区二区三区视频在线观看| 91极品视觉盛宴| 成人h动漫精品一区二| 亚洲国产一区二区三区| 国产精品美女一区二区在线观看| 日韩欧美一级精品久久| 欧美日韩国产在线播放网站| 91久久奴性调教| 91蜜桃免费观看视频| 成人在线一区二区三区| 国产99久久久国产精品| 国产另类ts人妖一区二区| 久久国内精品自在自线400部| 日韩av中文字幕一区二区| 偷拍亚洲欧洲综合| 丝袜美腿成人在线| 人人精品人人爱| 寂寞少妇一区二区三区| 国内一区二区视频| 国产成人精品网址| 成人动漫av在线| 色婷婷亚洲精品| 欧美伊人久久久久久午夜久久久久| 欧美主播一区二区三区美女| 在线看一区二区| 欧美日韩国产在线观看| 91精品国产欧美一区二区18| 日韩女同互慰一区二区| 久久久国产精品午夜一区ai换脸| 久久久久国产精品麻豆ai换脸| 久久久久97国产精华液好用吗| 国产女主播一区| 日韩毛片视频在线看| 亚洲风情在线资源站| 免费欧美日韩国产三级电影| 国产伦精品一区二区三区视频青涩 | 91视频在线观看免费| 色婷婷久久久综合中文字幕 | 欧美在线观看视频一区二区| 欧美视频日韩视频| 日韩一级大片在线| 国产欧美一区二区精品性| 尤物在线观看一区| 日韩国产欧美在线视频| 国产成人h网站| 欧美专区在线观看一区| 精品毛片乱码1区2区3区| 国产欧美一区二区三区在线看蜜臀 | 国产情人综合久久777777| 亚洲精品综合在线| 青青草国产成人99久久| 成人一道本在线| 欧美日韩黄色一区二区| 国产日韩精品一区二区三区在线| 亚洲精品成人精品456| 看片网站欧美日韩| 99久久精品国产观看| 欧美成人艳星乳罩| 亚洲啪啪综合av一区二区三区| 麻豆精品在线观看| 一本到三区不卡视频| 精品sm捆绑视频| 五月激情综合色| av中文字幕亚洲| 欧美精品一区二区三区四区 | 欧美美女激情18p| 国产精品看片你懂得| 美女视频免费一区| 欧美系列日韩一区| 国产免费久久精品| 日本特黄久久久高潮| 日本久久精品电影| 国产欧美一区视频| 久久99国产精品久久99| 在线观看91视频| 亚洲私人影院在线观看| 国产精品一二三四五| 日韩欧美123| 日韩一区欧美二区| 欧美性xxxxx极品少妇| 1024成人网| www.亚洲在线| 中文字幕巨乱亚洲| 国产精品一区二区黑丝| 日韩一区二区三区四区| 亚洲第一成年网| 色天使色偷偷av一区二区| 国产精品久久久久三级| 国产精品123| 2014亚洲片线观看视频免费| 免费国产亚洲视频| 日韩欧美一级二级三级| 日本少妇一区二区| 欧美一区中文字幕| 日韩精品乱码免费| 欧美一区二区日韩一区二区| 日韩精品电影在线| 日韩欧美一级二级三级久久久| 日本欧洲一区二区| 欧美成人三级在线|