liusing712
2017-05-02 02:31
采纳率: 100%
浏览 959

求教各位大神:程序计算问题

采用C#编写的程序,给定初值然后计算,程序很简单,只有两个循环。为什么有的初值能算有的不能算?
例如1500能算,但是2500就不能算了,3500能算,但是5500又算不通了?这是什么原因?

非常谢谢!!!

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 卖太妃糖的古尔丹 2017-05-02 02:31
    已采纳

    不能算是什么鬼,是程序崩溃,还是计算的结果不对

    打赏 评论
  • threenewbee 2017-05-02 02:28

    因为你的程序写错了。

    打赏 评论
  • shen_wei 2017-05-02 02:54

    for循环写的好。。。怎么会计算错误。。

    打赏 评论
  • Lucky高 2017-05-02 03:05

    你把代码贴出来看看,这样直接说不明白

    打赏 评论
  • liusing712 2017-05-02 03:14
            //*通过窗体赋值*//
            string strPath = Application.StartupPath + "\\test.accdb";
            bp.P = double.Parse(textBox1.Text);
            bp.T = double.Parse(textBox2.Text);
    
            double pbS8;                        
            pbS8 = 1000000 * Math.Pow(10, (3.1115 - 2442.4 / (bp.T - 106.50)));
            double vS8S;
            vS8S = 8 * 32.064 / 2070000;
            bp.fS8S = pbS8 * Math.Exp(vS8S * (bp.P - pbS8) / 8.314 / bp.T);            
            bp.bS8= bp.Ω * 8.314 * 1025.0 / 5200000;       
            bp.bH2S = bp.Ω * 8.314 * 373.55 / 8970000;                     
            bp.b = bp.yS8 * bp.bS8 + 1.0 * bp.bH2S;            
            bp.β = bp.b * bp.P / 8.314 / bp.T;             
            double αS8 = Math.Pow(1.0 + (0.37464 + 1.54226 * 0.3805 - 0.26992 * 0.3805 * 0.3805) * (1.0 - Math.Pow(bp.T / 1025, 0.5)), 2);
            double αH2S = Math.Pow(1.0 + (0.37464 + 1.54226 * 0.1 - 0.26992 * 0.1 * 0.1) * (1.0 - Math.Pow(bp.T / 373.55, 0.5)), 2);            
            double aS8 = bp.Ψ * αS8 * 8.314 * 8.314 * 1025 * 1025 / 5200000;
            double aH2S = bp.Ψ * αH2S * 8.314 * 8.314 * 373.55 * 373.55 / 8970000;            
            bp.a = bp.yS8 * bp.yS8 * aS8 + 2 * bp.yS8 * 1.0 * (1 - 0.0758) * Math.Pow(aH2S * aS8, 0.5) + 1.0 * 1.0 * aH2S;            
            bp.q = bp.a / bp.b / 8.314 / bp.T;
            double z, z1;
            z1 = 0.2;
            z = 0.2;
            for (int i = 1; i < 1000000; i++)
            {
                z = 1.0 + bp.β - bp.q * bp.β * (z1 - bp.β) / (z1 - 0.4142 * bp.β) / (z1 + 2.4142 * bp.β);
                if (Math.Abs(z - z1) <= 0.00001)
                {
                    z = z1;
                    bp.Z = z1;
                    break;
                }
                else
                {
                    z1 = z;
                }
            }            
            bp.qS8 = bp.q * (2 * (bp.yS8 * aS8 + 1.0 * (1.0-0.0758)*Math.Pow(aS8*aH2S,0.5)) / bp.a - bp.bS8 / bp.b);            
            bp.I = 1.0 / 2 / 1.4142 * Math.Log((bp.Z + 2.4142 * bp.β) / (bp.Z - 0.4142 * bp.β), 2.71828183);            
            bp.фS8 = Math.Exp(bp.bS8 * (bp.Z - 1.0) / bp.b - Math.Log((bp.Z - bp.β), 2.71828183) - bp.qS8 * bp.I);            
            double yS81;
            bp.yS8 = 0.1;
            for (int i = 1; i <= 1000000000; i++)
            {
                yS81 = bp.fS8S / bp.фS8 / bp.P;
                if (Math.Abs(yS81 - bp.yS8) <= 0.00001)
                {
                    bp.yS8 = yS81;
                    break;
                }
                else
                {
                    bp.yS8 = yS81;
                }
            }
    
    
    
        }
        //*定义全局参数*//
        public class bp
        {
            public static double T;  
            public static double P; 
            public static double fS8S; 
            public static double Ω=0.07780; 
            public static double Ψ=0.45742; 
            public static double yS8; 
            public static double Z; 
            public static double bS8;
            public static double bH2S;
            public static double b;
            public static double фS8;
            public static double I;
            public static double qS8;
            public static double a;
            public static double q;
            public static double β;
    
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            //输出
            textBox3.Text = bp.yS8.ToString();            
        }
    
    打赏 评论

相关推荐 更多相似问题