热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[从头学数学]第144节一次函数

剧情提要:[机器小伟]在[工程师阿伟]的陪同下进入了筑基中期的修炼,这次要修炼的目标是[一次函数]。正剧开始:星历2016年03月21
剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入了筑基中期的修炼,
这次要修炼的目标是[一次函数]。

正剧开始:

星历2016年03月21日 10:36:24, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究[一次函数]。




为了研究函数,阿伟特意进化了一下坐标轴工具,从此,坐标轴可以带上刻度了:

/*** @usage 绘制直角坐标系* @author mw* @date 2015年11月28日 星期六 14:17:34 * @param* @return**/this.axis2D = function(x, y, r, xScale) {plot.save(); y = -y;xScale = xScale ? xScale : 1.5;plot.setFillStyle('black').setStrokeStyle('black');plot.beginPath().moveTo(x-xScale*r,y).lineTo(x+xScale*r,y).closePath().stroke();plot.beginPath().moveTo(x,y-r).lineTo(x,y+r).closePath().stroke(); var r0 = 10;//x轴箭头plot.beginPath().moveTo(x+xScale*r- r0*Math.cos(Math.PI/3), y-r0*Math.sin(Math.PI/3)).lineTo(x+xScale*r+r0*Math.sin(Math.PI/3), y).lineTo(x+xScale*r -r0*Math.cos(Math.PI/3), y+r0*Math.sin(Math.PI/3)).closePath().fill()plot.fillText("X", x+xScale*r, y-10, 20);plot.fillText("Y", x+10, y-r+10, 20);//y轴箭头plot.beginPath().moveTo(x+ r0*Math.sin(Math.PI/3), y-r+r0*Math.cos(Math.PI/3)).lineTo(x, y-r-r0*Math.sin(Math.PI/3)).lineTo(x-r0*Math.sin(Math.PI/3), y-r+r0*Math.cos(Math.PI/3)).closePath().fill()plot.restore();} /**
* @usage 坐标轴的标尺
* @author mw
* @date 2016年03月21日 星期一 09:10:42
* @param
* @return
*
*/
this.axisSpacing &#61; function(start, end, spacing, scale, mode) {//如果start和end同号&#xff0c;默认坐标原点为start&#xff0c;坐标轴正向标注到end处//spacing为从start到end之间的每个刻度的间隔//scale为坐标轴方格单位的大小&#xff0c;影响图形的视觉大小//scale越大&#xff0c;1个单位在图像上的长度就越大//mode确定坐标刻度是标注给&#39;X&#39;, &#39;Y&#39;, 或&#39;Z&#39;轴等plot.save().setStrokeStyle(&#39;#FF0044&#39;).setFillStyle(&#39;#CC0022&#39;);mode &#61; mode ? mode : &#39;X&#39;;var lineSpace &#61; [];var maxStop &#61; 0, minStop &#61; 0;if (start > end) {var swap &#61; start;start &#61; end;end &#61; swap;}//判断start和end是否同号var same &#61; start * end <0 ? false : true;if (mode.toUpperCase() &#61;&#61; &#39;X&#39;) {if (same &#61;&#61; false) {//start和end异号&#xff0c;坐标原点为0minStop &#61; Math.floor(start/spacing);maxStop &#61; Math.ceil(end/spacing);}else {if (start >&#61; 0) {minStop &#61; 0;maxStop &#61; Math.ceil((end-start)/spacing);} else if (end <&#61; 0) {maxStop &#61; 0;minStop &#61; Math.floor((start-end)/spacing);}}for (var i &#61; minStop; i <&#61; maxStop; i&#43;&#43;) {lineSpace.push(i);}var len &#61; lineSpace.length;var x , y;var s, measure;//刻度线plot.beginPath();for (var i &#61; 0; i &#61; 0) {x &#61; start &#43; lineSpace[i]*spacing;}else if (end <&#61; 0) {x &#61; end&#43;lineSpace[i]*spacing;}}if (Math.abs(x-Math.round(x)) <0.0001) {s &#61; x.toFixed(0);}else {s &#61; x.toFixed(2);}measure &#61; plot.measureText(s);plot.fillText(s, lineSpace[i]*scale-measure/2, 20, measure);}}else if (mode.toUpperCase() &#61;&#61; &#39;Y&#39;) {if (same &#61;&#61; false) {//start和end异号&#xff0c;坐标原点为0minStop &#61; Math.floor(start/spacing);maxStop &#61; Math.ceil(end/spacing);}else {if (start >&#61; 0) {minStop &#61; 0;maxStop &#61; Math.ceil((end-start)/spacing);}else if (end <&#61; 0) {maxStop &#61; 0;minStop &#61; Math.floor((start-end)/spacing);}}for (var i &#61; minStop; i <&#61; maxStop; i&#43;&#43;) {lineSpace.push(i);}var len &#61; lineSpace.length;var x , y;var s, measure;//刻度线plot.beginPath();for (var i &#61; 0; i &#61; 0) {y &#61; start &#43; lineSpace[i]*spacing;}else if (end <&#61; 0) {y &#61; end&#43;lineSpace[i]*spacing;}}if (Math.abs(y-Math.round(y)) <0.0001) {s &#61; y.toFixed(0);}else {s &#61; y.toFixed(2);}measure &#61; plot.measureText(s);plot.fillText(s, -15-measure, -(lineSpace[i]*scale-5), measure);}}else {//&#39;Z&#39;轴标注待扩展}plot.restore();}



var r &#61; 20;config.setSector(1,1,1,1); config.graphPaper2D(0, 0, r);config.axis2D(0, 0,180); var scale &#61; 2 * r;config.axisSpacing(1984, 2010, 5, scale, &#39;X&#39;);config.axisSpacing(10, 14, 1, scale, &#39;Y&#39;);var transform &#61; new Transform();var a &#61; [[1984,10.34],[1989,11.06],[1994,11.76],[1999,12.52],[2010,13.71]];a &#61; transform.scale(transform.translate(a, -1984, -10), scale/5, scale);var tmp &#61; [].concat(a);shape.pointDraw(tmp, &#39;red&#39;);tmp &#61; [].concat(a);shape.multiLineDraw(tmp, &#39;blue&#39;);

好像人口增长速度放缓了呀。


var r &#61; 20;config.setSector(5,1,4,1); config.graphPaper2D(0, 0, r);config.axis2D(0, 0,260, 1); var scale &#61; 2 * r;config.axisSpacing(0, 12, 2, scale, &#39;Y&#39;);config.axisSpacing(0, 4, 2, scale, &#39;X&#39;);var transform &#61; new Transform();var a &#61; [];for (var i &#61; 0; i <4; i&#43;&#43;) {a.push([i, i*i]);}var tmp &#61; [].concat(a);shape.pointDraw(tmp, &#39;red&#39;, r);tmp &#61; [].concat(a);shape.multiLineDraw(tmp, &#39;pink&#39;, r);



var r &#61; 20;config.setSector(5,1,4,1); config.graphPaper2D(0, 0, r);config.axis2D(0, 0,260, 1); var scale &#61; 2 * r;config.axisSpacing(0, 12, 2, scale, &#39;Y&#39;);config.axisSpacing(-5, 5, 2, scale, &#39;X&#39;);var transform &#61; new Transform();var a &#61; [];for (var i &#61; -5; i <&#61; 5; i&#43;&#43;) {a.push([i, i&#43;0.5]);}var tmp &#61; [].concat(a);shape.pointDraw(tmp, &#39;red&#39;, r);tmp &#61; [].concat(a);shape.multiLineDraw(tmp, &#39;pink&#39;, r);var b &#61; [];for (var i &#61; 1; i <&#61; 5; i&#43;&#43;) {b.push([i, 6/i]);}tmp &#61; [].concat(b);shape.pointDraw(tmp, &#39;blue&#39;, r);tmp &#61; [].concat(b);shape.multiLineDraw(tmp, &#39;#22CCFF&#39;, r);






var r &#61; 20;config.setSector(5,1,4,1); config.graphPaper2D(0, 0, r);config.axis2D(0, 0,260, 1); var scale &#61; 2 * r;config.axisSpacing(0, 1, 0.2, scale, &#39;Y&#39;);config.axisSpacing(0, 1620*5, 1620, scale, &#39;X&#39;);var transform &#61; new Transform();var a &#61; [];for (var i &#61; 0; i <&#61; 5; i&#43;&#43;) {a.push([i, Math.pow(0.5, i)]);}a &#61; transform.scale(a, 2, 10);var tmp &#61; [].concat(a);shape.pointDraw(tmp, &#39;red&#39;, r);tmp &#61; [].concat(a);shape.multiLineDraw(tmp, &#39;pink&#39;, r);




var r &#61; 20;config.setSector(5,1,4,1); config.graphPaper2D(0, 0, r);config.axis2D(0, 0,260, 1); var scale &#61; 2 * r;config.axisSpacing(-5, 5, 1, scale, &#39;X&#39;);config.axisSpacing(-5, 5, 1, scale, &#39;Y&#39;);var transform &#61; new Transform();var a &#61; [];var b &#61; [];for (var i &#61; -10; i <&#61; 10; i&#43;&#43;) {a.push([i, -1.5*i]);b.push([i, -4*i]);}var tmp &#61; [].concat(a);shape.pointDraw(tmp, &#39;red&#39;, r);tmp &#61; [].concat(a);shape.multiLineDraw(tmp, &#39;pink&#39;, r);tmp &#61; [].concat(b);shape.pointDraw(tmp, &#39;blue&#39;, r);tmp &#61; [].concat(b);shape.multiLineDraw(tmp, &#39;#22CCFF&#39;, r);



var r &#61; 20;config.setSector(5,1,4,1); config.graphPaper2D(0, 0, r);config.axis2D(0, 0,260, 1); var scale &#61; 2 * r;config.axisSpacing(-5, 5, 1, scale, &#39;X&#39;);config.axisSpacing(-5, 5, 1, scale, &#39;Y&#39;);var transform &#61; new Transform();var a &#61; [];var b &#61; [];for (var i &#61; -10; i <&#61; 10; i&#43;&#43;) {a.push([i, -6*i]);b.push([i, -6*i&#43;5]);}var tmp &#61; [].concat(a);shape.pointDraw(tmp, &#39;red&#39;, r);tmp &#61; [].concat(a);shape.multiLineDraw(tmp, &#39;pink&#39;, r);tmp &#61; [].concat(b);shape.pointDraw(tmp, &#39;blue&#39;, r);tmp &#61; [].concat(b);shape.multiLineDraw(tmp, &#39;#22CCFF&#39;, r);




var r &#61; 20;config.setSector(5,1,4,1); config.graphPaper2D(0, 0, r);config.axis2D(0, 0,260, 1); var scale &#61; 2 * r;config.axisSpacing(-5, 5, 1, scale, &#39;X&#39;);config.axisSpacing(-5, 5, 1, scale, &#39;Y&#39;);var transform &#61; new Transform();var a &#61; [];var b &#61; [];for (var i &#61; -10; i <&#61; 10; i&#43;&#43;) {a.push([i, 2*i-1]);b.push([i, -0.5*i&#43;1]);}var tmp &#61; [].concat(a);shape.pointDraw(tmp, &#39;red&#39;, r);tmp &#61; [].concat(a);shape.multiLineDraw(tmp, &#39;pink&#39;, r);tmp &#61; [].concat(b);shape.pointDraw(tmp, &#39;blue&#39;, r);tmp &#61; [].concat(b);shape.multiLineDraw(tmp, &#39;#22CCFF&#39;, r);



var r &#61; 20;config.setSector(5,1,4,1); config.graphPaper2D(0, 0, r);config.axis2D(0, 0,260, 1); var scale &#61; 2 * r;config.axisSpacing(-5, 5, 1, scale, &#39;X&#39;);config.axisSpacing(-5, 5, 1, scale, &#39;Y&#39;);var transform &#61; new Transform();var a &#61; [];var b &#61; [];var c &#61; [];for (var i &#61; -10; i <&#61; 10; i&#43;&#43;) {a.push([i, 3*i-2]);b.push([i, i*i]);c.push([i, i*i*(i-3)]);}var tmp &#61; [].concat(a);shape.pointDraw(tmp, &#39;red&#39;, r);tmp &#61; [].concat(a);shape.multiLineDraw(tmp, &#39;pink&#39;, r);tmp &#61; [].concat(b);shape.pointDraw(tmp, &#39;blue&#39;, r);tmp &#61; [].concat(b);shape.multiLineDraw(tmp, &#39;#22CCFF&#39;, r);tmp &#61; [].concat(c);shape.pointDraw(tmp, &#39;green&#39;, r);tmp &#61; [].concat(c);shape.multiLineDraw(tmp, &#39;#CCFF22&#39;, r);



可见如果超过75小时&#xff0c;肯定就是包月120元的划算了。

var r &#61; 20;config.setSector(5,1,4,1); config.graphPaper2D(0, 0, r);config.axis2D(0, 0,260, 1); var scale &#61; 2 * r;config.axisSpacing(0, 150, 20, scale, &#39;X&#39;);config.axisSpacing(0, 150, 20, scale, &#39;Y&#39;);var transform &#61; new Transform();var a &#61; [];var b &#61; [];var c &#61; [];for (var i &#61; 0; i <&#61; 300; i&#43;&#61;5) {if (i <&#61; 25) {a.push([i, 30]);}else {a.push([i, 30&#43;(i-25)*0.05*60]);}if (i <&#61; 50) {b.push([i, 50]);}else {b.push([i, 50&#43;(i-50)*0.05*60]);}c.push([i, 120]);}var tmp &#61; [].concat(a);//shape.pointDraw(tmp, &#39;red&#39;, 1);//tmp &#61; [].concat(a);shape.multiLineDraw(tmp, &#39;pink&#39;, 2);tmp &#61; [].concat(b);//shape.pointDraw(tmp, &#39;blue&#39;, r);//tmp &#61; [].concat(b);shape.multiLineDraw(tmp, &#39;#22CCFF&#39;,2);tmp &#61; [].concat(c);//shape.pointDraw(tmp, &#39;green&#39;, r);//tmp &#61; [].concat(c);shape.multiLineDraw(tmp, &#39;#CCFF22&#39;, 2);


可选区域为黄线往下&#xff0c;蓝线往下&#xff0c;红线往上&#xff0c;x轴往上的区域&#xff0c;而且黄线的值越大说明花钱越少。

这样的话可以选择4辆甲车和2辆乙车。

但这个区域实在不是那么直观。

var r &#61; 20;config.setSector(5,1,4,1); config.graphPaper2D(0, 0, r);config.axis2D(0, 0,260, 1); var scale &#61; 2 * r;config.axisSpacing(0, 10, 2, scale, &#39;X&#39;);config.axisSpacing(0, 10, 2, scale, &#39;Y&#39;);var transform &#61; new Transform();var a &#61; [];var b &#61; [];var c &#61; [];for (var i &#61; 0; i <&#61; 6; i&#43;&#43;) {//甲车x辆&#xff0c;乙车y辆a.push([i, (234-45*i)/30]);b.push([i, 6-i]);c.push([i, (2300-400*i)/280]);}var tmp &#61; [].concat(a);shape.pointDraw(tmp, &#39;red&#39;, r);tmp &#61; [].concat(a);shape.multiLineDraw(tmp, &#39;pink&#39;, r);tmp &#61; [].concat(b);shape.pointDraw(tmp, &#39;blue&#39;, r);tmp &#61; [].concat(b);shape.multiLineDraw(tmp, &#39;#22CCFF&#39;,r);tmp &#61; [].concat(c);shape.pointDraw(tmp, &#39;green&#39;, r);tmp &#61; [].concat(c);shape.multiLineDraw(tmp, &#39;#CCFF22&#39;, r);


var r &#61; 20;config.setSector(5,1,4,1); config.graphPaper2D(0, 0, r);config.axis2D(0, 0,260, 1); var scale &#61; 2 * r;var spaceX &#61; 10, spaceY &#61; 10;config.axisSpacing(1960, 2010, spaceX, scale, &#39;X&#39;);config.axisSpacing(20,80, spaceY, scale, &#39;Y&#39;);var transform &#61; new Transform();var a &#61; [[1960,30],[1974,40],[1987,50],[1999,60],[2010,69]];a &#61; transform.scale(transform.translate(a, -1960, -20), scale/spaceX, scale/spaceY);var tmp &#61; [].concat(a);shape.pointDraw(tmp, &#39;red&#39;);tmp &#61; [].concat(a);shape.multiLineDraw(tmp, &#39;blue&#39;);


本节到此结束&#xff0c;欲知后事如何&#xff0c;请看下回分解。


推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了[从头学数学]中第101节关于比例的相关问题的研究和修炼过程。主要内容包括[机器小伟]和[工程师阿伟]一起研究比例的相关问题,并给出了一个求比例的函数scale的实现。 ... [详细]
  • 本文介绍了PHP常量的定义和使用方法,包括常量的命名规则、大小写敏感性、全局范围和标量数据的限制。同时还提到了应尽量避免定义resource常量,并给出了使用define()函数定义常量的示例。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 本文主要介绍了gym102222KVertex Covers(高维前缀和,meet in the middle)相关的知识,包括题意、思路和解题代码。题目给定一张n点m边的图,点带点权,定义点覆盖的权值为点权之积,要求所有点覆盖的权值之和膜qn小于等于36。文章详细介绍了解题思路,通过将图分成两个点数接近的点集L和R,并分别枚举子集S和T,判断S和T能否覆盖所有内部的边。文章还提到了使用位运算加速判断覆盖和推导T'的方法。最后给出了解题的代码。 ... [详细]
author-avatar
凹凸妖精铺子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有