//第一次迭代
while (true)
{
for (int i = 1; i < count - 2; i++)//迭代count - 2,减去第一个强度值和最后一个强度值
{
if (i < count - 1)//极限值count-1
{
double A_Strength = Convert.ToDouble(dt.Rows[i][2]);
double X_Strength = Convert.ToDouble(dt.Rows[i - 1][2]);
double I_Strength = Convert.ToDouble(dt.Rows[i + 1][2]);
double X_WaveLength = Convert.ToDouble(dt.Rows[i][1]);
double Avg_Strength = (X_Strength + I_Strength) / 2;
if (A_Strength < X_Strength && A_Strength < I_Strength)
{
Min1_WaveLength.Add(X_WaveLength);
Min1_Strength.Add(A_Strength);
dt.Rows[i][1] = X_WaveLength;
dt.Rows[i][2] = A_Strength; //替代中间值
}
}
}
if (!bGoOn) // bGonOn == FALSE,表示整个for循环里都是符合要求的,退出
break;
}
//第一次以外的迭代
while (true)
{
for (int j = 1; j < count - 2; j++)//迭代count - 2,减去第一个强度值和最后一个强度值
{
if (j < count - 1)//极限值count-1
{
double A_Strength = Convert.ToDouble(dt.Rows[j][2]);
double X_Strength = Convert.ToDouble(dt.Rows[j - 1][2]);
double I_Strength = Convert.ToDouble(dt.Rows[j + 1][2]);
double X_WaveLength = Convert.ToDouble(dt.Rows[j][1]);
double Avg_Strength = (X_Strength + I_Strength) / 2;
if (A_Strength > Avg_Strength)
{
Minn_WaveLength.Add(X_WaveLength);
Minn_Strength.Add(A_Strength);
Minn_Strength.Reverse();
dt.Rows[j][1] = X_WaveLength;
dt.Rows[j][2] = Avg_Strength; // 取平均替代中间值
bGoOn = true; // 表示需要再循环一次
}
}
}
if (!bGoOn) // bGonOn == FALSE,表示整个for循环里都是符合要求的,退出
break;
}
X_Strength字段是需要迭代的值
数据库第一行和最后一行不迭代 第一次迭代: 第二列和第一列,第三列做比较,如果第二列比第一列和第三列小就得到第二列的值 第三列和第二列 第四列做比较 以此类推.............
第二次迭代: 如果第一次迭代的值大于 它左右两个数的平均值就变成左右两个数的平均值
第三次迭代,第四次迭代都是以此类推
一直迭代到不能迭代为止就退出来 每一次迭代的数据都需要保存,我做了一点就不会了。。麻烦求详细代码
楼主在不在,我有一个方法,直接用for循环做呀。如果判断i%2是否大于0,推测它是比较第i+1行和第i行以及第i+2行值还是判断它左右两个数的平均值就变成左右两个数的平均值
int sum = 0;
List list = Lists.newArrayList(1, 2, 3, 4);
for(int i = 1 ; i < list.size() - 1 ; i++){
if(i%2 >= 0){//说明是比较第i+1行与第i行以及第i+2行的大小
if(list.get(i+1) < list.get(i) && list.get(i+1) < list.get(i+2)){
sum = list.get(i+1);
}
}else{//判断第i次迭代的值大于 它左右两个数的平均值就变成左右两个数的平均值
}
}
迭代初始值y/0(i):
y_0^/ (i)=ln〖(ln(√(y(i)+1)))〗
式中:n——迭代次数
k_n (i)=min[(y(n-1)^/ (i-1)+y_(n-1)^/ (i+1))/2,k_(n-1) (i)]
将式2代入式3,若kn(i)= kn-1(i)则停止循环。
B_(y(i))=〖(e^(e^(k_n (i) ) ) )〗^2-1
这是公式。。。。。。小弟特数学别差...._
while(true)
{
bool bGoOn = false; // 标志位, 默认迭代结束
for(int i = 1; i < count - 2; i++)
{
if(dt.Rows[i][2] > dt.Rows[i - 1][2] || dt.Rows[i][2] > dt.Rows[i + 1][2])
{
dt.Rows[i][2] = (dt.Rows[i - 1][2] + dt.Rows[i + 1][2]) / 2; // 取平均替代中间值
bGoOn = true; // 表示需要再循环一次
}
}
if(!bGoOn) // bGonOn == FALSE,表示整个for循环里都是符合要求的,退出
break;
}