R语言最优化(一维)
最优化问题是普遍存在的,以前上运筹学课的时候也接触过最优化相关的问题,当时主要是理论课,并且关注的重点是单纯形法、运输问题以及图论等,这里指的最优化是指函数的最优化,即函数的极值,由于寻找一个局部最优比寻找全局最优要简单得多,所以这里的最优解也是指的局部最优解。
- 牛顿最优化方法
仅给出代码,公式什么的。。。我不知道博客园怎么插入公式,,,,
newton <- function(f3, x0, tol=1e-9, n.max = 100){
x <- x0
f3.x <- f3(x)
n <- 0
while((abs(f3.x[2]) > tol) & (n < n.max)){
x <- x - f3.x[2] / f3.x[3]
f3.x <- f3(x)
n <- n + 1
}
if(n == n.max){
cat("newton failed to converge\n")
}
else{
return(x)
}
}
gamma.2.3 <- function(x){
if(x < 0) return(c(0,0,0))
if(x == 0) return(c(0,0,NaN))
y <- exp(-2*x)
return(c(4*x^2*y, 8*x*(1-x)*y, 8*(1-2*x^2)*y))
}
x0 <- seq(0,10,0.01)
x <- c()
for(i in 1:length(x0)){
x[i] <- newton(gamma.2.3,x0[i])
}
代码在各种初始值下取到的极值点,在某些点可能会出现明显错误的极值点,因此使用的时候应该谨慎,多试试几组值。
- 黄金分割法
黄金分割法只能在一维情况下使用,但是不必知道函数的导数。其核心思想与夹逼求根的方法是一样的,即不断缩小区间范围。

为了加速运算,取了含1+ρ的项。
gsection <- function(ftn, x.l, x.r, x.m, tol=1e-9){
###黄金分割率
gr1 <- 1 + (1+sqrt(5))/2
f.l <- ftn(x.l)
f.r <- ftn(x.r)
f.m <- ftn(x.m)
while((x.r - x.l) > tol){
if((x.r - x.m) > (x.m - x.l)){
y <- x.m + (x.r - x.m)/grl
f.y <- ftn(y)
if(f.y >= f.m){
x.l <- x.m
f.l <- f.m
x.m <- y
f.m <- f.y
}
else{
x.r <- y
f.r <- f.y
}
}else{
y <- x.m - (x.m - x.l)/grl
f.y <- ftn(y)
if(f.y >= f.m){
x.r <- x.m
f.r <- f.m
x.m <- y
f.m <- f.y
}
else{
x.l <- y
f.l <- f.y
}
}
}
return(x.m)
}
f.4 <- function(x){return((x-1.7)^2+1)}
gsection(f.4, 1.5, 2, 1.8)
R语言最优化(一维)的更多相关文章
- R语言最优化(多维)
线性搜索的最速上升法 #### max.search <- function(f, x, y, tol=1e-9, a.max = 2^5){ if(sum(abs(y)) == 0) retu ...
- R语言中的遗传算法详细解析
前言 人类总是在生活中摸索规律,把规律总结为经验,再把经验传给后人,让后人发现更多的规规律,每一次知识的传递都是一次进化的过程,最终会形成了人类的智慧.自然界规律,让人类适者生存地活了下来,聪明的科学 ...
- R语言实战(一)介绍、数据集与图形初阶
本文对应<R语言实战>前3章,因为里面大部分内容已经比较熟悉,所以在这里只是起一个索引的作用. 第1章 R语言介绍 获取帮助函数 help(), ? 查看函数帮助 exampl ...
- 从零开始系列-R语言基础学习笔记之二 数据结构(二)
在上一篇中我们一起学习了R语言的数据结构第一部分:向量.数组和矩阵,这次我们开始学习R语言的数据结构第二部分:数据框.因子和列表. 一.数据框 类似于二维数组,但不同的列可以有不同的数据类型(每一列内 ...
- R语言之RCurl实现文件批量下载
前言: RCurl工具包的作者是由Duncan Temple Lang现任加州大学 U.C. Davis分校副教授.他曾致力于借助统计整合进行信息技术的探索.使用者通过RCurl可以轻易访问网页,进行 ...
- R语言快速入门上手
导言: 较早之前就听说R是一门便捷的数据分析工具,但由于课程设计的原因,一直没有空出足够时间来进行学习.最近自从决定本科毕业出来找工作之后,渐渐开始接触大数据行业的技术,现在觉得是时候把R拿下 ...
- R语言学习笔记
向量化的函数 向量化的函数 ifelse/which/where/any/all/cumsum/cumprod/对于矩阵而言,可以使用rowSums/colSums.对于“穷举所有组合问题" ...
- R语言基础:数组&列表&向量&矩阵&因子&数据框
R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...
- 机器学习与R语言
此书网上有英文电子版:Machine Learning with R - Second Edition [eBook].pdf(附带源码) 评价本书:入门级的好书,介绍了多种机器学习方法,全部用R相关 ...
随机推荐
- 异常处理与网络基础中的tcp,udp协议
# 异常处理: # 什么是异常?异常和错误的区别 # Error 语法错误 比较明显的错误 在编译代码阶段就能检测出来 # Iteration 异常 在执行代码的过程中引发的异常 # 异常发生之后的效 ...
- cv2.getRotationMatrix2D函数
- AutoCAD设置透明度后不起效果
在AutoCAD中设置了实体的透明度,但是看到的效果是不透明 解决方法: 设置系统变量TRANSPARENCYDISPLAY
- linux设置静态IP及网卡选择
linux中使用ifconfig命令查看网卡信息时显示为eth1,但是在network-scripts中只有ifcfg-eth0的配置文件,并且里面的NAME="eth0". ...
- java三种注释以及参数涵义(转)
原文地址:https://www.cnblogs.com/miys/p/4bf714ce33068dcf9ac6526309c9b5e6.html 单行注释:// 注释内容 多行注释:/*... 注释 ...
- 20165306 Exp4 恶意代码分析
Exp4 恶意代码分析 一.实践概述 1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生 ...
- ZJOI2019游记
Day-2 本蒟蒻有幸能去参加ZJOI2019,然而出发前就做好了爆0的准备. 坐了差不多6,7个小时的车,车上基本就是在颓知乎和打雀,然后就到了酒店. 招宝山酒店--本人住过的第一个四星级酒店,看上 ...
- mysql查表的时候报错:java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timest
在spark项目中读取mysql中的数据的时候,发生了报错: 原因:主要是因为数据库中有一些字段为null,无法进行转换: 上面字段那种,我的inserttime字段类型为timestamp类型,不为 ...
- Centos7 防火墙frewalld规则设置
配置firewalld-cmd 查看版本: firewall-cmd --version 查看帮助: firewall-cmd --help 显示状态: firewall-cmd --state 查看 ...
- leetcode刷题——一些算法技巧总结2.0
异或.与的一点总结(这些位运算真的是骚操作2333) 两个相同的数字:a^a=0 取出一个数最右端为1的那一位:a &=-a 其中-a是在计算机中就是a的补码表示(这样所有的加法运算可以使用同 ...