x为正变数,求y=x^3/(x^4+4)的最大值
设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
图线如下:
代码如下:
- <!DOCTYPE html>
- <html lang="utf-8">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
- <head>
- <title>绘制y=x^3/(x^4+4)曲线</title>
- </head>
- <body onload="draw()">
- <canvas id="myCanvus" width="1300px" height="640px" style="border:1px dashed black;">
- 出现文字表示你的浏览器不支持HTML5
- </canvas>
- </body>
- </html>
- <script type="text/javascript">
- <!--
- function draw(){
- var canvas=document.getElementById("myCanvus");
- var canvasWidth=1300;
- var canvasHeight=640;
- var context=canvas.getContext("2d");
- context.fillStyle = "white";
- context.fillRect(0, 0, canvasWidth, canvasHeight);
- context.strokeStyle = "black";
- context.fillStyle = "black";
- // 进行坐标变换:把原点放在左下角,东方为X轴正向,北方为Y轴正向
- var offsetY=320;// Y向偏移值,正值向上偏,用来画坐标轴
- var offsetX=650;// X向偏移值,正值向右偏,用来画坐标轴
- context.save();
- context.translate(0+offsetX,canvasHeight-offsetY);
- drawAxisXText(context);// 文字和线分开画比较好处理
- drawAxisYText(context);
- drawTitleText(context);
- context.rotate(getRad(180));
- context.scale(-1,1);
- drawAxisX(context);
- drawAxisY(context);
- drawCurve(context);
- context.restore();
- }
- function drawTitleText(ctx){
- ctx.lineWidth=0.5;
- ctx.strokeStyle='navy';
- ctx.fillStyle='navy';
- var x=350;
- var y=-250;
- // 写文字
- ctx.fillText("y=y=x^3/(x^4+4) 红色",x,y);
- //ctx.fillText("y=(x-3)^3 绿色",x,y+20);
- //ctx.fillText("y=(x-5)^4 黄色",x,y+40);
- //ctx.fillText("y=(x-7)^5 青柠色",x,y+60);
- //ctx.fillText("y=(x+3)^0.5 紫色",x,y+80);
- //ctx.fillText("y=(x+5)^0.33 栗色",x,y+100);
- ctx.fillText(" 绘制:逆火狂飙",x+170,y+30);
- }
- function drawCurve(ctx){
- var cds=[{}];
- var cds1=[{}];
- var cds2=[{}];
- var cds3=[{}];
- var cds4=[{}];
- var cds5=[{}];
- var cds6=[{}];
- var x,y,arr;
- for(x=0;x<=13;x+=0.01){
- y=Math.pow(x,3)/(Math.pow(x,4)+4);//
- arr={"x":x,"y":y};
- cds.push(arr);
- }
- paintCurve(ctx,"red",cds);
- //paintCurve(ctx,"green",cds1);
- //paintCurve(ctx,"yellow",cds2);
- //paintCurve(ctx,"lime",cds3);
- //paintCurve(ctx,"purple",cds4);
- //paintCurve(ctx,"maroon",cds5);
- //paintCurve(ctx,"maroon",cds6);*/
- var ymax=-1000,ymin=1000,xmax,xmin;
- for(var i=0; i<cds.length; i++){
- // 求y最大值
- if(cds[i].x>0 && cds[i].y>ymax){
- ymax=cds[i].y;
- xmax=cds[i].x;
- }
- // 求y最小值
- if(cds[i].x>=0 && cds[i].y<ymin){
- ymin=cds[i].y;
- xmin=cds[i].x;
- }
- }
- console.log("ymin="+ymin+" xmin="+xmin+" ymax="+ymax+" ymin="+ymin+" xmax="+xmax);
- var SU=50;// Scale Unit
- // 极大值
- ctx.beginPath();
- ctx.moveTo(xmax*SU,ymax*SU-5);
- ctx.lineTo(xmax*SU,ymax*SU+5);
- ctx.save();
- ctx.scale(1,-1);
- ctx.fillText("ymax="+cutShort(ymax.toString(),8),xmax*SU,-ymax*5);
- ctx.restore();
- ctx.stroke();
- ctx.closePath();
- // 极小值
- ctx.beginPath();
- ctx.moveTo(xmin*SU,ymin*SU-5);
- ctx.lineTo(xmin*SU,ymin*SU+5);
- ctx.save();
- ctx.scale(1,-1);
- ctx.fillText("ymin="+ymin,xmin*SU,-ymin*5);
- ctx.restore();
- ctx.stroke();
- ctx.closePath();
- }
- function paintCurve(ctx,color,cds){
- var SU=50;// Scale Unit
- ctx.strokeStyle = color;
- ctx.beginPath();
- for(var i=0; i<cds.length; i++){
- ctx.lineTo(cds[i].x*SU,cds[i].y*SU);// 注意y轴比例
- }
- ctx.stroke();
- ctx.closePath();
- }
- function drawAxisX(ctx){
- ctx.save();
- ctx.lineWidth=0.5;
- ctx.strokeStyle='navy';
- ctx.fillStyle='navy';
- var start=-650;
- var end=650;
- // 画轴
- ctx.beginPath();
- ctx.moveTo(start, 0);
- ctx.lineTo(end, 0);
- ctx.stroke();
- ctx.closePath();
- // 画箭头
- ctx.beginPath();
- ctx.moveTo(end-Math.cos(getRad(15))*10, Math.sin(getRad(15))*10);
- ctx.lineTo(end, 0);
- ctx.lineTo(end-Math.cos(getRad(15))*10, -Math.sin(getRad(15))*10);
- ctx.stroke();
- ctx.closePath();
- // 画刻度
- var x,y;
- y=5;
- for(x=start;x<end;x+=50){
- ctx.beginPath();
- ctx.moveTo(x, 0);
- ctx.lineTo(x, y);
- ctx.stroke();
- ctx.closePath();
- }
- ctx.restore();
- }
- function drawAxisXText(ctx){
- ctx.lineWidth=0.5;
- ctx.strokeStyle='navy';
- ctx.fillStyle='navy';
- var start=-650;
- var end=650;
- // 写文字
- var x,y=5;
- for(x=start;x<end;x+=50){
- ctx.fillText(x/50,x,y+10);
- }
- }
- function drawAxisY(ctx){
- ctx.save();
- ctx.lineWidth=0.5;
- ctx.strokeStyle='navy';
- ctx.fillStyle='navy';
- var start=-300;
- var end=300;
- // 画轴
- ctx.beginPath();
- ctx.moveTo(0, start);
- ctx.lineTo(0, end);
- ctx.stroke();
- ctx.closePath();
- // 画箭头
- ctx.beginPath();
- ctx.moveTo(Math.sin(getRad(15))*10, end-Math.cos(getRad(15))*10);
- ctx.lineTo(0, end);
- ctx.lineTo(-Math.sin(getRad(15))*10, end-Math.cos(getRad(15))*10);
- ctx.stroke();
- ctx.closePath();
- // 画刻度
- var x,y;
- x=5;
- for(y=start;y<end;y+=50){// 注意y轴比例
- ctx.beginPath();
- ctx.moveTo(x, y);
- ctx.lineTo(0, y);
- ctx.stroke();
- ctx.closePath();
- }
- }
- function drawAxisYText(ctx){
- ctx.lineWidth=0.5;
- ctx.strokeStyle='navy';
- ctx.fillStyle='navy';
- var start=-250;
- var end=350;
- // 写文字
- var x=-19,y=5;
- for(y=start;y<end;y+=50){
- if(y!=0){
- ctx.fillText(-y/50,x,y);// 注意y轴比例
- }
- }
- }
- function getRad(degree){
- return degree/180*Math.PI;
- }
- function cutShort(str,length){
- if(str.length>length){
- str=str.substr(0,length)+"...";
- }
- return str;
- }
- //-->
- </script>
x为正变数,求y=x^3/(x^4+4)的最大值的更多相关文章
- C语言atan2()函数:求y/x的反正切值
头文件:#include <math.h> atan2() 函数用于求 y / x 的反正切值.其原型为: double atan2(double y, double x); [参数 ...
- 【9309】求Y=X1/3
Time Limit: 1 second Memory Limit: 2 MB 问题描述 求Y=X1/3次方的值.X由键盘输入(x不等于0,在整型范围内).利用下列迭代公式计算: yn + 1=2/3 ...
- 【C语言】输入一组整数,求出这组数字子序列和中最大值
//输入一组整数.求出这组数字子序列和中最大值 #include <stdio.h> int MAxSum(int arr[],int len) { int maxsum = 0; int ...
- 求满足n^2>12000的n的最大值 Exercise05_13
/** * @author 冰樱梦 * 时间:2018年下半年 * 题目:求满足n^2>12000的n的最大值 * */ public class Exercise05_13 { public ...
- JavaScript一道面试题求y的值是? z 的值是? s的值是?
原文:http://www.zhufengpeixun.cn/JavaScriptmianshiti/2014-04-01/287.html < script type = "text ...
- sgu 495. Kids and Prizes (简单概率dp 正推求期望)
题目链接 495. Kids and Prizes Time limit per test: 0.25 second(s)Memory limit: 262144 kilobytes input: s ...
- [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 ...
- HDU 1087 Super Jumping! Jumping! Jumping! 最长递增子序列(求可能的递增序列的和的最大值) *
Super Jumping! Jumping! Jumping! Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64 ...
- Python求二维数组中某列的最大值
主要运用np.amax() import numpy as np help(np.amax) a = np.arange(9).reshape((3, 3)) max_all = np.amax(a) ...
随机推荐
- 树论讲解——最近公共祖先(lca)
最近公共祖先?! 有人肯定要问:什么是最近公共祖先???!! 好那我们现在就来说说什么是最近公共祖先吧! 最近公共祖先有一个好听的名字叫——lca 这是一种算法,这个算法基于并查集和深度优先搜索.算法 ...
- 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 ...
- Node.js下的Hello World
Node.js技术现在可谓是如火如荼,前后端都统一为Javascript的体验绝对是受到了很多人的青睐,我都后悔以前没抽时间好好学一学Javascript了. 首先,我来介绍一下Node.js.本人实 ...
- Scrapy实战篇(四)之周杰伦到底唱了啥
从小到大,一直很喜欢听周杰伦唱的歌,可是相信很多人和我一样,并不能完全听明白歌词究竟是什么,今天我们就来研究一下周董最喜欢在歌词中用的词,这一小节的构思是这样的,我们爬取周杰伦的歌词信息,并且将其进行 ...
- eclipse 的alt shift a,r 这个快捷键怎么操作 怎么按 eclipse 快捷键 逗号 什么意思
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha eclipse 的alt shift a,r 这个快捷键怎么操作 怎么按 eclipse ...
- POJ1226 Substrings
后缀数组. 求多个字符串翻转与否中最长公共子串长. 二分答案,反过来多建一倍的字符串,二分时特判一下即可. By:大奕哥 #include<cstring> #include<cst ...
- Week Four
2018.12.18 1.[USACO Platinum C] 2.[Gym 102028H] 3.[BZOJ 2750] 4.[BZOJ 3238] 5.[BZOJ 4310] 6.[BZOJ 38 ...
- bzoj 2002 LinkCutTree
我的第一道LCT题(居然1A,O(∩_∩)O哈哈~) 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2002 大概题意: 给一颗有根树,维护每个 ...
- 【BZOJ-2734】集合选数 状压DP (思路题)
2734: [HNOI2012]集合选数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1070 Solved: 623[Submit][Statu ...
- 区间DP POJ 1141 Brackets Sequence
Brackets Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 29520 Accepted: 840 ...