微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助 51单片机 C语言 就非线性方程出现的问题

求助 51单片机 C语言 就非线性方程出现的问题

时间:10-02 整理:3721RD 点击:
float F(float s,float X)
{
return (s/(1-exp(-(X*0.39*0.6*2.1/1000000)/0.133))-X);//所要求的方程
}
void main(void)
{
         int i;
         float Cp;
         float y;
         float C=43821;  //这个变量是根据需要调整的
                LCD_Initial();
while(1)
{
        Cp=0;
         for(i=1;i<=9;i++)                                  //十万位
                {
                  y=F(C,Cp+i*100000)*F(C,Cp+(i+1)*100000);
                  if(y<=0)
              {
                          Cp+=i*100000;
                      break;
                  }
                }
        
                         for(i=0;i<=9;i++)                           //万位出问题?
                        {
                          y=F(C,Cp+i*10000)*F(C,Cp+(i+1)*10000);
                          if(y<=0)
                        {
                                  Cp+=i*10000;
                              break;
                            }
                         }
         for(i=0;i<=9;i++)                                 //千位
        {
          y=F(C,Cp+i*1000)*F(C,Cp+(i+1)*1000);
          if(y<=0)
          {
                  Cp+=i*1000;
              break;
          }
        }
         for(i=0;i<=9;i++)                                //百位
        {
          y=F(C,Cp+i*100)*F(C,Cp+(i+1)*100);
          if(y<=0)
          {
      Cp+=i*100;
          break;
          }
        }
         for(i=0;i<=9;i++)                         //十位
        {
          y=F(C,Cp+i*10)*F(C,Cp+(i+1)*10);
          if(y<=0)
          {
      Cp+=i*10;
          break;
          }
        }
         for(i=0;i<=9;i++)                  //个位
         {
          y=F(C,Cp+i)*F(C,Cp+i+1);
          if(y<=0)
          {
      Cp+=i;
          break;
          }
         }
        
               
                        zhuanhuan(Cp);//液晶显示*F(8000000)
                        GotoXY(0,0);
                        str[15]='\0';
                        Print(str);
                        delay_n10us(80000);
                        }
          }

程序在万为寻根的时候 出现问题  得到的答案为100000,
改变变量C  会有不懂的根Cp,  当Cp<13000时就能得到正确答案,当Cp>13000时, 结果出错;不论C是多少 结果都是100000,
求大神帮忙啊!



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top