程序实现:由给定几个数确定凸组合系数,组成一个给定的数
问题描述
给定几个数xix_ixi确定凸组合系数λi\lambda_iλi,组成一个给定的数xxx。
∑λixi=x\sum \lambda_ix_i=x∑λixi=x
s.t.∑λi=1s.t. \sum\lambda_i=1s.t.∑λi=1
0≤λi≤10\le\lambda_i\le10≤λi≤1
例如:给定{1,2,3,4},现在给定2.5,现在要由这4个数凸组合成2.5,求出凸组合系数,如果不唯一,给出一个就好了。
比如上面可以是0*1+0.5*2+0.5*3+0*4=2.5,由于是凸组合所以还要满足系数在[0,1]之间,而且和为1。
程序实现
一个简单版的实现如下:
import numpy as np
def convex(lis,x):minl=np.min(lis)maxl=np.max(lis)if(x<minl or x >maxl):print("error,cant express x")return 0lisl=np.sort(lis)f=(maxl-x)/(maxl-minl)return [f,1-f]
即1/3 * 1 + 2/3 *4=3。
不过,上面那个过于简单,就是利用首尾最大值和最小值来凸组合,一下子就求出来了。中间的值没有理会。
下面我们为了让效果好一些,也利用上中间的数。
初步想法是将两端的数都减少,分给中间。
def convex(lis,x):minl=np.min(lis)maxl=np.max(lis)if(x<minl or x >maxl):print("error,cant express x")return 0lisl=np.sort(lis)f1=(maxl-x)/(maxl-minl)max2l=lisl[len(lisl)-2]min2l=lisl[0+1]#我们发现3在这个之间,所以可以再来一次。f2=(max2l-x)/(max2l-min2l)return [f1/2,f2/2,(1-f2)/2,(1-f1)/2]
即1/6 * 1 + 0 * 2+ 0.5 * 3 + 2/6 * 4=3。
完美。
当然啦,如果站在解方程组的角度当然求解这个问题更加全面,可以求得所有凸组合系数。但是复杂度比较高,有的时候,我们只是需要一个解而已,没必要调用求解线性方程组的函数来。
∑λixi=x\sum \lambda_ix_i=x∑λixi=x
s.t.∑λi=1s.t. \sum\lambda_i=1s.t.∑λi=1
0≤λi≤10\le\lambda_i\le10≤λi≤1
程序实现:由给定几个数确定凸组合系数,组成一个给定的数相关推荐
- 关于计算方差的c语言程序,C语言:计算并输出给定10个数的方差。
//计算并输出给定10个数的方差. 1 #include 2 #include 3 double fun(double x[10]) 4 { 5 double p = 0.0,f=0.0,g= ...
- 给定一个数t,以及n个整数,在这n个数中找到加和为t的所有组合
[题目]给定一个数t,以及n个整数,在这n个数中找到加和为t的所有组合,例如t = 4, n = 6,这6个数为 [4, 3, 2, 2, 1, 1],这样输出就有4个不同的组合它们的加和为4: 4, ...
- 给定两个数r和n_输出r的n次方 java_滴滴出行2018编程题
[编程题] CIDR去重 时间限制:1秒 空间限制:65536K 无类别域间路由(CIDR)是一个用于对IPV4地址进行分类表述的方法.CIDR 路由描述的IP地址组的子网mask长度是可变长度, 例 ...
- Java黑皮书课后题第6章:**6.26(回文素数)回文素数是指一个数同时为素数和回文数。编程程序,显示前100个回文素数,每行显示10个数,数字中间用一个空格隔开
6.26(回文素数)回文素数是指一个数同时为素数和回文数.编程程序,显示前100个回文素数,每行显示10个数,数字中间用一个空格隔开 题目描述与运行示例 代码 题目描述与运行示例 6.26(回文素数) ...
- 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。
描述 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 0 到 n-1. ...
- 判断一个整数是否为素数。本题要求编写程序,判断一个给定的整数是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。
#include <stdio.h> #include <stdlib.h> #include <stdio.h> /* 本题要求编写程序,判断一个给定的整数是否为 ...
- 322. 零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每
零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 你可以认为每种硬币的数量 ...
- 完全平方数:若一个整数n能表示成某个整数m的平方的形式,则称这个数为完全平方数。写一个程序判断输入的整数是不是完全平方数。
标题 完全平方数 类别 基本计算 时间限制 1S 内存限制 256Kb 问题描述 若一个整数n能表示成某个整数m的平方的形式,则称这个数为完全平方数.写一个程序判断输入的整数是不是完全平方数. 输入说 ...
- 【c语言作业-二维数组】编写程序,求一个给定的n阶方阵的鞍点。
[问题描述] 一个矩阵元素的"鞍点"是指该位置上的元素值在该行上最大.在该列上最小. 本题要求编写程序,求一个给定的n阶方阵的鞍点. [输入形式] 输入第一行给出一个正整数n(1≤ ...
最新文章
- 计算机合并键功能,Word组合(功能键与Ctrl等组合) -电脑资料
- linux命令行输入下一行但不运行命令
- MATLAB数据分析3
- Andorid Binder进程间通信---总结
- 关于vue父子组件之间事件触发及数据传递问题
- CPU性能参数的含义
- ubuntu 修改默认用户名_Tars框架在Ubuntu上的部署小结
- LabView常用快捷键
- cad四级计算机考试,国家CAD等级考试(AutoCAD_II).doc
- javascript代码混淆的原理
- c语言 格雷码构造问题,格雷码剖析
- 如何实现单行/多行文本溢出的省略样式?
- linux 中gnu的含义是,GNU是什么意思
- tv端h5_最新版H5双端影视APP源码
- 图片择优算法(模糊图片筛选出最清楚的图片) 没有使用第三方库
- teredo实现ipv4公网环境下接入ipv6
- DevExpress中动态设置主题、皮肤
- 阿里出品,Excel 操作利器:easy-excel
- 【元宇宙欧米说】三维视觉艺术:未来元宇宙设计的表现形式
- 数据库综合实验——网上书店管理系统
热门文章
- 智源研究院发布“智能信息检索与挖掘”重大方向,打造北京学派,联合攻关“个人智能信息助手”关键科学问题...
- 他十年前的书在前端圈人手一本,豆瓣评分9.1。现在,王者归来了!
- 这几本豆瓣高分设计好书,人人都应该读!
- 寻找优秀的程序员之实战指南-1
- matplotlib命令与格式:图像(figure)与子区域(axes)布局与规划
- 用深度学习就不怕买到山寨奢侈品?LeCun投了这样一家公司
- 赠书 | 元宇宙:开启未来世界的六大趋势
- 把握数据,驱动未来 | 清华大学大数据研究中心2020年RONG奖学金答辩会成功举办...
- Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来!(附代码)...
- 数据科学研究院第四届“院长接待日”成功举办