打印

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

[复制链接]
1282|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
77ouyangqi|  楼主 | 2013-6-23 17:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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);
                        }
          }

相关帖子

沙发
77ouyangqi|  楼主 | 2013-6-23 17:21 | 只看该作者
程序在万为寻根的时候 出现问题  得到的答案为100000,
改变变量C  会有不懂的根Cp,  当Cp<13000时就能得到正确答案,当Cp>13000时, 结果出错;不论C是多少 结果都是100000,
求大神帮忙啊!!!!!!!!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝