swift算法手记-7

swift算法手记-7,第1张

概述@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=
@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/ 总结

以上是内存溢出为你收集整理的swift算法手记-7全部内容,希望文章能够帮你解决swift算法手记-7所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1080222.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存