前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >数学之美?编程之美?数学 + 编程= unbelievable 美!

数学之美?编程之美?数学 + 编程= unbelievable 美!

原创
作者头像
Rusu
修改于 2017-10-27 03:06:07
修改于 2017-10-27 03:06:07
1.7K1
举报
文章被收录于专栏:Rusu的专栏Rusu的专栏

导语

相信大家跟我一样,偶尔会疑惑:曾经年少的时候学习过的那么多的复杂的数学函数,牛逼的化学方程式,各种物理原理、公式,到底有什么用?但事实是,我们所学习过的东西,虽然很多不能够准确地记得全部,但已经潜移默化地影响到我们的思维模式,很多时候给我们解决一些工作、甚至是生活中的问题,提供了建模的方案,比如,在实现某个需求的时候需要做动画衰减,可能就能够通过匀减速运动公式去实现,再比如,本文所要介绍这个案例,整个实现过程其实并没有多么难多么复杂,但从实际问题到模型建立的思维推导过程,笔者认为还是很有意思也很有意义的,所以,也希望能够分享给大家。

一、 背景问题

有个需求是要将每日消费数据以柱状图形式呈现,我们有追求的设计师希望柱子高度在超过某个限额(设为valueNormal)时不再正比增长,而是越来越缓慢地增长,目的是使柱子高度不会出现有些特别高,有些特别矮的情况,那么,要怎么才能够实现这个需求呢?下面将介绍对于这个问题的思路梳理及实现过程。

二、 思路梳理

1. 模型建立:

首先,回到最初目标:使柱子在超过valueNormal之后,高度增长速度越来越慢。也就是说,在消费金额小于等于valueNormal时,柱子高度成正比增长;大于valueNormal时,大于valueNormal的部分,所占高度随着值的增加增长速度越来越慢。其次,整个柱状图的高度是一定的(设为heightMax),毋庸置疑,最大的消费金额值(设为valueMax)的柱子高度就是heightMax。然后我们对于valueNormal值的柱子的高度设定为heightNormal。这样,这个问题最终就转换成这样的模型:

其中rat就是超过valueNormal的部分的高度在heightMax – heightNormal中所占的比例,要求(1)rat值随消费金额值的增加而增加;(2)增加速度逐渐趋缓;(3)rat值的变化区间是0~1;

那么,根据这个模型,我们需要确定的有以下三个值:(1)valueNormal值如何取;(2)heightNormal值如何取;(3)rat值的计算方法如何确定。这里valueNormal和heightNormal值可能需要根据业务不同要求等来具体确定,并且在整个程序的生命周期内,不会发生变化,我们下面主要讨论rat值的计算方法。

2. rat值的函数设计:

根据1中的模型对rat值的要求,最先想到了渐进函数,最简单的渐进函数y = 1/x, 函数图如下:

在x>0时,y值随x值增加而越来越小,并且减小速度逐渐趋缓,最后无限趋近于0

y = -1/x:

在x>0时,y值随x增加而越来越大,并且增长速度逐渐趋缓,最后无限趋近于0。这个函数变化趋势已经跟我们所要的效果很像了,区别在于:我们要求从0开始逐渐趋近于1,继续改造:

y = 1 – 1/x:

y = 1 – 1/(x+1):

当x>0时,y从0开始逐渐增加,并且增长速度逐渐趋缓,最终趋近于1,这就是我们要的效果了。

3. 应用于实际场景:

2中所得函数式运用于1中模型,x就是value-valueNormal,y就是rat,那么,也就是说当value-valueNormal=1是,rat = 1/2; value-valueNormal=2时,rat = 2/3。那么在实际该消费数据的场景下,相当于高于valueNormal值1块的消费金额就占了heightMax-heightNormal部分的一半高度,之后随着value值继续增加,其高度的增加范围只是heightMax-heightNormal部分的一半,显然是不合理的,因此这里函数式要进一步加参数调整,调整为:y = 1- 1/(x/a + 1) = x/(x+a),这样,当value-valueNormal = a时,value的高度就是heightNormal + (heightMax-heightNormal)*1/2。

到这里1中模型就变为:

接着,就剩下确定valueNormal, heightNormal, a的取值如何确定的问题了,通过实验,最终选用了valueNormal是某个月份的消费日均值(设为Average),heightNormal是整个柱状图高度的1/2,a是Average的一半。这样,这个模型就具体化为:

化解为:

将一个实际例子套用到该模型中,9月份总消费金额是121669元,该月日均消费金额是4055.63元,假定HeightMax = 5000,整体函数示意图如下所示:

可以看出这是完全符合我们最初设计要求的:在消费金额小于等于日均消费金额值时,柱子高度随金额值增加成正比增长;之后,随着消费金额值的增加,柱子高度仍然不断增长,但增高幅度越来越缓慢,最终无限趋近于柱状图总高度。

三、 实现效果:

最终实现效果如下:

完美!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
推荐一本书:《数学之美》,哈哈,理工的浪漫
推荐一本书:《数学之美》,哈哈,理工的浪漫
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Python数据可视化--Matplotlib--入门
风中的云彩
2024/11/07
1360
Python数据可视化--Matplotlib--入门
互联网女皇–2018年互联网趋势报告(附294页下载)
关注PPV课数据科学社区公众号(ID:ppvke123)对话框回复“queen”即可获取: 2018年的互联网趋势报告 PDF
小莹莹
2018/07/24
6350
互联网女皇–2018年互联网趋势报告(附294页下载)
聊一聊数学中的基本定理(五)——主定理
而接下来这个定理,名字上虽然已经没有了基本(fundamental)二字,但是其名——主定理(main theorem)的响度一点也不压于基本定理的声音。想讲它还有一个原因是,它是难得的一个在离散数学为主导的计算机科学中,用分析的思想来解决的问题的例子。而且还是那么的基础和优雅,说它是整个计算机理论的基石之一也不为过。
magic2728
2021/12/04
8650
聊一聊数学中的基本定理(五)——主定理
用javascript分类刷leetcode13.单调栈(图文视频讲解)_2023-02-28
我们怎样加速嵌套的这层循环呢,其实可以预先计算从左往右和从右往左的最大高度数组,在循环数组的时候,可以直接拿到该位置左右两边的最大高度,当前位置的接水量就是左右两边高度的较小者减去当前位置柱子的高度
用户10359054
2023/02/28
6440
4.3 PowerBI分析模板-动态波士顿矩阵
加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。
PowerBI自己学_轻松
2025/02/26
1100
4.3 PowerBI分析模板-动态波士顿矩阵
Chart.js图表开发实践
在前端开发领域,数据可视化是至关重要的一环。柱状图作为最常见的数据可视化图表类型之一,能够直观地展示数据的大小、对比关系等信息,帮助用户快速理解和分析数据。本文将详细介绍前端柱状图的开发实践,包括常用工具与框架的选择、具体开发步骤、高级功能开发以及性能优化等方面,并附上相关代码示例。
用户3484293
2025/02/10
1580
ECharts折线图使用dataZoom出现竖线BUG解决
Echarts 项目中使用折线图 type: line ,在设置了 dataZoom 区域缩放时,会出现以下问题。
德顺
2021/12/18
3.8K1
ECharts折线图使用dataZoom出现竖线BUG解决
小程序日活用户超过2亿,腾讯将加大在智慧零售领域的投入
据财报显示,腾讯2018上半年总收入1472.03亿元人民币,同比增长39%;第二季度总收入736.75亿元人民币,同比增长30%。
场景录小程序
2018/08/20
3380
小程序日活用户超过2亿,腾讯将加大在智慧零售领域的投入
基金定投选星期几更划算?[python统计分析]
基金定投常见的一种方式是定期定额投资,即每周或每月固定的时间段,向基金公司申购固定份额的基金。基金定投可以平均成本、分散风险,实现自动投资,所以基金定投又称为“懒人投资术”。今天主要用python带大家分析一下,从统计数据上来看,到底什么时候定投获得收益的概率最大。
Crossin先生
2020/03/13
1.2K0
360数科华丽财报下的增长困局
8月24日,360数科发布了2020年第二季度财报,这也是自8月7日360金融升级为360数科之后的第一份财报。
刘旷
2020/08/28
5400
[Python人工智能] 六.神经网络的评价指标、特征标准化和特征选择
从本系列文章开始,作者正式开始研究Python深度学习、神经网络及人工智能相关知识。前五篇文章讲解了神经网络基础概念、Theano库的安装过程及基础用法、theano实现回归神经网络、theano实现分类神经网络、theano正规化处理,这篇文章讲解神经网络的评价指标、特征标准化和特征选择,均是基础性知识。主要是学习"莫烦大神" 网易云视频的在线笔记,后面随着深入会讲解具体的项目及应用。基础性文章和在线笔记,希望对您有所帮助,本系列作者采用一篇基础一篇代码的形式讲解,也建议大家一步步跟着学习,同时文章中存在错误或不足之处,还请海涵~
统计学家
2019/04/08
3.3K0
[Python人工智能] 六.神经网络的评价指标、特征标准化和特征选择
Canvas 绘图技术:实现原生柱状图以及定制化开发特殊功能
大家好,我是腾讯云开发者社区的 Front_Yue,本篇文章将介绍如何利用Canvas实现柱状图以及定制化开发特殊功能。
Front_Yue
2024/01/25
1K4
Canvas 绘图技术:实现原生柱状图以及定制化开发特殊功能
OC绘制饼状图、柱状图和扇形图1. 绘制柱状图bar chart2. 绘制饼图Pie Chart3. 绘制进度条和进度扇形4. 神秘感增强器:IB_DESIGNABLE和IBInspectable5.
其实坚持更新真的对自己而言还算是蛮挑战的一件事情,重点在于坚持。每一次有点赞,和回复都让自己感觉非常棒。知识就是用来分享的,这就是开源越来越让人着迷的地方。 好了,来吧~Come on~ 1. 绘制柱
stanbai
2018/06/28
1.3K0
Regularization
本篇文章讲解如何缓解over-fitting。首先看下面三张图,under-fitted表明预测的函数模型所包含的参数量、复杂度低于实际模型,但这种情况已经越来越少见了,因为现在的网络都足够深
mathor
2020/01/15
5620
【数据可视化】Echarts最常用图表
在上一篇博客中提到了【数据可视化】数据可视化入门前的了解,这次来看看Echarts最常用图表有哪些,和作用是什么?
zxctscl
2024/03/16
5630
【数据可视化】Echarts最常用图表
能源领域相关指标2:能源消耗总量【实际应用】
注:在"双碳"背景下,能源消费总量指标应用相对能源生产总量指标价值和意义更大更重要。从2015年国家提出能耗总量和强度"双控"到(以下简称:能耗双控)到2021年底国家提出碳排放总量和强度"双控"(以下简称:碳排放双控),能源消耗控制依然是重点。关于"能耗双控"和"碳排放双控"后面会单独拿出来研究学习下。
齐天大圣
2022/11/28
8860
能源领域相关指标2:能源消耗总量【实际应用】
【激活函数合集】盘点当前最流行的激活函数及选择经验
在阅读DarkNet源码的时候发现作者定义了大量从古至今流行的损失函数,本着科普的态度我打算做一个全面的总结,所以就有了这篇文章。
BBuf
2020/02/26
2.8K0
电梯口的美团外卖与饿了么
将外卖小哥的故事搬上《欢乐喜剧人》舞台的贾冰,通过小品塑造的外卖骑手形象,成功的在笑与泪中感动了现场以及屏幕前的观众。
翟菜花
2019/09/17
5190
能源领域相关指标1:能源生产总量【实际应用】
1.能源生产总量反映某地区能源生产水平、规模、构成及发展速度。能源生产总量就是某地区一次能源生产总量,一次能源主要包括原煤、原油、天然气、一次电力及其他能源。
齐天大圣
2022/11/28
7760
能源领域相关指标1:能源生产总量【实际应用】
技术干货 | 一文详解高斯混合模型原理
高斯混合模型(Gaussian Mixture Model)通常简称GMM,是一种业界广泛使用的聚类算法,该方法使用了高斯分布作为参数模型,并使用了期望最大(Expectation Maximization,简称EM)算法进行训练。本文对该方法的原理进行了通俗易懂的讲解,期望读者能够更直观地理解方法原理。文本的最后还分析了高斯混合模型与另一种常见聚类算法K-means的关系,实际上在特定约束条件下,K-means算法可以被看作是高斯混合模型(GMM)的一种特殊形式(达观数据 陈运文)。 什么是高斯分布?
达观数据
2018/03/30
2.3K0
技术干货 | 一文详解高斯混合模型原理
推荐阅读
相关推荐
Python数据可视化--Matplotlib--入门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文