作者luckychild (兌現承諾)
看板C_and_CPP
標題[問題] 進不去while迴圈
時間Tue Mar 3 21:05:30 2009
一下子找不到哪裡弄錯了 =.=
測試用的程式如下.謝謝指教了.
#include <iostream>
#include <cstdlib>
#include <vector>
#include <cmath>
#define gamma 2
using namespace std;
void solve(double tolerance, vector<vector<double> > &u,
vector<vector<double> > &rhs)
{
double AbsDelta=0.0;
while(AbsDelta>tolerance)
{
double J=-16+gamma*exp(u[1][1])*(1+u[1][1]);
double F=-16*u[1][1]+gamma*u[1][1]*exp(u[1][1])-rhs[1][1];
double delta=(-1)*F/J;
cout << "delta=" << delta << endl; //用來測試有無進入迴圈
u[1][1]+=delta;
AbsDelta=abs(delta); //也許明顯的錯誤是沒定增量?
}
}
int main()
{
vector<vector<double> > u(3,vector<double>(3));
vector<vector<double> > rhs(3,vector<double>(3));
u[1][1]=5;
rhs[1][1]=5;
cout<< u[1][1] << endl;
solve(1.0e-7,u,rhs);
cout<< u[1][1] << endl;
system("pause");
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.120.11.75
1F:推 legnaleurc:0.0什麼時候才會大於0.002? XD 03/03 21:07
※ 編輯: luckychild 來自: 140.120.11.75 (03/03 21:09)
2F:→ luckychild:已修文 03/03 21:09
※ 編輯: luckychild 來自: 140.120.11.75 (03/03 21:10)
3F:推 legnaleurc:呣,我看不出來哪有有差耶 03/03 21:11
4F:→ james732:1.0e-7還是大於0吧...?? 03/03 21:12
5F:→ legnaleurc:要比0.0小不就只有負數嗎? 03/03 21:12
6F:→ luckychild:幹! 我耍笨 SORRY 03/03 21:14
7F:→ james732:上面這個推文讓我笑了 XDDDD 03/03 21:14
8F:→ luckychild:在趕程式啦 慌了 =.= 03/03 21:16
9F:→ james732:我懂的 加油 XDDD 03/03 21:16
10F:推 whenyouregon:科科科…看到也囧了…XD 03/04 07:03