Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.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: NSViewContr
//
//  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算法手记-5所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。