【高中数学/对数/指数】已知函数f(x)=e^x-ln(x+m),求证m<=2时,证明f(x)>0

【问题】

已知函数f(x)=e^x-ln(x+m),求证m<=2时,证明f(x)>0 (2013年高考全国卷II理科第21题)

【出处】

《高中数学解题思维策略》P30 例2-11  杨林军编著

【解答】

对于y=e^x,总有e^x>=x+1 (x=0时去等)

对于y=ln(x+m),总有y=x+m-1>=ln(x+m) (x+m=1时取等)

如对于y=ln(x+2),总有x+1>=ln(x+2)

对于y=ln(x+1),总有x>ln(x+1)

所以,f(x)=e^x-ln(x+m)>(x+1)-(x+m-1)=2-m 不取等号因为切点不会是同一横坐标

故m<=2时,f(x)>0 

证毕。下面将用图线辅助思考。

下图是m取不同值时的f(x)=e^x-ln(x+m)曲线

下面是m=2时三条曲线相比的示意图:

下面是m=1时四条曲线相比的示意图:

【图一代码】

<!DOCTYPE html>
<html lang="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head><title>UNASSIGNED</title><style type="text/css">.centerlize{margin:0 auto;border:0px solid red;width:1200px;height:600px;}</style></head><body οnlοad="draw();"><div class="centerlize"><canvas id="myCanvas" width="10px" height="10px" style="border:1px dashed black;">如果看到这段文字说您的浏览器尚不支持HTML5 Canvas,请更换浏览器再试.</canvas></div></body>
</html>
<script type="text/javascript">
<!--
/*****************************************************************
* 将全体代码拷贝下来,粘贴到文本编辑器中,另存为.html文件,
* 再用chrome浏览器打开,就能看到动画效果。
******************************************************************/// 系统常量定义处
const TITLE="图一 f(x)=e^x-ln(x+m) 图线 ";    // 图像标题
const WIDTH=1200;                    // 画布宽度
const HEIGHT=600;                    // 画布高度
const SCALE_UNIT=50;                 // 缩放比例 25对应x∈[-24,24],100对应x∈[-6,6]// 系统变量定义处
var context=0;                        // 画布环境
var stage;                            // 舞台对象
var timeElapsed=0;                    // 动画运作的的时间
const TIME_END=100000;                // 动画运作的期限//-------------------------------
// Canvas开始运作,由body_onload调用
//-------------------------------
function draw(){document.title=TITLE;// 画图前初始化var canvas=document.getElementById('myCanvas');    canvas.width=WIDTH;canvas.height=HEIGHT; context=canvas.getContext('2d');  // 进行屏幕坐标系到笛卡尔坐标系的变换// 处置完成前,原点在左上角,向右为X正向,向下为Y的正向// 处置完毕后,原点移动到画布中央,向右为X正向,向上为Y的正向context.translate(WIDTH/2,HEIGHT/2);context.rotate(Math.PI);context.scale(-1,1);// 初始化舞台stage=new Stage();// 开始动画animate();
};//-------------------------------
// 画图
//-------------------------------
function animate(){    timeElapsed+=1;// 时间每轮增加1stage.update(timeElapsed);stage.paintBg(context);stage.paint(context);if(timeElapsed<TIME_END){        window.requestAnimationFrame(animate);}
}//-------------------------------
// 舞台对象定义处
//-------------------------------
function Stage(){// 内置对象(非必要勿更改)var obj=new Object;// 对象下的曲线数组(非必要勿更改)obj.curves=[];// 塞入曲线1(按需修改设定项)obj.curves.push({name:"曲线:f(x)=e^x-ln(x+2)",xEnd:3,x:-2,y:0,setY:function(x){this.y=Math.pow(Math.E,x)-Math.log(x+2);// 解析式let coord={"x":x,"y":this.y};    if(x<0){this.pts0.push(coord);}else{this.pts1.push(coord);}},"pts0":[],"pts1":[],});// 塞入曲线2(按需修改设定项)obj.curves.push({name:"曲线:f(x)=e^x-ln(x+1)",xEnd:3,x:-1,y:0,setY:function(x){this.y=Math.pow(Math.E,x)-Math.log(x+1);// 解析式let coord={"x":x,"y":this.y};    if(x<0){this.pts0.push(coord);}else{this.pts1.push(coord);}},"pts0":[],"pts1":[],});// 塞入曲线3(按需修改设定项)obj.curves.push({name:"曲线:f(x)=e^x-ln(x+0)",xEnd:3,x:0,y:0,setY:function(x){this.y=Math.pow(Math.E,x)-Math.log(x+0);// 解析式let coord={"x":x,"y":this.y};    if(x<0){this.pts0.push(coord);}else{this.pts1.push(coord);}},"pts0":[],"pts1":[],});// 塞入曲线4(按需修改设定项)obj.curves.push({name:"曲线:f(x)=e^x-ln(x-1)",xEnd:3,x:-1,y:0,setY:function(x){this.y=Math.pow(Math.E,x)-Math.log(x-1);// 解析式let coord={"x":x,"y":this.y};    if(x<0){this.pts0.push(coord);}else{this.pts1.push(coord);}},"pts0":[],"pts1":[],});// 塞入曲线5(按需修改设定项)obj.curves.push({name:"曲线:f(x)=e^x-ln(x+3)",xEnd:3,x:-3,y:0,setY:function(x){this.y=Math.pow(Math.E,x)-Math.log(x+3);// 解析式let coord={"x":x,"y":this.y};    if(x<0){this.pts0.push(coord);}else{this.pts1.push(coord);}},"pts0":[],"pts1":[],});// 随时间更新位置(非必要勿更改)obj.update=function(t){for(var i=0;i<this.curves.length;i++){var curve=this.curves[i];if(curve.x<curve.xEnd){curve.x+=0.01;curve.setY(curve.x);}}};// 画前景obj.paint=function(ctx){  // 手动标记点//paintPoint(ctx,1,0,"a","navy");//paintPoint(ctx,0,1,"b","navy");// 文字左上角位置(可手动修改设定值)const X_START=-230;    // 文字横起点const Y_START=150;    // 文字纵起点const OFFSET=50;    // 文字间隔// 遍历曲线数组(非必要勿更改)for(var i=0;i<this.curves.length;i++){var curve=this.curves[i];var color=getColor(i);// 曲线名称drawText(ctx,curve.name,X_START,Y_START-i*OFFSET,color,18);// 曲线当前点坐标drawText(ctx,"当前 X:"+curve.x.toFixed(3)+"  Y:"+curve.y.toFixed(3),X_START,Y_START-20-(i)*OFFSET,color,18);// 绘制曲线if(curve.pts0){paintCurve(ctx,color,curve.pts0);// 绘制曲线分段1的高低点(可选)//var mm=findMaxMin(curve.pts0);//markMaxMin(ctx,mm,color);}if(curve.pts1){paintCurve(ctx,color,curve.pts1);// 绘制曲线分段2的高低点(可选)//var mm=findMaxMin(curve.pts1);//markMaxMin(ctx,mm,color);}if(curve.pts2){paintCurve(ctx,color,curve.pts2);// 绘制曲线分段3的高低点(可选)//var mm=findMaxMin(curve.pts2);//markMaxMin(ctx,mm,color);}if(curve.pts3){paintCurve(ctx,color,curve.pts3);// 绘制曲线分段4的高低点(可选)//var mm=findMaxMin(curve.pts3);//markMaxMin(ctx,mm,color);}if(curve.pts4){paintCurve(ctx,color,curve.pts4);// 绘制曲线分段4的高低点(可选)//var mm=findMaxMin(curve.pts3);//markMaxMin(ctx,mm,color);}}};// 画背景(非必要不更改)obj.paintBg=function(ctx){// 清屏ctx.clearRect(-600,-300,1200,600);ctx.fillStyle="rgb(251,255,253)";ctx.fillRect(-600,-300,1200,600);// 画X轴drawAxisX(ctx,-600,600,50);// 画Y轴drawAxisY(ctx,-300,300,50);// 画网格线drawGrid(ctx,-600,-300,50,1200,600,50);// 左上角标题var metrics = ctx.measureText(TITLE);var textWidth = metrics.width;drawText(ctx,TITLE,-WIDTH/2+textWidth+3,HEIGHT/2-30,"grey",18);// 右下角作者,日期const waterMarkTxt="逆火原创@"+(new Date()).toLocaleDateString();metrics = ctx.measureText(waterMarkTxt);textWidth = metrics.width;drawText(ctx,waterMarkTxt,WIDTH/2-textWidth,-HEIGHT/2,"lightGrey",16);};return obj;
}// 描绘并标识一个点
function paintPoint(ctx,x,y,text,color){var xReal=x*SCALE_UNIT;var yReal=y*SCALE_UNIT;ctx.strokeStyle=color;ctx.lineWidth=0.5;// 划线ctx.save();ctx.setLineDash([5,5]);ctx.beginPath();    ctx.moveTo(xReal,0);ctx.lineTo(xReal,yReal);ctx.lineTo(0,yReal);ctx.stroke();ctx.restore();// 画圈ctx.beginPath();ctx.arc(xReal,yReal,4,0,Math.PI*2,false);ctx.closePath();    ctx.stroke();// 写文字var metrics = ctx.measureText(text);var textWidth = metrics.width;drawText(ctx,text,xReal+textWidth+2,yReal-5,color,12);
}// 连点成线画曲线
function paintCurve(ctx,color,cds){ctx.save();ctx.strokeStyle = color;ctx.lineWidth=1;ctx.beginPath();     for(var i=0; i<cds.length; i++){let y=cds[i].y;if(Math.abs(cds[i].y*SCALE_UNIT)<300){ctx.lineTo(cds[i].x*SCALE_UNIT,cds[i].y*SCALE_UNIT);}}     ctx.stroke();  ctx.restore();
}// 找到坐标数组的最大最小值
function findMaxMin(cds){if(cds.length<1){return null;}var retval={max:-10000,max_x:0,min:10000,min_x:0};for(var i=0;i<cds.length;i++){var y=cds[i].y;if(y>retval.max){retval.max=y;retval.max_x=cds[i].x;}if(y<retval.min){retval.min=y;retval.min_x=cds[i].x;}} return retval;
}// 绘出最大最小值
function markMaxMin(ctx,mm,color){if(mm==null){return;}// 最大值var x=mm.max_x;var y=mm.max;ctx.strokeStyle=color;ctx.beginPath();ctx.arc(x*SCALE_UNIT,y*SCALE_UNIT,5,0,Math.PI*2,false);ctx.closePath();ctx.stroke();var text="max@x="+x.toFixed(3)+" y="+y.toFixed(3);drawText(ctx,text,x*SCALE_UNIT,y*SCALE_UNIT,color,12);// 最小值var x=mm.min_x;var y=mm.min;ctx.strokeStyle=color;ctx.beginPath();ctx.arc(x*SCALE_UNIT,y*SCALE_UNIT,5,0,Math.PI*2,false);ctx.closePath();ctx.stroke();var text="min@x="+x.toFixed(3)+" y="+y.toFixed(3);drawText(ctx,text,x*SCALE_UNIT,y*SCALE_UNIT,color,12);
}// 定点画实心圆
function drawSolidCircle(ctx,x,y,r,color){ctx.save();ctx.beginPath();ctx.arc(x,y,r,0,2*Math.PI);ctx.fillStyle=color;ctx.fill();ctx.restore();
}// 两点之间画线段
function drawLine(ctx,x1,y1,x2,y2,color){ctx.save();ctx.lineWidth=0.25;ctx.strokeStyle=color;ctx.beginPath();ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.stroke();ctx.closePath();ctx.restore();
}// 画横轴
function drawAxisX(ctx,start,end,step){const AXISY_COLOR="black";ctx.save();ctx.lineWidth=0.5;ctx.strokeStyle=AXISY_COLOR;// 画轴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+=step){if(x==0){continue;}ctx.beginPath();ctx.moveTo(x, 0);ctx.lineTo(x, y);ctx.stroke();ctx.closePath();var text=formatScale(x/SCALE_UNIT);drawText(ctx,text,x,y-20,AXISY_COLOR,12);}ctx.restore();
}// 画纵轴
function drawAxisY(ctx,start,end,step){const AXISY_COLOR="black";ctx.save();ctx.lineWidth=0.5;ctx.strokeStyle=AXISY_COLOR;// 画轴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+=step){ctx.beginPath();ctx.moveTo(x, y);ctx.lineTo(0, y);var text=formatScale(y/SCALE_UNIT);var metrics = ctx.measureText(text);var textWidth = metrics.width;drawText(ctx,text,x-textWidth-5,y,AXISY_COLOR,12);ctx.stroke();ctx.closePath();}ctx.restore();
}//-------------------------------
// 得到整型后的刻度
//-------------------------------
function formatScale(scale){var s=scale*10;if(s % 5==0){return scale+"";}else{return scale.toFixed(2);}
}// 画网格线
function drawGrid(ctx,x1,y1,step1,x2,y2,step2){ctx.save();ctx.lineWidth=0.25;ctx.strokeStyle="lightgrey";    // 分十格var x,y;for(x=x1;x<x2;x+=step1/10){ctx.beginPath();ctx.moveTo(x, y1);ctx.lineTo(x, y2);ctx.stroke();ctx.closePath();}for(y=y1;y<y2;y+=step2/10){ctx.beginPath();ctx.moveTo(x1, y);ctx.lineTo(x2, y);ctx.stroke();ctx.closePath();}// 十小格间的分割线ctx.lineWidth=0.25;ctx.strokeStyle="grey";ctx.setLineDash([5,5]);// 设置虚线,起止点间包含五空格五划线共十段for(x=x1;x<x2;x+=step1){ctx.beginPath();ctx.moveTo(x, y1);ctx.lineTo(x, y2);ctx.stroke();}for(y=y1;y<y2;y+=step2){ctx.beginPath();ctx.moveTo(x1, y);ctx.lineTo(x2, y);ctx.stroke();}ctx.restore();
}//-------------------------------
// 角度得到弧度
//-------------------------------
function getRad(degree){return degree/180*Math.PI;
}//-------------------------------
// 得到颜色
//-------------------------------
function getColor(index){var arr=["maroon" /* 栗色 */,"orange" /* 橙色 */,"blue"   /* 蓝色 */,"green"  /* 绿色 */,       "fuchsia"/* 紫红 */,        "grey"   /* 灰色 */,"lime"   /* 酸橙 */,        "navy"   /* 海蓝 */,        "purple" /* 紫色 */,"skyblue"/* 天蓝 */,"teal"   /* 蓝绿 */,"yellow" /* 亮黄 */,"aqua"   /* 湖绿 */,"red"    /* 红色 */,        "black"  /* 黑色 */,    ];return arr[index % arr.length];
}//-------------------------------------
// 绘制文字,指定颜色
// ctx:绘图环境
// text:文字
// x,y:坐标
// color:颜色
// size:字体大小
//-------------------------------------
function drawText(ctx,text,x,y,color,size){ctx.save();ctx.translate(x,y)ctx.rotate(getRad(180))ctx.scale(-1,1)ctx.textBaseline="bottom";ctx.textAlign="center";ctx.fillStyle=color;ctx.font = size+"px consolas";ctx.fillText(text,0,0);ctx.restore();
}// JS开立方
function kaiLiFang(x){if(x>0){return Math.pow(x,1/3);}else{return -Math.pow(-x,1/3);}
}
//-->
/****************************************
遇到事情,要学会沉住气,在默默无闻中积攒
力量,等待厚积薄发的一天。
****************************************/
</script>

【图二代码】

<!DOCTYPE html>
<html lang="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head><title>UNASSIGNED</title><style type="text/css">.centerlize{margin:0 auto;border:0px solid red;width:1200px;height:600px;}</style></head><body οnlοad="draw();"><div class="centerlize"><canvas id="myCanvas" width="10px" height="10px" style="border:1px dashed black;">如果看到这段文字说您的浏览器尚不支持HTML5 Canvas,请更换浏览器再试.</canvas></div></body>
</html>
<script type="text/javascript">
<!--
/*****************************************************************
* 将全体代码拷贝下来,粘贴到文本编辑器中,另存为.html文件,
* 再用chrome浏览器打开,就能看到动画效果。
******************************************************************/// 系统常量定义处
const TITLE="图二 f(x)=e^x-ln(x+2) 图线 ";    // 图像标题
const WIDTH=1200;                    // 画布宽度
const HEIGHT=600;                    // 画布高度
const SCALE_UNIT=50;                 // 缩放比例 25对应x∈[-24,24],100对应x∈[-6,6]// 系统变量定义处
var context=0;                        // 画布环境
var stage;                            // 舞台对象
var timeElapsed=0;                    // 动画运作的的时间
const TIME_END=100000;                // 动画运作的期限//-------------------------------
// Canvas开始运作,由body_onload调用
//-------------------------------
function draw(){document.title=TITLE;// 画图前初始化var canvas=document.getElementById('myCanvas');    canvas.width=WIDTH;canvas.height=HEIGHT; context=canvas.getContext('2d');  // 进行屏幕坐标系到笛卡尔坐标系的变换// 处置完成前,原点在左上角,向右为X正向,向下为Y的正向// 处置完毕后,原点移动到画布中央,向右为X正向,向上为Y的正向context.translate(WIDTH/2,HEIGHT/2);context.rotate(Math.PI);context.scale(-1,1);// 初始化舞台stage=new Stage();// 开始动画animate();
};//-------------------------------
// 画图
//-------------------------------
function animate(){    timeElapsed+=1;// 时间每轮增加1stage.update(timeElapsed);stage.paintBg(context);stage.paint(context);if(timeElapsed<TIME_END){        window.requestAnimationFrame(animate);}
}//-------------------------------
// 舞台对象定义处
//-------------------------------
function Stage(){// 内置对象(非必要勿更改)var obj=new Object;// 对象下的曲线数组(非必要勿更改)obj.curves=[];// 塞入曲线1(按需修改设定项)obj.curves.push({name:"曲线:f(x)=e^x-ln(x+2)",xEnd:3,x:-2,y:0,setY:function(x){this.y=Math.pow(Math.E,x)-Math.log(x+2);// 解析式let coord={"x":x,"y":this.y};    if(x<0){this.pts0.push(coord);}else{this.pts1.push(coord);}},"pts0":[],"pts1":[],});// 塞入曲线2(按需修改设定项)obj.curves.push({name:"曲线:f(x)=e^x",xEnd:3,x:-2,y:0,setY:function(x){this.y=Math.pow(Math.E,x);// 解析式let coord={"x":x,"y":this.y};    if(x<0){this.pts0.push(coord);}else{this.pts1.push(coord);}},"pts0":[],"pts1":[],});// 塞入曲线3(按需修改设定项)obj.curves.push({name:"曲线:f(x)=x+1",xEnd:3,x:-2,y:0,setY:function(x){this.y=x+1;// 解析式let coord={"x":x,"y":this.y};    if(x<0){this.pts0.push(coord);}else{this.pts1.push(coord);}},"pts0":[],"pts1":[],});// 塞入曲线4(按需修改设定项)obj.curves.push({name:"曲线:f(x)=ln(x+2)",xEnd:3,x:-2,y:0,setY:function(x){this.y=Math.log(x+2);// 解析式let coord={"x":x,"y":this.y};    if(x<0){this.pts0.push(coord);}else{this.pts1.push(coord);}},"pts0":[],"pts1":[],});// 随时间更新位置(非必要勿更改)obj.update=function(t){for(var i=0;i<this.curves.length;i++){var curve=this.curves[i];if(curve.x<curve.xEnd){curve.x+=0.01;curve.setY(curve.x);}}};// 画前景obj.paint=function(ctx){  // 手动标记点//paintPoint(ctx,1,0,"a","navy");//paintPoint(ctx,0,1,"b","navy");// 文字左上角位置(可手动修改设定值)const X_START=-230;    // 文字横起点const Y_START=150;    // 文字纵起点const OFFSET=50;    // 文字间隔// 遍历曲线数组(非必要勿更改)for(var i=0;i<this.curves.length;i++){var curve=this.curves[i];var color=getColor(i);// 曲线名称drawText(ctx,curve.name,X_START,Y_START-i*OFFSET,color,18);// 曲线当前点坐标drawText(ctx,"当前 X:"+curve.x.toFixed(3)+"  Y:"+curve.y.toFixed(3),X_START,Y_START-20-(i)*OFFSET,color,18);// 绘制曲线if(curve.pts0){paintCurve(ctx,color,curve.pts0);// 绘制曲线分段1的高低点(可选)//var mm=findMaxMin(curve.pts0);//markMaxMin(ctx,mm,color);}if(curve.pts1){paintCurve(ctx,color,curve.pts1);// 绘制曲线分段2的高低点(可选)//var mm=findMaxMin(curve.pts1);//markMaxMin(ctx,mm,color);}if(curve.pts2){paintCurve(ctx,color,curve.pts2);// 绘制曲线分段3的高低点(可选)//var mm=findMaxMin(curve.pts2);//markMaxMin(ctx,mm,color);}if(curve.pts3){paintCurve(ctx,color,curve.pts3);// 绘制曲线分段4的高低点(可选)//var mm=findMaxMin(curve.pts3);//markMaxMin(ctx,mm,color);}if(curve.pts4){paintCurve(ctx,color,curve.pts4);// 绘制曲线分段4的高低点(可选)//var mm=findMaxMin(curve.pts3);//markMaxMin(ctx,mm,color);}}};// 画背景(非必要不更改)obj.paintBg=function(ctx){// 清屏ctx.clearRect(-600,-300,1200,600);ctx.fillStyle="rgb(251,255,253)";ctx.fillRect(-600,-300,1200,600);// 画X轴drawAxisX(ctx,-600,600,50);// 画Y轴drawAxisY(ctx,-300,300,50);// 画网格线drawGrid(ctx,-600,-300,50,1200,600,50);// 左上角标题var metrics = ctx.measureText(TITLE);var textWidth = metrics.width;drawText(ctx,TITLE,-WIDTH/2+textWidth+3,HEIGHT/2-30,"grey",18);// 右下角作者,日期const waterMarkTxt="逆火原创@"+(new Date()).toLocaleDateString();metrics = ctx.measureText(waterMarkTxt);textWidth = metrics.width;drawText(ctx,waterMarkTxt,WIDTH/2-textWidth,-HEIGHT/2,"lightGrey",16);};return obj;
}// 描绘并标识一个点
function paintPoint(ctx,x,y,text,color){var xReal=x*SCALE_UNIT;var yReal=y*SCALE_UNIT;ctx.strokeStyle=color;ctx.lineWidth=0.5;// 划线ctx.save();ctx.setLineDash([5,5]);ctx.beginPath();    ctx.moveTo(xReal,0);ctx.lineTo(xReal,yReal);ctx.lineTo(0,yReal);ctx.stroke();ctx.restore();// 画圈ctx.beginPath();ctx.arc(xReal,yReal,4,0,Math.PI*2,false);ctx.closePath();    ctx.stroke();// 写文字var metrics = ctx.measureText(text);var textWidth = metrics.width;drawText(ctx,text,xReal+textWidth+2,yReal-5,color,12);
}// 连点成线画曲线
function paintCurve(ctx,color,cds){ctx.save();ctx.strokeStyle = color;ctx.lineWidth=1;ctx.beginPath();     for(var i=0; i<cds.length; i++){let y=cds[i].y;if(Math.abs(cds[i].y*SCALE_UNIT)<300){ctx.lineTo(cds[i].x*SCALE_UNIT,cds[i].y*SCALE_UNIT);}}     ctx.stroke();  ctx.restore();
}// 找到坐标数组的最大最小值
function findMaxMin(cds){if(cds.length<1){return null;}var retval={max:-10000,max_x:0,min:10000,min_x:0};for(var i=0;i<cds.length;i++){var y=cds[i].y;if(y>retval.max){retval.max=y;retval.max_x=cds[i].x;}if(y<retval.min){retval.min=y;retval.min_x=cds[i].x;}} return retval;
}// 绘出最大最小值
function markMaxMin(ctx,mm,color){if(mm==null){return;}// 最大值var x=mm.max_x;var y=mm.max;ctx.strokeStyle=color;ctx.beginPath();ctx.arc(x*SCALE_UNIT,y*SCALE_UNIT,5,0,Math.PI*2,false);ctx.closePath();ctx.stroke();var text="max@x="+x.toFixed(3)+" y="+y.toFixed(3);drawText(ctx,text,x*SCALE_UNIT,y*SCALE_UNIT,color,12);// 最小值var x=mm.min_x;var y=mm.min;ctx.strokeStyle=color;ctx.beginPath();ctx.arc(x*SCALE_UNIT,y*SCALE_UNIT,5,0,Math.PI*2,false);ctx.closePath();ctx.stroke();var text="min@x="+x.toFixed(3)+" y="+y.toFixed(3);drawText(ctx,text,x*SCALE_UNIT,y*SCALE_UNIT,color,12);
}// 定点画实心圆
function drawSolidCircle(ctx,x,y,r,color){ctx.save();ctx.beginPath();ctx.arc(x,y,r,0,2*Math.PI);ctx.fillStyle=color;ctx.fill();ctx.restore();
}// 两点之间画线段
function drawLine(ctx,x1,y1,x2,y2,color){ctx.save();ctx.lineWidth=0.25;ctx.strokeStyle=color;ctx.beginPath();ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.stroke();ctx.closePath();ctx.restore();
}// 画横轴
function drawAxisX(ctx,start,end,step){const AXISY_COLOR="black";ctx.save();ctx.lineWidth=0.5;ctx.strokeStyle=AXISY_COLOR;// 画轴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+=step){if(x==0){continue;}ctx.beginPath();ctx.moveTo(x, 0);ctx.lineTo(x, y);ctx.stroke();ctx.closePath();var text=formatScale(x/SCALE_UNIT);drawText(ctx,text,x,y-20,AXISY_COLOR,12);}ctx.restore();
}// 画纵轴
function drawAxisY(ctx,start,end,step){const AXISY_COLOR="black";ctx.save();ctx.lineWidth=0.5;ctx.strokeStyle=AXISY_COLOR;// 画轴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+=step){ctx.beginPath();ctx.moveTo(x, y);ctx.lineTo(0, y);var text=formatScale(y/SCALE_UNIT);var metrics = ctx.measureText(text);var textWidth = metrics.width;drawText(ctx,text,x-textWidth-5,y,AXISY_COLOR,12);ctx.stroke();ctx.closePath();}ctx.restore();
}//-------------------------------
// 得到整型后的刻度
//-------------------------------
function formatScale(scale){var s=scale*10;if(s % 5==0){return scale+"";}else{return scale.toFixed(2);}
}// 画网格线
function drawGrid(ctx,x1,y1,step1,x2,y2,step2){ctx.save();ctx.lineWidth=0.25;ctx.strokeStyle="lightgrey";    // 分十格var x,y;for(x=x1;x<x2;x+=step1/10){ctx.beginPath();ctx.moveTo(x, y1);ctx.lineTo(x, y2);ctx.stroke();ctx.closePath();}for(y=y1;y<y2;y+=step2/10){ctx.beginPath();ctx.moveTo(x1, y);ctx.lineTo(x2, y);ctx.stroke();ctx.closePath();}// 十小格间的分割线ctx.lineWidth=0.25;ctx.strokeStyle="grey";ctx.setLineDash([5,5]);// 设置虚线,起止点间包含五空格五划线共十段for(x=x1;x<x2;x+=step1){ctx.beginPath();ctx.moveTo(x, y1);ctx.lineTo(x, y2);ctx.stroke();}for(y=y1;y<y2;y+=step2){ctx.beginPath();ctx.moveTo(x1, y);ctx.lineTo(x2, y);ctx.stroke();}ctx.restore();
}//-------------------------------
// 角度得到弧度
//-------------------------------
function getRad(degree){return degree/180*Math.PI;
}//-------------------------------
// 得到颜色
//-------------------------------
function getColor(index){var arr=["maroon" /* 栗色 */,"orange" /* 橙色 */,"blue"   /* 蓝色 */,"green"  /* 绿色 */,       "fuchsia"/* 紫红 */,        "grey"   /* 灰色 */,"lime"   /* 酸橙 */,        "navy"   /* 海蓝 */,        "purple" /* 紫色 */,"skyblue"/* 天蓝 */,"teal"   /* 蓝绿 */,"yellow" /* 亮黄 */,"aqua"   /* 湖绿 */,"red"    /* 红色 */,        "black"  /* 黑色 */,    ];return arr[index % arr.length];
}//-------------------------------------
// 绘制文字,指定颜色
// ctx:绘图环境
// text:文字
// x,y:坐标
// color:颜色
// size:字体大小
//-------------------------------------
function drawText(ctx,text,x,y,color,size){ctx.save();ctx.translate(x,y)ctx.rotate(getRad(180))ctx.scale(-1,1)ctx.textBaseline="bottom";ctx.textAlign="center";ctx.fillStyle=color;ctx.font = size+"px consolas";ctx.fillText(text,0,0);ctx.restore();
}// JS开立方
function kaiLiFang(x){if(x>0){return Math.pow(x,1/3);}else{return -Math.pow(-x,1/3);}
}
//-->
/****************************************
遇到事情,要学会沉住气,在默默无闻中积攒
力量,等待厚积薄发的一天。
****************************************/
</script>

【图三代码】

<!DOCTYPE html>
<html lang="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head><title>UNASSIGNED</title><style type="text/css">.centerlize{margin:0 auto;border:0px solid red;width:1200px;height:600px;}</style></head><body οnlοad="draw();"><div class="centerlize"><canvas id="myCanvas" width="10px" height="10px" style="border:1px dashed black;">如果看到这段文字说您的浏览器尚不支持HTML5 Canvas,请更换浏览器再试.</canvas></div></body>
</html>
<script type="text/javascript">
<!--
/*****************************************************************
* 将全体代码拷贝下来,粘贴到文本编辑器中,另存为.html文件,
* 再用chrome浏览器打开,就能看到动画效果。
******************************************************************/// 系统常量定义处
const TITLE="图三 f(x)=e^x-ln(x+1) 图线 ";    // 图像标题
const WIDTH=1200;                    // 画布宽度
const HEIGHT=600;                    // 画布高度
const SCALE_UNIT=50;                 // 缩放比例 25对应x∈[-24,24],100对应x∈[-6,6]// 系统变量定义处
var context=0;                        // 画布环境
var stage;                            // 舞台对象
var timeElapsed=0;                    // 动画运作的的时间
const TIME_END=100000;                // 动画运作的期限//-------------------------------
// Canvas开始运作,由body_onload调用
//-------------------------------
function draw(){document.title=TITLE;// 画图前初始化var canvas=document.getElementById('myCanvas');    canvas.width=WIDTH;canvas.height=HEIGHT; context=canvas.getContext('2d');  // 进行屏幕坐标系到笛卡尔坐标系的变换// 处置完成前,原点在左上角,向右为X正向,向下为Y的正向// 处置完毕后,原点移动到画布中央,向右为X正向,向上为Y的正向context.translate(WIDTH/2,HEIGHT/2);context.rotate(Math.PI);context.scale(-1,1);// 初始化舞台stage=new Stage();// 开始动画animate();
};//-------------------------------
// 画图
//-------------------------------
function animate(){    timeElapsed+=1;// 时间每轮增加1stage.update(timeElapsed);stage.paintBg(context);stage.paint(context);if(timeElapsed<TIME_END){        window.requestAnimationFrame(animate);}
}//-------------------------------
// 舞台对象定义处
//-------------------------------
function Stage(){// 内置对象(非必要勿更改)var obj=new Object;// 对象下的曲线数组(非必要勿更改)obj.curves=[];// 塞入曲线1(按需修改设定项)obj.curves.push({name:"曲线:f(x)=e^x-ln(x+1)",xEnd:3,x:-2,y:0,setY:function(x){this.y=Math.pow(Math.E,x)-Math.log(x+1);// 解析式let coord={"x":x,"y":this.y};    if(x<0){this.pts0.push(coord);}else{this.pts1.push(coord);}},"pts0":[],"pts1":[],});// 塞入曲线2(按需修改设定项)obj.curves.push({name:"曲线:f(x)=e^x",xEnd:3,x:-2,y:0,setY:function(x){this.y=Math.pow(Math.E,x);// 解析式let coord={"x":x,"y":this.y};    if(x<0){this.pts0.push(coord);}else{this.pts1.push(coord);}},"pts0":[],"pts1":[],});// 塞入曲线3(按需修改设定项)obj.curves.push({name:"曲线:f(x)=x+1",xEnd:3,x:-2,y:0,setY:function(x){this.y=x+1;// 解析式let coord={"x":x,"y":this.y};    if(x<0){this.pts0.push(coord);}else{this.pts1.push(coord);}},"pts0":[],"pts1":[],});// 塞入曲线4(按需修改设定项)obj.curves.push({name:"曲线:f(x)=ln(x+1)",xEnd:3,x:-1,y:0,setY:function(x){this.y=Math.log(x+1);// 解析式let coord={"x":x,"y":this.y};    if(x<0){this.pts0.push(coord);}else{this.pts1.push(coord);}},"pts0":[],"pts1":[],});// 塞入曲线5(按需修改设定项)obj.curves.push({name:"曲线:f(x)=x",xEnd:3,x:-3,y:0,setY:function(x){this.y=x;// 解析式let coord={"x":x,"y":this.y};    if(x<0){this.pts0.push(coord);}else{this.pts1.push(coord);}},"pts0":[],"pts1":[],});// 随时间更新位置(非必要勿更改)obj.update=function(t){for(var i=0;i<this.curves.length;i++){var curve=this.curves[i];if(curve.x<curve.xEnd){curve.x+=0.01;curve.setY(curve.x);}}};// 画前景obj.paint=function(ctx){  // 手动标记点//paintPoint(ctx,1,0,"a","navy");//paintPoint(ctx,0,1,"b","navy");// 文字左上角位置(可手动修改设定值)const X_START=-230;    // 文字横起点const Y_START=150;    // 文字纵起点const OFFSET=50;    // 文字间隔// 遍历曲线数组(非必要勿更改)for(var i=0;i<this.curves.length;i++){var curve=this.curves[i];var color=getColor(i);// 曲线名称drawText(ctx,curve.name,X_START,Y_START-i*OFFSET,color,18);// 曲线当前点坐标drawText(ctx,"当前 X:"+curve.x.toFixed(3)+"  Y:"+curve.y.toFixed(3),X_START,Y_START-20-(i)*OFFSET,color,18);// 绘制曲线if(curve.pts0){paintCurve(ctx,color,curve.pts0);// 绘制曲线分段1的高低点(可选)//var mm=findMaxMin(curve.pts0);//markMaxMin(ctx,mm,color);}if(curve.pts1){paintCurve(ctx,color,curve.pts1);// 绘制曲线分段2的高低点(可选)//var mm=findMaxMin(curve.pts1);//markMaxMin(ctx,mm,color);}if(curve.pts2){paintCurve(ctx,color,curve.pts2);// 绘制曲线分段3的高低点(可选)//var mm=findMaxMin(curve.pts2);//markMaxMin(ctx,mm,color);}if(curve.pts3){paintCurve(ctx,color,curve.pts3);// 绘制曲线分段4的高低点(可选)//var mm=findMaxMin(curve.pts3);//markMaxMin(ctx,mm,color);}if(curve.pts4){paintCurve(ctx,color,curve.pts4);// 绘制曲线分段4的高低点(可选)//var mm=findMaxMin(curve.pts3);//markMaxMin(ctx,mm,color);}}};// 画背景(非必要不更改)obj.paintBg=function(ctx){// 清屏ctx.clearRect(-600,-300,1200,600);ctx.fillStyle="rgb(251,255,253)";ctx.fillRect(-600,-300,1200,600);// 画X轴drawAxisX(ctx,-600,600,50);// 画Y轴drawAxisY(ctx,-300,300,50);// 画网格线drawGrid(ctx,-600,-300,50,1200,600,50);// 左上角标题var metrics = ctx.measureText(TITLE);var textWidth = metrics.width;drawText(ctx,TITLE,-WIDTH/2+textWidth+3,HEIGHT/2-30,"grey",18);// 右下角作者,日期const waterMarkTxt="逆火原创@"+(new Date()).toLocaleDateString();metrics = ctx.measureText(waterMarkTxt);textWidth = metrics.width;drawText(ctx,waterMarkTxt,WIDTH/2-textWidth,-HEIGHT/2,"lightGrey",16);};return obj;
}// 描绘并标识一个点
function paintPoint(ctx,x,y,text,color){var xReal=x*SCALE_UNIT;var yReal=y*SCALE_UNIT;ctx.strokeStyle=color;ctx.lineWidth=0.5;// 划线ctx.save();ctx.setLineDash([5,5]);ctx.beginPath();    ctx.moveTo(xReal,0);ctx.lineTo(xReal,yReal);ctx.lineTo(0,yReal);ctx.stroke();ctx.restore();// 画圈ctx.beginPath();ctx.arc(xReal,yReal,4,0,Math.PI*2,false);ctx.closePath();    ctx.stroke();// 写文字var metrics = ctx.measureText(text);var textWidth = metrics.width;drawText(ctx,text,xReal+textWidth+2,yReal-5,color,12);
}// 连点成线画曲线
function paintCurve(ctx,color,cds){ctx.save();ctx.strokeStyle = color;ctx.lineWidth=1;ctx.beginPath();     for(var i=0; i<cds.length; i++){let y=cds[i].y;if(Math.abs(cds[i].y*SCALE_UNIT)<300){ctx.lineTo(cds[i].x*SCALE_UNIT,cds[i].y*SCALE_UNIT);}}     ctx.stroke();  ctx.restore();
}// 找到坐标数组的最大最小值
function findMaxMin(cds){if(cds.length<1){return null;}var retval={max:-10000,max_x:0,min:10000,min_x:0};for(var i=0;i<cds.length;i++){var y=cds[i].y;if(y>retval.max){retval.max=y;retval.max_x=cds[i].x;}if(y<retval.min){retval.min=y;retval.min_x=cds[i].x;}} return retval;
}// 绘出最大最小值
function markMaxMin(ctx,mm,color){if(mm==null){return;}// 最大值var x=mm.max_x;var y=mm.max;ctx.strokeStyle=color;ctx.beginPath();ctx.arc(x*SCALE_UNIT,y*SCALE_UNIT,5,0,Math.PI*2,false);ctx.closePath();ctx.stroke();var text="max@x="+x.toFixed(3)+" y="+y.toFixed(3);drawText(ctx,text,x*SCALE_UNIT,y*SCALE_UNIT,color,12);// 最小值var x=mm.min_x;var y=mm.min;ctx.strokeStyle=color;ctx.beginPath();ctx.arc(x*SCALE_UNIT,y*SCALE_UNIT,5,0,Math.PI*2,false);ctx.closePath();ctx.stroke();var text="min@x="+x.toFixed(3)+" y="+y.toFixed(3);drawText(ctx,text,x*SCALE_UNIT,y*SCALE_UNIT,color,12);
}// 定点画实心圆
function drawSolidCircle(ctx,x,y,r,color){ctx.save();ctx.beginPath();ctx.arc(x,y,r,0,2*Math.PI);ctx.fillStyle=color;ctx.fill();ctx.restore();
}// 两点之间画线段
function drawLine(ctx,x1,y1,x2,y2,color){ctx.save();ctx.lineWidth=0.25;ctx.strokeStyle=color;ctx.beginPath();ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.stroke();ctx.closePath();ctx.restore();
}// 画横轴
function drawAxisX(ctx,start,end,step){const AXISY_COLOR="black";ctx.save();ctx.lineWidth=0.5;ctx.strokeStyle=AXISY_COLOR;// 画轴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+=step){if(x==0){continue;}ctx.beginPath();ctx.moveTo(x, 0);ctx.lineTo(x, y);ctx.stroke();ctx.closePath();var text=formatScale(x/SCALE_UNIT);drawText(ctx,text,x,y-20,AXISY_COLOR,12);}ctx.restore();
}// 画纵轴
function drawAxisY(ctx,start,end,step){const AXISY_COLOR="black";ctx.save();ctx.lineWidth=0.5;ctx.strokeStyle=AXISY_COLOR;// 画轴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+=step){ctx.beginPath();ctx.moveTo(x, y);ctx.lineTo(0, y);var text=formatScale(y/SCALE_UNIT);var metrics = ctx.measureText(text);var textWidth = metrics.width;drawText(ctx,text,x-textWidth-5,y,AXISY_COLOR,12);ctx.stroke();ctx.closePath();}ctx.restore();
}//-------------------------------
// 得到整型后的刻度
//-------------------------------
function formatScale(scale){var s=scale*10;if(s % 5==0){return scale+"";}else{return scale.toFixed(2);}
}// 画网格线
function drawGrid(ctx,x1,y1,step1,x2,y2,step2){ctx.save();ctx.lineWidth=0.25;ctx.strokeStyle="lightgrey";    // 分十格var x,y;for(x=x1;x<x2;x+=step1/10){ctx.beginPath();ctx.moveTo(x, y1);ctx.lineTo(x, y2);ctx.stroke();ctx.closePath();}for(y=y1;y<y2;y+=step2/10){ctx.beginPath();ctx.moveTo(x1, y);ctx.lineTo(x2, y);ctx.stroke();ctx.closePath();}// 十小格间的分割线ctx.lineWidth=0.25;ctx.strokeStyle="grey";ctx.setLineDash([5,5]);// 设置虚线,起止点间包含五空格五划线共十段for(x=x1;x<x2;x+=step1){ctx.beginPath();ctx.moveTo(x, y1);ctx.lineTo(x, y2);ctx.stroke();}for(y=y1;y<y2;y+=step2){ctx.beginPath();ctx.moveTo(x1, y);ctx.lineTo(x2, y);ctx.stroke();}ctx.restore();
}//-------------------------------
// 角度得到弧度
//-------------------------------
function getRad(degree){return degree/180*Math.PI;
}//-------------------------------
// 得到颜色
//-------------------------------
function getColor(index){var arr=["maroon" /* 栗色 */,"orange" /* 橙色 */,"blue"   /* 蓝色 */,"green"  /* 绿色 */,       "fuchsia"/* 紫红 */,        "grey"   /* 灰色 */,"lime"   /* 酸橙 */,        "navy"   /* 海蓝 */,        "purple" /* 紫色 */,"skyblue"/* 天蓝 */,"teal"   /* 蓝绿 */,"yellow" /* 亮黄 */,"aqua"   /* 湖绿 */,"red"    /* 红色 */,        "black"  /* 黑色 */,    ];return arr[index % arr.length];
}//-------------------------------------
// 绘制文字,指定颜色
// ctx:绘图环境
// text:文字
// x,y:坐标
// color:颜色
// size:字体大小
//-------------------------------------
function drawText(ctx,text,x,y,color,size){ctx.save();ctx.translate(x,y)ctx.rotate(getRad(180))ctx.scale(-1,1)ctx.textBaseline="bottom";ctx.textAlign="center";ctx.fillStyle=color;ctx.font = size+"px consolas";ctx.fillText(text,0,0);ctx.restore();
}// JS开立方
function kaiLiFang(x){if(x>0){return Math.pow(x,1/3);}else{return -Math.pow(-x,1/3);}
}
//-->
/****************************************
遇到事情,要学会沉住气,在默默无闻中积攒
力量,等待厚积薄发的一天。
****************************************/
</script>

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/880669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动手学深度学习(李沐)PyTorch 第 3 章 线性神经网络

3.1 线性回归 线性回归是对n维输入的加权&#xff0c;外加偏差 线性回归可以看作是单层神经网络 回归问题中最常用的损失函数是平方误差函数。 平方误差可以定义为以下公式&#xff1a; 常数1/2不会带来本质的差别&#xff0c;但这样在形式上稍微简单一些 &#xff08;因为当…

《C++》解密--单链表

目录 一、概念与结构 二、实现单链表 三、链表的分类 四、单链表算法题 一、概念与结构 1、节点 结点的组成主要有&#xff1a;当前结点要保存的数据和保存下一个节点的地址&#xff08;指针变量&#xff09; 图中指针变量plist保存的是第一个结点的地址&#xff0c;我们称p…

第十七章:c语言内存函数

1. memcpy使⽤和模拟实现 2. memmove使⽤ 3. memset函数的使⽤ 4. memcmp函数的使⽤ 天行健 君子以自强不息一、memcpy的使用和模拟实现 作用&#xff1a; 1. 函数memcpy从source的位置向后复制num个字节的数据到destination指向的内存位置。 2. 这个函数在遇到‘\0’的时…

MySQL - 进阶篇

一、存储引擎 1. MySQL体系结构 2. 存储引擎简介 3. 存储引擎特点 4. 存储引擎选择 二、索引 1. 索引概述 2. 索引结构 3. 索引分类 4. 索引语法 5. SQL性能分析 6. 索引使用 7. 索引设计原则 三、SQL优化 1. 插入数据 2. 主键优化 3. order by优化 4. group by优化 5. limi…

图像处理案例04

图像处理 问题&#xff1a;把不规则的图片按照参考图摆放 步骤&#xff1a; 1. 用ORB找关键点 2. 关键点匹配 3. 根据上一步匹配的关键点得出单应性矩阵 4. 根据单应性矩阵对不规则进行透视变换 import cv2 import numpy as np import matplotlib.pyplot as pltimgl cv2.imrea…

Hive数仓操作(五)

一、Hive 信息查看 Hive的元数据管理&#xff1a; Hive 将表的元数据&#xff08;如表名、列名、类型等&#xff09;存储在关系型数据库中&#xff0c;通常是 MySQL。元数据的主要表包括&#xff1a; TBLS&#xff1a;存储表的信息&#xff08;表名、类型、ID 等&#xff09;。…

【小程序】微信小程序课程 -4 项目实战

目录 1、 效果图 2、创建项目 2.1 创建小程序端 2.1.1 先创建纯净项目 2.1.2 删除components 2.1.4 删除app.json红色部分 2.1.5 删除index.json红色部分 2.1.6 删除index.wxss全部内容 2.1.7 删除index.wxml全部内容 2.1.8 app.json创建4个页面 2.1.9 app.json添加…

15年408计算机网络

第一题&#xff1a; 解析&#xff1a; 接收方使用POP3向邮件服务器读取邮件&#xff0c;使用的TCP连接&#xff0c;TCP向上层提供的是面向连接的&#xff0c;可靠的数据传输服务。 第二题&#xff1a; 解析&#xff1a;物理层-不归零编码和曼彻斯特编码 编码1&#xff1a;电平在…

GAMES101(作业8)

作业8 题目&#xff1a; 模拟绳子动画&#xff0c;包括基于物理的&#xff0c;和非物理的&#xff0c;应该修改的函数是:rope.cpp 中的void Rope::simulateEuler(... Rope::rope(...)&#xff0c;&#xff0c;void Rope::simulateVerlet(...) 代码框架&#xff1a; main:负…

centos磁盘逻辑卷LVM创建

centos磁盘逻辑卷LVM创建 一、磁盘逻辑卷LVM说明二、centos磁盘使用情况三、LVM安装指南1.LVM工具安装1. yum list lvm2. yum search lvm3. yum search pvcreate4. yum list lvm25. yum install lvm2 2.创建物理卷2.1磁盘情况查看2.2创建物理卷&#xff08;PV&#xff09; 3.创…

使用Postman工具接口测试

文章目录 一、接口1.1 接口的概念1.2 接口的类型 二、接口测试2.1 概念2.2 原理2.3 特点 三、HTTP协议3.1 http协议简介3.2 URL格式3.3 HTTP请求3.3.1 请求行3.3.2 请求头3.3.3 请求体 3.4 HTTP响应3.4.1 状态行3.4.2 响应头3.4.3 响应体 3.4 传统风格接口3.5 RESTful风格接口 …

Race Karts Pack 全管线 卡丁车赛车模型素材

是8辆高细节、可定制的赛车,内部有纹理。经过优化,可在手机游戏中使用。Unity车辆系统已实施-准备驾驶。 此套装包含8种不同的车辆,每种车辆有8-10种颜色变化,总共有75种车辆变化! 技术细节: -每辆卡丁车模型使用4种材料(车身、玻璃、车轮和BrakeFlare) 纹理大小: -车…

基于单片机的可调式中文电子日历系统

** 文章目录 前言概要功能设计软件设计效果图 程序文章目录 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们…

如何在O2OA中使用ElementUI组件进行审批流程工作表单设计

本文主要介绍如何在O2OA中进行审批流程表单或者工作流表单设计&#xff0c;O2OA主要采用拖拽可视化开发的方式完成流程表单的设计和配置&#xff0c;不需要过多的代码编写&#xff0c;业务人员可以直接进行修改操作。 在流程表单设计界面&#xff0c;可以在左边的工具栏找到Ele…

文心一言 VS 讯飞星火 VS chatgpt (357)-- 算法导论24.2 3题

三、上面描述的 PERT 图的公式有一点不太自然。在一个更自然的结构下&#xff0c;图中的结点代表要执行的工作&#xff0c;边代表工作之间的次序限制&#xff0c;即边 (u&#xff0c;v) 表示工作 u 必须在工作 v 之前执行。在这种结构的图中&#xff0c;我们将权重赋给结点&…

httpsok-v1.17.0-SSL通配符证书自动续签

&#x1f525;httpsok-v1.17.0-SSL通配符证书自动续签 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具&#xff0c;基于全新的设计理念&#xff0c;专为 Nginx 、OpenResty 服务器设计。已服务众多中小企业&#xff0c;稳定、安全、可靠。 一行命令&#xff0c;一分钟轻…

LQR算法核心思想

本章以倒立摆为解决目的 什么是线性二次型控制器&#xff08;LQR&#xff09; 开环系统 即状态变量的倒数 系统的状态空间矩阵A * 系统状态变量x A状态矩阵&#xff1a;描述系统本身物理特性的一个矩阵&#xff0c;它是由系统本身的机械结构、物理结构决定的&#xff0c;无法…

【漏洞复现】VEXUS多语言货币交易所存在未授权访问漏洞

漏洞描述 java后端,非常完整的一套交易所,UI前端做的也很漂亮,新增了交易跟单功能,前端pc+wap都是uniapp纯源码,前端源码node_modules环境已经安装好了,拿去直接编译就可以. 后端 前端 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共…

ARM 服务器上安装 OpenEuler (欧拉)

系统介绍 在 2019 年 7 月 19 日&#xff0c;华为宣布要在年底正式开源 openEuler 操作系统&#xff1b;在半年后的 12 月 31 日&#xff0c;华为正式开源了 openEuler 操作系统&#xff0c;邀请社区开发者共同来贡献。 一年后&#xff0c;截止到 2020 年12 月 25日&#xff…

第167天:应急响应-日志自动提取分析项目_ELK_Logkit_LogonTracer_Anolog等

目录 案例一&#xff1a; 日志自动提取-七牛Logkit&观星应急工具 Logkit 观星 案例二&#xff1a;日志自动分析-Web-360 星图&Goaccess&ALB&Anolog 360 星图 GoAccess ALB Anolog f8x 案例一&#xff1a; 日志自动提取-七牛Logkit&观星应急工具 …