swift算法手记-5

Posted ljbguanli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift算法手记-5相关的知识,希望对你有一定的参考价值。

//
//  ViewController.swift
//  learn5
//
//  Created by myhaspl on 16/1/23.
//  Copyright (c) 2016年 myhaspl. All rights reserved.
//

import Cocoa
import Foundation

class ViewController: NSViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override var representedObject: AnyObject?

{ didSet { // Update the view, if already loaded. } } private func comresult(inputnum:Double)->Double{ // 5*x^7-3*x^5+16*x^2+7*x+90=0 let myresult:Double = 5 * pow(inputnum,7) - 3 * pow(inputnum,5) + 16 * pow(inputnum,2) + 7 * inputnum + 90 return myresult } @IBOutlet weak var result: NSTextField! @IBAction func compute(sender: AnyObject){ // 5*x^7-3*x^5+16*x^2+7*x+90=0 // 二分法求一元方程的解,最大求解范围[-100000,100000] let trycount = 80 var accuracy: Double = 0.00000000000001 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 } } if (leftbound==nil || rightbound==nil){ return } //计算方程的解 for i in 1...trycount{ result.stringValue=String(i) let center=leftbound!+(rightbound!-leftbound!)/2 let leftres:Double=comresult(leftbound!) let rightres:Double=comresult(rightbound!) let centres:Double=comresult(center) if centres==0 { answer=center break } else if abs(rightbound!-leftbound!) < accuracy { answer=leftbound! break } else if leftres*centres<0{ rightbound=center } else if rightres*centres<0{ leftbound=center } } if let ans=answer{ //方程有解 result.stringValue="解:"+String(stringInterpolationSegment: ans)+" " result.stringValue += "解代入方程的值:"+String(stringInterpolationSegment:comresult(ans)) } } }

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

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


技术分享

以上是关于swift算法手记-5的主要内容,如果未能解决你的问题,请参考以下文章

swift算法手记-10

swift算法手记-8

swift算法手记-10

swift手记-3

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题