当前位置:编程学习 > C#/ASP.NET >>

谁会在VB.NET的winform中解这个方程值哈!

在winform中搞个button按钮,单击可求解下面这个方程的X值:

1900 - 49200 * (1 - 0.058 * Math.Log(x)) * Math.Pow(Math.Pow(1 / (3.14 * Math.Tan(26.7 / (49.8 * Math.Pow(Math.Pow(2 * x / 49.8, 2) - 1, 0.5)) +26.7 * (Math.Pow(1 / ((Math.Pow(26.7 /49.8, 2) + Math.Pow(2 * x / 49.8, 2) + 1) / (4 * x / 49.8)) - 1, 0.5) / Math.Tan(Math.Pow(((Math.Pow(26.7 / 49.8, 2) + Math.Pow(2 * x /49.8, 2) + 1) / (4 * x / 49.8) + 1) * (2 * x / 49.8 - 1) / (((Math.Pow(26.7 / 49.8, 2) + Math.Pow(2 * x / 49.8, 2) + 1) / (4 * x / 49.8) - 1) * (2 *x / 49.8 + 1)), 0.05)) - 1 / Math.Tan(Math.Pow((2 * x/49.8 - 1) / (2 * x / 49.8 + 1), 0.5))) / (2 * x))), 2) + Math.Pow((((1 + Math.Pow(2 * x / 49.8, 2)) / (4 * x/ 49.8) - 1 / (2 *x /49.8)) / (Math.Pow(Math.Pow((1 + Math.Pow(2 * x / 49.8, 2)) / (4 * x /49.8), 2) - 1, 0.5) * Math.Tan(Math.Pow(((1 + Math.Pow(2 * x/ 49.8, 2)) / (4 * x/ 49.8) + 1) * (2 *x / 49.8 - 1) / (((1 + Math.Pow(2 * x / 49.8, 2)) / (4 * x / 49.8) - 1) * (2 * x /49.8 + 1)), 0.5))) - ((Math.Pow(26.7 / 49.8, 2) + Math.Pow(2 * x / 49.8, 2) + 1) / (4 * x / 49.8) - 1 / (2 * x / 49.8)) * Math.Tan(Math.Pow(((Math.Pow(26.7 / 49.8, 2) + Math.Pow(2 * x / 49.8, 2) + 1) / (4 * x / 49.8) + 1) * (2 * x / 49.8- 1) / (((Math.Pow(26.7 / 49.8, 2) + Math.Pow(2 * x/ 49.8, 2) + 1) / (4 * x / 49.8) - 1) * (2 * x / 49.8 + 1)), 0.5)) / Math.Pow(Math.Pow((Math.Pow(26.7 / 49.8, 2) + Math.Pow(2 * x / 49.8, 2) + 1) / (4 * x /49.8), 2) - 1, 0.5)) / 3.14, 2), 0.5) = 0

把您的VB.NET算法代码付上。  --------------------编程问答-------------------- 没有高手帮忙解答下吗?我想应该有人懂吧!!waiting for your anwser! --------------------编程问答-------------------- hoho,这个是我见过最长的方程式拉。。。看起来都头晕。。。
帮你顶顶吧。。
--------------------编程问答-------------------- 哥们,为了求得答案,是否格式化下你的问题? --------------------编程问答-------------------- 這麼長的方程式,誰有那個時間去解啊。。
難不是很難,是太長啦。
--------------------编程问答-------------------- x的定义域是什么? --------------------编程问答-------------------- 你都写到这个份上了,再写到vs里也没多少了,继续吧 --------------------编程问答--------------------
引用 6 楼 machong8183 的回复:
你都写到这个份上了,再写到vs里也没多少了,继续吧


要取反的,代码里是知道x求y,这儿是知道y=0,求x。公式都要用反的来一次,太麻烦,又不知道x的定义域 --------------------编程问答-------------------- 先对公式进行合并简化吧 --------------------编程问答--------------------

    Sub Main()
   
        Dim lambda As Expression(Of Func(Of Double, Double)) = Function(x As Double) 1900 - 49200 * (1 - 0.058 * Math.Log(x)) * Math.Pow(Math.Pow(1 / (3.14 * Math.Tan(26.7 / (49.8 * Math.Pow(Math.Pow(2 * x / 49.8, 2) - 1, 0.5)) + 26.7 * (Math.Pow(1 / ((Math.Pow(26.7 / 49.8, 2) + Math.Pow(2 * x / 49.8, 2) + 1) / (4 * x / 49.8)) - 1, 0.5) / Math.Tan(Math.Pow(((Math.Pow(26.7 / 49.8, 2) + Math.Pow(2 * x / 49.8, 2) + 1) / (4 * x / 49.8) + 1) * (2 * x / 49.8 - 1) / (((Math.Pow(26.7 / 49.8, 2) + Math.Pow(2 * x / 49.8, 2) + 1) / (4 * x / 49.8) - 1) * (2 * x / 49.8 + 1)), 0.05)) - 1 / Math.Tan(Math.Pow((2 * x / 49.8 - 1) / (2 * x / 49.8 + 1), 0.5))) / (2 * x))), 2) + Math.Pow((((1 + Math.Pow(2 * x / 49.8, 2)) / (4 * x / 49.8) - 1 / (2 * x / 49.8)) / (Math.Pow(Math.Pow((1 + Math.Pow(2 * x / 49.8, 2)) / (4 * x / 49.8), 2) - 1, 0.5) * Math.Tan(Math.Pow(((1 + Math.Pow(2 * x / 49.8, 2)) / (4 * x / 49.8) + 1) * (2 * x / 49.8 - 1) / (((1 + Math.Pow(2 * x / 49.8, 2)) / (4 * x / 49.8) - 1) * (2 * x / 49.8 + 1)), 0.5))) - ((Math.Pow(26.7 / 49.8, 2) + Math.Pow(2 * x / 49.8, 2) + 1) / (4 * x / 49.8) - 1 / (2 * x / 49.8)) * Math.Tan(Math.Pow(((Math.Pow(26.7 / 49.8, 2) + Math.Pow(2 * x / 49.8, 2) + 1) / (4 * x / 49.8) + 1) * (2 * x / 49.8 - 1) / (((Math.Pow(26.7 / 49.8, 2) + Math.Pow(2 * x / 49.8, 2) + 1) / (4 * x / 49.8) - 1) * (2 * x / 49.8 + 1)), 0.5)) / Math.Pow(Math.Pow((Math.Pow(26.7 / 49.8, 2) + Math.Pow(2 * x / 49.8, 2) + 1) / (4 * x / 49.8), 2) - 1, 0.5)) / 3.14, 2), 0.5)

        Console.WriteLine(lambda.ToString)
        Debug.Print(lambda.ToString)
    End Sub


化简后是
x => (1900 - ((49200 * (1 - (0.058 * Log(x)))) * Pow((Pow((1 / (3.14 * Tan(((26.7 / (49.8 * Pow((Pow(((2 * x) / 49.8), 2) - 1), 0.5))) + ((26.7 * ((Pow(((1 / (((Pow(0.536144578313253, 2) + Pow(((2 * x) / 49.8), 2)) + 1) / ((4 * x) / 49.8))) - 1), 0.5) / Tan(Pow(((((((Pow(0.536144578313253, 2) + Pow(((2 * x) / 49.8), 2)) + 1) / ((4 * x) / 49.8)) + 1) * (((2 * x) / 49.8) - 1)) / (((((Pow(0.536144578313253, 2) + Pow(((2 * x) / 49.8), 2)) + 1) / ((4 * x) / 49.8)) - 1) * (((2 * x) / 49.8) + 1))), 0.05))) - (1 / Tan(Pow(((((2 * x) / 49.8) - 1) / (((2 * x) / 49.8) + 1)), 0.5))))) / (2 * x)))))), 2) + Pow(((((((1 + Pow(((2 * x) / 49.8), 2)) / ((4 * x) / 49.8)) - (1 / ((2 * x) / 49.8))) / (Pow((Pow(((1 + Pow(((2 * x) / 49.8), 2)) / ((4 * x) / 49.8)), 2) - 1), 0.5) * Tan(Pow((((((1 + Pow(((2 * x) / 49.8), 2)) / ((4 * x) / 49.8)) + 1) * (((2 * x) / 49.8) - 1)) / ((((1 + Pow(((2 * x) / 49.8), 2)) / ((4 * x) / 49.8)) - 1) * (((2 * x) / 49.8) + 1))), 0.5)))) - ((((((Pow(0.536144578313253, 2) + Pow(((2 * x) / 49.8), 2)) + 1)
 / ((4 * x) / 49.8)) - (1 / ((2 * x) / 49.8))) * Tan(Pow(((((((Pow(0.536144578313253, 2) + Pow(((2 * x) / 49.8), 2)) + 1) / ((4 * x) / 49.8)) + 1) * (((2 * x) / 49.8) - 1)) / (((((Pow(0.536144578313253, 2) + Pow(((2 * x) / 49.8), 2)) + 1) / ((4 * x) / 49.8)) - 1) * (((2 * x) / 49.8) + 1))), 0.5))) / Pow((Pow((((Pow(0.536144578313253, 2) + Pow(((2 * x) / 49.8), 2)) + 1) / ((4 * x) / 49.8)), 2) - 1), 0.5))) / 3.14), 2)), 0.5)))
--------------------编程问答-------------------- 没见过,帮顶~~~~~~~~~~
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,