注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

二分法多项式求根  

2012-11-04 02:15:47|  分类: C# & .NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
二分法多项式求根 - Castor - 趁年轻,多折腾
          private void button1_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBox1.Text))
                return;
            if (string.IsNullOrEmpty(textBox2.Text))
                return;
            if (string.IsNullOrEmpty(textBox3.Text))
                return;
            try
            {
                listBox1.Items.Clear();
                listBox1.Items.Add("系数:" + textBox1.Text);
                listBox1.Items.Add("下限:" + textBox2.Text + "  " + "上限:" + textBox3.Text);

                string[] sArr = textBox1.Text.Split(new char[] { ',' });
                pArray = new double[sArr.Length];
                for (int i = 0; i < sArr.Length; i++)
                    pArray[i] = Convert.ToDouble(sArr[i]);
                //MessageBox.Show(Evaluate(3).ToString());
                double lowBound, upBound;
                lowBound = Convert.ToDouble(textBox2.Text);
                upBound = Convert.ToDouble(textBox3.Text);
                if (Evaluate(lowBound) * Evaluate(upBound) > 0)
                    throw new Exception("函数在上下限正负号相同!");
                double c = 0;
                while (Math.Abs(lowBound - upBound) > 1e-8)
                {
                    c = (lowBound + upBound) / 2;
                    double mid = Evaluate(c);
                    if (Math.Abs(mid) < 1e-8)
                    {
                        break;
                    }
                    else
                    {
                        if (mid * Evaluate(lowBound) > 0)
                        {
                            lowBound = c;
                        }
                        else
                        {
                            upBound = c;
                        }
                    }
                }
                listBox1.Items.Add("根为:" + c.ToString());

            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private double Evaluate(double x)
        {
            int len = pArray.Length;
            double result = 0;
            for (int i = 0; i < len; i++)
                result =result*x+pArray[i];
            return result;
        }
  评论这张
 
阅读(590)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016