优选法和newton法在实践中的比较
优选法和newton法在实践中的比较
对于函数f(x)=2*x^2-4*x-6 ,求在(-1,2)范围内的极值,分别用优选法和newton法实践,看比较的次数。
(setq count 0)
(defun calc (x)
(progn
(incf count )
(+ (* 2
(* x
x))
(- 0
(* 4
x))
(- 0
6))))
newton
(defun look ( mid left right fun)
(if (< (abs (- (funcall fun mid )
(funcall fun left ) ))
(/ 1.0 10000000))
mid
(if (> (funcall fun left )
(funcall fun right ))
(look (/ (+ mid right ) 2.0) mid right fun)
(look (/ (+ left mid ) 2.0) left mid fun ))))
//节省计算次数 ,保存局部变量
(defun look ( mid left right leftvalue rightvalue fun)
(let ( (midvalue (funcall fun mid) ))
(if (< (abs (- midvalue
leftvalue ))
(/ 1.0 10000000))
mid
(if (> leftvalue
rightvalue)
(look (/ (+ mid right ) 2.0) mid right midvalue rightvalue fun)
(look (/ (+ left mid ) 2.0) left mid leftvalue midvalue fun )))))
(setq count 0)
(print (look (/ (+ -1.0 2.0) 2) -1.0 2.0 (calc -1.0) (calc 2.0) 'calc ))
(print 'compare)
(setq count 0)
(print (lookex 0.8 0 (/ pi 2) 0.5 'calc ))
没保存局部变量前为54,保存之后下降为16。
下面看下优选法:
(setq golden (/ (- (sqrt 5)
1)
2.0))
(defun getright (left right)
(+ left
(* golden
(- right
left))))
(defun getleft (left right)
(+ left
(* (- 1 golden)
(- right
left))))
(defun look (goldenleft goldenright leftvalue rightvalue left right fun)
(if (< (abs (- leftvalue
rightvalue ))
(/ 1.0 10000000))
goldenleft
(if (> leftvalue
rightvalue)
(look goldenright (getright goldenleft right) rightvalue (calc (getright goldenleft right)) goldenleft right fun)
(look (getleft left goldenright) goldenleft (calc (getleft left goldenright)) leftvalue left goldenright fun ))))
(setq count 0)
(print (look (getleft -1.0 2.0 )
(getright -1.0 2.0 )
(calc (getleft -1.0 2.0 ) )
(calc (getright -1.0 2.0 ) )
-1.0
2.0
'calc ))
[9]> count
19
从结果可以发现比较了19次才得出结果;
另外要注意,在判断终止条件的时候,两者选择的标准是不一样的,一个是以值,一个以坐标。
不过在目前的情况中是一样的,这样是为了便于与newton法比较;但在这种情况下有可能出现两者相等,但离所求的点很远的情况,(关于轴对称的情况).
优选法和newton法在实践中的比较相关推荐
- 优选法和newton法在实践中的比较(分析原因)
优选法和newton法在实践中的比较(分析原因) 优选法得到应用的原因是在它所表示的情况下,上一次判断总能给下一次判断节省一次,下面来证明: 假设长度为l的线段,其中的黄金分割点分别为x,这个点的对称 ...
- 向量值函数在计算机工程与应用,拟Newton法在高阶矩阵中的应用-计算机工程与应用.PDF...
Computer Engineering and Applications 计算机工程与应用 2012 ,48 (16) 33 ⦾研究.探讨⦾ 拟Newton 法在高阶矩阵中的应用 --求解最大特征值 ...
- python中怎么比较两个列表的大小_python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法...
前言 排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列.本文主要讲述python中经常用的三种排序算法,选择排序法 ...
- 黑盒测试技术中的等价类划分法、边界值分析法、因果图法和决策表法进行测试用例设计
一.实验目的 1.能熟练应用黑盒测试技术中的等价类划分法.边界值分析法.因果图法和决策表法进行测试用例设计. 2.对测试用例进行优化设计 二.实验环境 Windows系统+ Office工具 三.实验 ...
- AHP层次分析法在水利中的实践技术应用
原文:AHP层次分析法在水利中的实践技术应用 内容简述: 1.认识 AHP,掌握 AHP 的基本原理,优缺点及建模的步骤.以手算案例的方式,熟 悉层次分析法的计算过程,为后期学习软件夯实理论基础. 2 ...
- python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法
前言 排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列.本文主要讲述python中经常用的三种排序算法,选择排序法 ...
- 软件测试中等价类划分为,等价类划分法和边界值法
等价类划分法和边界值法都是软件测试中基于输入域的方法.从被测试的对象来看,无论是整个系统,还是一个模型.一个函数.都有数据输入或参数调用,通过对不同数据的输入,检查其输出的数据以判断测试是否通过的方法 ...
- 容量法和库仑法的异同点_快速搞懂「活性污泥法」,主要把握这4点!
本篇讲活性污泥法,初识活性污泥主要把握好以下4点内容. 01 微生物和活性污泥是一回事儿不? 这两个概念有一定相似性.重合性,但又不尽相同. 微生物我们前面讲过了,就是肉眼不可见的微小生命体:而活性污 ...
- 单纯形法和单纯形表法
单纯形法 单纯形法(Simplex Method)是一种线性规划算法,用于求解线性规划问题.它是由乔治·达内(George Dantzig)于1947年发明的,是现代数学编程的里程碑之一.单纯形法基于 ...
最新文章
- linux基础知识_压缩—进程管理-网络管理-ftp-nfs-ssh-scp
- android软件更新模块实现的技术和方法,Android APK签名原理及方法
- 使用github pages创建博客
- JAVA中的“+”、“concat”和“append”
- 数据库日志文件(databasename_log.ldf)太大 如何清除
- Web浏览器测试,怎么提取测试点 - web测试方法总结
- Element UI 极简教程(1)
- 伺服电机算功率基本公式_伺服电机功率计算选型.ppt
- 终结者2免费教程_如何在模拟器上玩(匹配的还是手机服)_适用最新客户端
- 清华天才王垠受邀面试阿里P9,被P10面跪后网上怒发文,惨打325的P10赵海平回应了!...
- 阿里技术专家十五问,真题面试刀刀见肉,走进面试间(答案解析)
- AutoIt教程资源汇总
- Tensorflow1.7+cuda9.0+cudnn7.0中的各种意(da)外(keng)
- 0203逻辑卷管理、RAID磁盘阵列、VD0、管理运行级别
- 网络布线的概念和IP的计算
- 2021年危险化学品生产单位安全生产管理人员新版试题及危险化学品生产单位安全生产管理人员考试总结
- mysql使用()文件中的配置参数_MySQL使用( )文件中的配置参数。 答案:my.ini
- 替代A4988的微型打印机驱动TMI8421国产电机驱动芯片
- 辐射光电流测试软件,辐照度测量与评估教程.pptx
- 近1、2年来设计的几个飞机构型