zoukankan      html  css  js  c++  java
  • swift算法手记-7

        @IBAction func compute(sender: AnyObject) {
            //  19*x^7-31*x^5+16*x^2+7*x-90=0
            //  newton迭代法求一元方程的解,最大求解范围[-100000,100000]
           
         mytitle.stringValue="19*x^7-31*x^5+16*x^2+7*x-90=0"
            let trycount = 120
            var accuracy: Double = 1e-15
            var answer: Double?=nil
            
            // 预计解范围
            var leftbound:Double?=nil
            var rightbound:Double?

    =nil for var bound:Double=1;bound<10000000;bound*=10{ let leftres=comresult(-bound) let rightres=comresult(bound) if (leftres*rightres) < 0 { leftbound = (-bound) rightbound = bound break } else if leftres==0{ answer=leftbound break } else if rightres==0{ answer=rightbound break } } if (leftbound==nil || rightbound==nil){ return } var center=leftbound!+(rightbound!-leftbound!)/2 let centres:Double=comresult(center) if centres==0 { answer=center } if centres*comresult(rightbound!)<0{ leftbound=center } else if centres*comresult(leftbound!)<0{ rightbound=center } if answer==nil{ //计算方程的解 var p0=leftbound!+(rightbound!-leftbound!)/2 var p:Double for i in 1...trycount{ p = newtoncompresult(p0) if abs(p-p0) < accuracy { answer=p0 break } p0=p } } if let ans=answer{ //方程有解 result.stringValue="解:"+String(stringInterpolationSegment: ans)+" " result.stringValue += "解代入方程的值:"+String(stringInterpolationSegment:comresult(ans)) } }


    用牛顿迭代法解非线性方程





    本博客全部内容是原创,假设转载请注明来源

    http://blog.csdn.net/myhaspl/





  • 相关阅读:
    shell数组
    正则表达式整数
    云计算的三种服务模式(IaaS/PaaS/SaaS)
    云计算通信协议
    LVS 核心组件和专业术语
    nginx
    【转】mybatis调用mssql有输入输出参数那种..
    OAuth2.0 在 SSO中的应用~
    Git 本地安装
    【转】Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7053932.html
Copyright © 2011-2022 走看看