设z=1/y=x4+4/x3

显然,当z有最小值时,y有最大值,求得zmin,就得到了ymax

而z=x+4/x3=x/3+x/3+x/3+4/x3

根据正实数算术平均数大于等于它们的几何平均数的定理

当x/3=4/x3时,有zmin,此时x=121/4

因此,ymax=121/4/16≈0.40296

图线如下:

代码如下:

  1. <!DOCTYPE html>
  2. <html lang="utf-8">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  4. <head>
  5. <title>绘制y=x^3/(x^4+4)曲线</title>
  6. </head>
  7.  
  8. <body onload="draw()">
  9. <canvas id="myCanvus" width="1300px" height="640px" style="border:1px dashed black;">
  10. 出现文字表示你的浏览器不支持HTML5
  11. </canvas>
  12. </body>
  13. </html>
  14. <script type="text/javascript">
  15. <!--
  16. function draw(){
  17. var canvas=document.getElementById("myCanvus");
  18. var canvasWidth=1300;
  19. var canvasHeight=640;
  20.  
  21. var context=canvas.getContext("2d");
  22.  
  23. context.fillStyle = "white";
  24. context.fillRect(0, 0, canvasWidth, canvasHeight);
  25.  
  26. context.strokeStyle = "black";
  27. context.fillStyle = "black";
  28.  
  29. // 进行坐标变换:把原点放在左下角,东方为X轴正向,北方为Y轴正向
  30. var offsetY=320;// Y向偏移值,正值向上偏,用来画坐标轴
  31. var offsetX=650;// X向偏移值,正值向右偏,用来画坐标轴
  32.  
  33. context.save();
  34. context.translate(0+offsetX,canvasHeight-offsetY);
  35.  
  36. drawAxisXText(context);// 文字和线分开画比较好处理
  37. drawAxisYText(context);
  38. drawTitleText(context);
  39.  
  40. context.rotate(getRad(180));
  41. context.scale(-1,1);
  42.  
  43. drawAxisX(context);
  44. drawAxisY(context);
  45. drawCurve(context);
  46.  
  47. context.restore();
  48. }
  49.  
  50. function drawTitleText(ctx){
  51. ctx.lineWidth=0.5;
  52. ctx.strokeStyle='navy';
  53. ctx.fillStyle='navy';
  54.  
  55. var x=350;
  56. var y=-250;
  57.  
  58. // 写文字
  59. ctx.fillText("y=y=x^3/(x^4+4) 红色",x,y);
  60. //ctx.fillText("y=(x-3)^3 绿色",x,y+20);
  61. //ctx.fillText("y=(x-5)^4 黄色",x,y+40);
  62. //ctx.fillText("y=(x-7)^5 青柠色",x,y+60);
  63. //ctx.fillText("y=(x+3)^0.5 紫色",x,y+80);
  64. //ctx.fillText("y=(x+5)^0.33 栗色",x,y+100);
  65.  
  66. ctx.fillText(" 绘制:逆火狂飙",x+170,y+30);
  67. }
  68.  
  69. function drawCurve(ctx){
  70. var cds=[{}];
  71. var cds1=[{}];
  72. var cds2=[{}];
  73. var cds3=[{}];
  74. var cds4=[{}];
  75. var cds5=[{}];
  76. var cds6=[{}];
  77.  
  78. var x,y,arr;
  79. for(x=0;x<=13;x+=0.01){
  80. y=Math.pow(x,3)/(Math.pow(x,4)+4);//
  81. arr={"x":x,"y":y};
  82. cds.push(arr);
  83. }
  84.  
  85. paintCurve(ctx,"red",cds);
  86. //paintCurve(ctx,"green",cds1);
  87. //paintCurve(ctx,"yellow",cds2);
  88. //paintCurve(ctx,"lime",cds3);
  89. //paintCurve(ctx,"purple",cds4);
  90. //paintCurve(ctx,"maroon",cds5);
  91. //paintCurve(ctx,"maroon",cds6);*/
  92.  
  93. var ymax=-1000,ymin=1000,xmax,xmin;
  94. for(var i=0; i<cds.length; i++){
  95. // 求y最大值
  96. if(cds[i].x>0 && cds[i].y>ymax){
  97. ymax=cds[i].y;
  98. xmax=cds[i].x;
  99. }
  100.  
  101. // 求y最小值
  102. if(cds[i].x>=0 && cds[i].y<ymin){
  103. ymin=cds[i].y;
  104. xmin=cds[i].x;
  105. }
  106. }
  107.  
  108. console.log("ymin="+ymin+" xmin="+xmin+" ymax="+ymax+" ymin="+ymin+" xmax="+xmax);
  109. var SU=50;// Scale Unit
  110. // 极大值
  111. ctx.beginPath();
  112. ctx.moveTo(xmax*SU,ymax*SU-5);
  113. ctx.lineTo(xmax*SU,ymax*SU+5);
  114.  
  115. ctx.save();
  116. ctx.scale(1,-1);
  117. ctx.fillText("ymax="+cutShort(ymax.toString(),8),xmax*SU,-ymax*5);
  118. ctx.restore();
  119.  
  120. ctx.stroke();
  121. ctx.closePath();
  122.  
  123. // 极小值
  124. ctx.beginPath();
  125. ctx.moveTo(xmin*SU,ymin*SU-5);
  126. ctx.lineTo(xmin*SU,ymin*SU+5);
  127.  
  128. ctx.save();
  129. ctx.scale(1,-1);
  130. ctx.fillText("ymin="+ymin,xmin*SU,-ymin*5);
  131. ctx.restore();
  132.  
  133. ctx.stroke();
  134. ctx.closePath();
  135.  
  136. }
  137.  
  138. function paintCurve(ctx,color,cds){
  139. var SU=50;// Scale Unit
  140.  
  141. ctx.strokeStyle = color;
  142. ctx.beginPath();
  143. for(var i=0; i<cds.length; i++){
  144. ctx.lineTo(cds[i].x*SU,cds[i].y*SU);// 注意y轴比例
  145. }
  146. ctx.stroke();
  147. ctx.closePath();
  148. }
  149.  
  150. function drawAxisX(ctx){
  151. ctx.save();
  152.  
  153. ctx.lineWidth=0.5;
  154. ctx.strokeStyle='navy';
  155. ctx.fillStyle='navy';
  156.  
  157. var start=-650;
  158. var end=650;
  159.  
  160. // 画轴
  161. ctx.beginPath();
  162. ctx.moveTo(start, 0);
  163. ctx.lineTo(end, 0);
  164. ctx.stroke();
  165. ctx.closePath();
  166.  
  167. // 画箭头
  168. ctx.beginPath();
  169. ctx.moveTo(end-Math.cos(getRad(15))*10, Math.sin(getRad(15))*10);
  170. ctx.lineTo(end, 0);
  171. ctx.lineTo(end-Math.cos(getRad(15))*10, -Math.sin(getRad(15))*10);
  172. ctx.stroke();
  173. ctx.closePath();
  174.  
  175. // 画刻度
  176. var x,y;
  177. y=5;
  178. for(x=start;x<end;x+=50){
  179. ctx.beginPath();
  180. ctx.moveTo(x, 0);
  181. ctx.lineTo(x, y);
  182.  
  183. ctx.stroke();
  184. ctx.closePath();
  185. }
  186.  
  187. ctx.restore();
  188. }
  189.  
  190. function drawAxisXText(ctx){
  191. ctx.lineWidth=0.5;
  192. ctx.strokeStyle='navy';
  193. ctx.fillStyle='navy';
  194.  
  195. var start=-650;
  196. var end=650;
  197.  
  198. // 写文字
  199. var x,y=5;
  200. for(x=start;x<end;x+=50){
  201. ctx.fillText(x/50,x,y+10);
  202. }
  203. }
  204.  
  205. function drawAxisY(ctx){
  206. ctx.save();
  207.  
  208. ctx.lineWidth=0.5;
  209. ctx.strokeStyle='navy';
  210. ctx.fillStyle='navy';
  211.  
  212. var start=-300;
  213. var end=300;
  214.  
  215. // 画轴
  216. ctx.beginPath();
  217. ctx.moveTo(0, start);
  218. ctx.lineTo(0, end);
  219. ctx.stroke();
  220. ctx.closePath();
  221.  
  222. // 画箭头
  223. ctx.beginPath();
  224. ctx.moveTo(Math.sin(getRad(15))*10, end-Math.cos(getRad(15))*10);
  225. ctx.lineTo(0, end);
  226. ctx.lineTo(-Math.sin(getRad(15))*10, end-Math.cos(getRad(15))*10);
  227. ctx.stroke();
  228. ctx.closePath();
  229.  
  230. // 画刻度
  231. var x,y;
  232. x=5;
  233. for(y=start;y<end;y+=50){// 注意y轴比例
  234. ctx.beginPath();
  235. ctx.moveTo(x, y);
  236. ctx.lineTo(0, y);
  237.  
  238. ctx.stroke();
  239. ctx.closePath();
  240. }
  241. }
  242.  
  243. function drawAxisYText(ctx){
  244. ctx.lineWidth=0.5;
  245. ctx.strokeStyle='navy';
  246. ctx.fillStyle='navy';
  247.  
  248. var start=-250;
  249. var end=350;
  250.  
  251. // 写文字
  252. var x=-19,y=5;
  253. for(y=start;y<end;y+=50){
  254.  
  255. if(y!=0){
  256. ctx.fillText(-y/50,x,y);// 注意y轴比例
  257. }
  258. }
  259. }
  260.  
  261. function getRad(degree){
  262. return degree/180*Math.PI;
  263. }
  264.  
  265. function cutShort(str,length){
  266. if(str.length>length){
  267. str=str.substr(0,length)+"...";
  268. }
  269.  
  270. return str;
  271. }
  272. //-->
  273. </script>

x为正变数,求y=x^3/(x^4+4)的最大值的更多相关文章

  1. C语言atan2()函数:求y/x的反正切值

    头文件:#include <math.h> atan2() 函数用于求 y / x 的反正切值.其原型为:    double atan2(double y, double x); [参数 ...

  2. 【9309】求Y=X1/3

    Time Limit: 1 second Memory Limit: 2 MB 问题描述 求Y=X1/3次方的值.X由键盘输入(x不等于0,在整型范围内).利用下列迭代公式计算: yn + 1=2/3 ...

  3. 【C语言】输入一组整数,求出这组数字子序列和中最大值

    //输入一组整数.求出这组数字子序列和中最大值 #include <stdio.h> int MAxSum(int arr[],int len) { int maxsum = 0; int ...

  4. 求满足n^2>12000的n的最大值 Exercise05_13

    /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:求满足n^2>12000的n的最大值 * */ public class Exercise05_13 { public ...

  5. JavaScript一道面试题求y的值是? z 的值是? s的值是?

    原文:http://www.zhufengpeixun.cn/JavaScriptmianshiti/2014-04-01/287.html < script type = "text ...

  6. sgu 495. Kids and Prizes (简单概率dp 正推求期望)

    题目链接 495. Kids and Prizes Time limit per test: 0.25 second(s)Memory limit: 262144 kilobytes input: s ...

  7. [Everyday Mathematic]20150212 求 $(\cos x+2)(\sin x+1)$ 的最大值

    设 $$\bex t=\tan \frac{x}{2}, \eex$$ 则 $$\bex \cos x=\frac{1-t^2}{1+t^2},\quad \sin x=\frac{2t}{1+t^2 ...

  8. HDU 1087 Super Jumping! Jumping! Jumping! 最长递增子序列(求可能的递增序列的和的最大值) *

    Super Jumping! Jumping! Jumping! Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64 ...

  9. Python求二维数组中某列的最大值

    主要运用np.amax() import numpy as np help(np.amax) a = np.arange(9).reshape((3, 3)) max_all = np.amax(a) ...

随机推荐

  1. 树论讲解——最近公共祖先(lca)

    最近公共祖先?! 有人肯定要问:什么是最近公共祖先???!! 好那我们现在就来说说什么是最近公共祖先吧! 最近公共祖先有一个好听的名字叫——lca 这是一种算法,这个算法基于并查集和深度优先搜索.算法 ...

  2. Codeforces Round #436 (Div. 2) E. Fire(dp 记录路径)

    E. Fire time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...

  3. Node.js下的Hello World

    Node.js技术现在可谓是如火如荼,前后端都统一为Javascript的体验绝对是受到了很多人的青睐,我都后悔以前没抽时间好好学一学Javascript了. 首先,我来介绍一下Node.js.本人实 ...

  4. Scrapy实战篇(四)之周杰伦到底唱了啥

    从小到大,一直很喜欢听周杰伦唱的歌,可是相信很多人和我一样,并不能完全听明白歌词究竟是什么,今天我们就来研究一下周董最喜欢在歌词中用的词,这一小节的构思是这样的,我们爬取周杰伦的歌词信息,并且将其进行 ...

  5. eclipse 的alt shift a,r 这个快捷键怎么操作 怎么按 eclipse 快捷键 逗号 什么意思

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha eclipse 的alt shift a,r 这个快捷键怎么操作 怎么按 eclipse ...

  6. POJ1226 Substrings

    后缀数组. 求多个字符串翻转与否中最长公共子串长. 二分答案,反过来多建一倍的字符串,二分时特判一下即可. By:大奕哥 #include<cstring> #include<cst ...

  7. Week Four

    2018.12.18 1.[USACO Platinum C] 2.[Gym 102028H] 3.[BZOJ 2750] 4.[BZOJ 3238] 5.[BZOJ 4310] 6.[BZOJ 38 ...

  8. bzoj 2002 LinkCutTree

    我的第一道LCT题(居然1A,O(∩_∩)O哈哈~) 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2002 大概题意: 给一颗有根树,维护每个 ...

  9. 【BZOJ-2734】集合选数 状压DP (思路题)

    2734: [HNOI2012]集合选数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1070  Solved: 623[Submit][Statu ...

  10. 区间DP POJ 1141 Brackets Sequence

    Brackets Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29520   Accepted: 840 ...