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) ...
随机推荐
- CTF西湖论剑
一,西湖论剑 itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用 的基数.在上例中,转换基数为10.10:十进制:2:二进制... ...
- css加载方式link和@import的区别!
本质上,这两种方式都是为了加载CSS文件,但还是存在着细微的差别. 1. 老祖宗的差别.link属于XHTML标签,而@import完全是CSS提供的一种方式. link标签除了可以加载CSS外,还可 ...
- 【BZOJ 4169】 4169: Lmc的游戏 (树形DP)
4169: Lmc的游戏 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 44 Solved: 25 Description RHL有一天看到lmc在 ...
- 动态规划:部分和问题和数字和为sum的方法数
很久之前看过这个题目,但是没有仔细整理,直到现在看基础才想到这两个题.这两个题非常经典也非常类似.接下来分别介绍. 部分和问题 题目描述 给定整数a1.a2........an,判断是否可以从中选出若 ...
- [UOJ50]链式反应
这个题意说人话就是:一棵带标号的有根树,编号满足堆性质,根节点有$x$个儿子是叶子($x\in A$),另外的$2$个儿子也是这样的一棵树,求不同的树的个数 设$f_n$为答案,枚举那两棵子树的大小$ ...
- wait, WIFEXITED, WEXITSTATUS
wait, WIFEXITED, WEXITSTATUS 偶尔翻到了这几个关键字,找到个文章复习了下:“点我”.记录下: wait的函数原型是: #include <sys/types. ...
- 关于arcgi s_api_for_flex的总结
1.flex 的简介 a) Flex是adobe开发的东西,主要特点就是开发一个swf格式的应用,flex可以做桌面的应用和web的应用,但本质差不多. b) Flex采用mxml的格式来进行应用的布 ...
- PEM DAC note
开发指南V1.0库函数版本,PWM DAC实验 350页 STM32 的定时器最快的计数频率是72Mhz,8 为分辨率的时候,PWM 频率为72M/256=281.25Khz.如果是1阶RC滤波,则要 ...
- jquery开发之第一个程序
前一段时间学习了js和css.可是发现好多的程序里面都用到了jquery当时本来想着先吧js弄熟了 再搞这个.后来发现不行,好多的程序好像是有益和自己为难似的,所以我决定接下来认认真真的把jquery ...
- java多线程知识汇总(三)如何选择锁?如何加锁
1.锁,保证的是被锁的代码,一次执行完毕才能被其他线程执行,锁保证了一个线程执行过程中不被其他线程打断.以保证数据的准确性. 2.数据的读写过程,是有冲突的,当一个线程正在读数据,另一个线程正在写同一 ...