我建立了一个二分法的程序编写,当我有在对话框的Edit中输入时,程序能够运行,但是,当我直接点击按钮时,程序进入了死循环。请帮忙优化下。
if(m_epsilonUP>=0&&m_epsilonUP<=m_beta1)
{ while(fabs(G(m_epsilonUP))>fabs(m_deltaE))
{
if(G(i)*G(j)>0)
{
MessageBox("您不能得到最优解!");
return;
}
if(G(i)*G(j)<0)
{
m_epsilonUP=(i+j)/2;
}
if(G(i)*G(m_epsilonUP)<0)
{
j=m_epsilonUP;
}
if(G(m_epsilonUP)*G(j)<0)
{
i=m_epsilonUP;
}
a=cos(m_delta2*pi)*cos(m_epsilonUP*pi);
b=sin(m_delta2*pi);
c=sqrt((a*a)+(b*b));
d=atan((b/a)); m_delta1=(acos(cos(m_sigma*pi)/c)-d)*180/3.1415926;
m_beta2=m_beta1-m_epsilonUP;
m_r1=m_r2*cos(m_beta2*pi)*m_Z1/(m_Z2*cos(m_beta1*pi));
if(m_epsilonUP>=0&&m_epsilonUP<=m_beta1)
{ while(fabs(G(m_epsilonUP))>fabs(m_deltaE))
{
if(G(i)*G(j)>0)
{
MessageBox("您不能得到最优解!");
return;
}
if(G(i)*G(j)<0)
{
m_epsilonUP=(i+j)/2;
}
if(G(i)*G(m_epsilonUP)<0)
{
j=m_epsilonUP;
}
if(G(m_epsilonUP)*G(j)<0)
{
i=m_epsilonUP;
}
a=cos(m_delta2*pi)*cos(m_epsilonUP*pi);
b=sin(m_delta2*pi);
c=sqrt((a*a)+(b*b));
d=atan((b/a)); m_delta1=(acos(cos(m_sigma*pi)/c)-d)*180/3.1415926;
m_beta2=m_beta1-m_epsilonUP;
m_r1=m_r2*cos(m_beta2*pi)*m_Z1/(m_Z2*cos(m_beta1*pi));
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货