我知道这是一个基本问题,但我是一个对C ++来说很新的Python用户
我需要使用(cosmology.bias_eff)
循环计算函数for
,其中输入参数(Mass_min)
需要乘以数组(M_ratio)
。
我犯了错误,使用两个for
循环。
vector<double> M_ratio = {1.0,0.9,1.1,1.05,1.1,1.15,1.2,1.25,1.2};
double Mass_min = 2e13;
double Delta0 = 200.0;
for (redshift=0.0;redshift<1.7;redshift=redshift+0.2)
{
for (size_t i=0; i<M_ratio.size(); i++)
{
double Delta = cosmology.DeltaR(Delta0, redshift);
double bias_eff = cosmology.bias_eff(M_ratio[i]*Mass_min,redshift,Delta);
cout << bias_eff <<"," << endl;
}
}
我想要的是,对于redshift
循环中的每个for
,我希望Mass_min
乘以M_ratio
,
即。适用于redshift = 0.0, Mass_min = Mass_min*1.0
,redshift = 0.2, Mass_min = 0.9*Mass_min
等等。
答案 0 :(得分:7)
您只需要一个循环:
vector<double> M_ratio = {1.0,0.9,1.1,1.05,1.1,1.15,1.2,1.25,1.2};
double redshift;
int i;
for (redshift=0.0,i=0; i<M_ratio.size(); i++,redshift+=0.2) {
double Delta = cosmology.DeltaR(Delta0, redshift);
double bias_eff = cosmology.bias_eff(M_ratio[i]*Mass_min,redshift,Delta);
cout << bias_eff <<"," << endl;
}
在每次迭代中,redshift
增加0.2,同时i
增加1。在循环内部进行所需的计算。