泰勒级数展开与圆的轨迹方程曲线

手动展开 曲线 x * x + y * y = r * r 的泰勒级数,在x0 = 0 时, 到3阶以上,很费神费事,直接借助在线工具
https://zh.numberempire.com/taylorseriesexpansion.php 泰勒级数展开计算器
https://zh.numberempire.com/taylorseriesexpansion.php 函数求导工具
https://zs.symbolab.com/solver/derivative-calculator/\frac{d^{8}}{dx^{8}}\left(\sqrt{r^{2}-x^{2}}\right)

<html>
<head>
  <meta charset="UTF-8">
  <title>圆的泰勒级数在x=0处展开</title>
   <style type="text/css">
   .box {
   	/*float: left;*/
   	background-color: black;
   }
   .ctrlBox {
   	float: left;
   	/*border: 1px solid #A0F;*/
   	width: 400;
   	/*height: 700;*/
   }
   </style>
</head>

<body>
<canvas id="canvas" class="box">
    canvas not supported, please use html5 browser.
</canvas>
<div class="ctrlBox">
	<p>泰勒级数展开的阶数:<p>
  <button onclick="update(-1)"> &lt;&lt; </button>
  <span id="lvlLb">1</span>
  <button onclick="update(1)"> &gt;&gt; </button>
</div>

</body>
<script>
  var radius  = 100;
  var x0 = Math.SQRT2 * radius / 2;
  var label = document.querySelector("#lvlLb");
  var arr=[1,2,4,6,8,10,12], cur = 0;
  var canvas = document.querySelector(".box");
  var ctx = canvas.getContext('2d');

window.onload = function() {
	canvas.width = 800;
	canvas.height = 600;
	draw();
}

function update(val) {
  var preCur = cur;
  val > 0 ? cur++ : cur--;
  if (cur < 0) cur = 0;
  if (cur >= arr.length - 1) cur = arr.length - 1;
  if (preCur != cur) {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    draw();
  }
}

function draw() {
  var cx = 400, cy = 300;
  label.innerText = arr[cur];
   ctx.beginPath();
    ctx.strokeStyle = "#EE9611"; 
    ctx.arc(cx, cy, radius, Math.PI*2, false);
    ctx.stroke();
    ctx.moveTo(0, cy);
    ctx.lineTo(canvas.width, cy);
    ctx.stroke();
    ctx.moveTo(cx, 0);
    ctx.lineTo(cx, canvas.height);
    ctx.stroke();
    ctx.closePath();
    
    var range = 150;
    for (var i = -range; i < range; i++) {
      var j = getTyler_Y(i, arr[cur]);
      if (i === -range) {
        ctx.beginPath();
        ctx.strokeStyle = "#2BD56F";
        ctx.moveTo(cx+i, cy-j);
      } else {
        ctx.lineTo(cx+i, cy-j);
      }
    }
    ctx.stroke();
}

//自变量x, 泰勒级数展开的阶数lvl
function getTyler_Y(x, lvl) {
  var exp;
  if (lvl >= 1) {
    exp = radius;
  }
  if (lvl >= 2) {
    exp -= x**2 / (2 * radius);
  }
  if (lvl >= 4) {
    exp -= x**4 / (8 * radius ** 3);
  }
  if (lvl >= 6) {
    exp -= x**6 / (16 * radius ** 5);
  }
  if (lvl >= 8) {
    exp -= 5 * x**8 / (128 * radius ** 7);
  }
  if (lvl >= 10) {
    exp -= 7 * x**10 / (256 * radius ** 9);
  }
  if (lvl >= 12) {
    exp -= 21 * x**12 / (1024 * radius ** 11);
  }
  return exp;
}
</script>
</html>

圆的轨迹, 也可以用参数方程来表示

x = r * cos( t )
y = r * sin( t )

一阶导数简单, 就是 (dy/dt) / (dx/dt)
二阶导数比较麻烦,参见《高等数学第五版》上册,第107页, (5)
y对t一阶导数 记作dy_t1
x对t一阶导数 记作dx_t1
y对t二阶导数 记作dy_t2
x对t二阶导数 记作dx_t2
y对x二阶导数 记作dy_x2

dy_x2 = (dy_t2 * dx_t1 - dy_t1 * dx_t2) / (dx_t1 ** 3)

就圆的轨迹,的参数方程表达来说

一阶导数 dy_x1 = -ctg( t )
二阶导数 dy_x2 = -1 / (r * sin(t) ** 3)

当x=0时,t=PI/2; sin ( t ) = 1, dy_x2 = -1 / r;
和根据 圆的隐函数表达 x * x + y * y = r * r 得出的二阶导数是一致的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值