R语言的线性优化(一元、多元、约束条件)

2023-10-21 20:59

本文主要是介绍R语言的线性优化(一元、多元、约束条件),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

R语言的线性优化(一元、多元、约束条件)

  • 一元函数优化求解
  • 多元函数优化求解
  • 带约束条件的函数优化

一元函数优化求解

R做一元函数优化求解得函数是optimize或者optimise
在这里插入图片描述
以函数 ln ⁡ x − x 2 为例 \text{以函数} \ln x-x^2\text{为例} 以函数lnxx2为例,现在分别在[1,4]上这个函数的最大值,最小值

f<-function(x) log(x)-x^2;f#定义函数f
curve(f,xlim=c(1,4))#画出f在1,4上的函数图像
optimise(f,interval = c(1,4),tol=0.0001)#默认求最小值
optimise(f,interval = c(1,4),tol=0.0001,maximum = T)#添加参数求最大值

在这里插入图片描述
可以看出这个函数在我定义区间上的最大值和最小值,和此时x的取值
如果你想用ggplot绘制函数,可以这样:

a <- seq(1,4,0.001);b <- log(a)-a^2;c <- data.frame(a,b);c
ggplot(c,aes(a,b))+geom_point(size=0.5)+labs(x=quote(x),y=quote(lnx-x^2))+theme_economist()

在这里插入图片描述

多元函数优化求解

多元函数优化求解得命令是optim,其基本用法是:
在这里插入图片描述
求解函数 f ( x , y ) = ( x 2 + y − 11 ) 2 + ( x + y 2 − 7 ) 2 的极值 \text{求解函数}f\left( x,y \right) =\left( x^2+y-11 \right) ^2+\left( x+y^2-7 \right) ^2\text{的极值} 求解函数f(x,y)=(x2+y11)2+(x+y27)2的极值

x1 <- x2 <- seq(-10,10,length=100)
fr2 <- function(x){x1=x[1]x2=x[2](x1^2+x2-11)^2+(x1+x2^2-7)^2
}
persp(x1,x2,z,box=T,border=T,theta=45,phi=35,col="purple")#画三维图
optim(c(-5,5),fr2)

在这里插入图片描述

在这里插入图片描述

带约束条件的函数优化

求解函数 f ( x , y ) = ( x 1 2 + x 2 − 11 ) 2 − ( x 1 + x 2 2 − 7 ) 2 , x 1 > 0 , x 2 > 0 的极值 \text{求解函数}f\left( x,y \right) =\left( {x_1}^2+x_2-11 \right) ^2-\left( x_1+{x_2}^2-7 \right) ^2\text{,}x_1>0,x_2>0\text{的极值} 求解函数f(x,y)=(x12+x211)2(x1+x227)2x1>0,x2>0的极值
这里要用到constrOptim函数:
在这里插入图片描述

x1 <- x2 <- seq(-10,10,length=100)
fr2 <- function(x){x1=x[1]x2=x[2](x1^2+x2-11)^2+(x1+x2^2-7)^2
}
ui<-matrix(c(1,0,0,1),nc=2);ui
ci <- c(0,0)
constrOptim(c(0.2,0.5),grad=NULL,fr2,ui=ui,ci=ci)

在这里插入图片描述

这篇关于R语言的线性优化(一元、多元、约束条件)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/256951

相关文章

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

Go 语言中的 Struct Tag 的用法详解

《Go语言中的StructTag的用法详解》在Go语言中,结构体字段标签(StructTag)是一种用于给字段添加元信息(metadata)的机制,常用于序列化(如JSON、XML)、ORM映... 目录一、结构体标签的基本语法二、json:"token"的具体含义三、常见的标签格式变体四、使用示例五、使用

Go语言使用slices包轻松实现排序功能

《Go语言使用slices包轻松实现排序功能》在Go语言开发中,对数据进行排序是常见的需求,Go1.18版本引入的slices包提供了简洁高效的排序解决方案,支持内置类型和用户自定义类型的排序操作,本... 目录一、内置类型排序:字符串与整数的应用1. 字符串切片排序2. 整数切片排序二、检查切片排序状态: