当前位置:   article > 正文

Html生成自定义函数的图形(2024/5/10)

Html生成自定义函数的图形(2024/5/10)

大概效果如下:

可以自定义函数和x的定义域。

我们可以使用数学表达式解析库来解析用户输入的函数方程,并根据给定的 x 区间计算函数的值,然后使用图表库绘制图形。

在这里,我将使用 math.js 库来解析数学表达式,并使用 Chart.js 库来绘制图形。首先,确保你的页面中包含了这两个库:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Plot Function Graph</title>
  7. <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/9.4.4/math.min.js"></script>
  8. <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
  9. </head>
  10. <body>
  11. <label for="functionInput">Enter Function:</label>
  12. <input type="text" id="functionInput" placeholder="e.g., sin(x)">
  13. <br>
  14. <label for="startX">Start X:</label>
  15. <input type="number" id="startX" value="-10">
  16. <label for="endX">End X:</label>
  17. <input type="number" id="endX" value="10">
  18. <br>
  19. <button onclick="plotGraph()">Plot Graph</button>
  20. <canvas id="myChart" width="400" height="200"></canvas>
  21. <script>
  22. function plotGraph() {
  23. // 获取用户输入的函数和 x 区间
  24. var userInputFunction = document.getElementById('functionInput').value;
  25. var startX = parseFloat(document.getElementById('startX').value);
  26. var endX = parseFloat(document.getElementById('endX').value);
  27. // 解析用户输入的函数
  28. var parser = math.parser();
  29. parser.evaluate('f(x) = ' + userInputFunction);
  30. // 计算函数值
  31. var data = [];
  32. for (var x = startX; x <= endX; x += 0.1) {
  33. var y = parser.evaluate('f(' + x + ')');
  34. data.push({x: x, y: y});
  35. }
  36. // 绘制图表
  37. var ctx = document.getElementById('myChart').getContext('2d');
  38. var myChart = new Chart(ctx, {
  39. type: 'line',
  40. data: {
  41. datasets: [{
  42. label: 'Function Graph',
  43. data: data,
  44. fill: false,
  45. borderColor: 'rgb(75, 192, 192)',
  46. tension: 0.1
  47. }]
  48. },
  49. options: {
  50. scales: {
  51. x: {
  52. type: 'linear',
  53. position: 'bottom'
  54. },
  55. y: {
  56. beginAtZero: true
  57. }
  58. }
  59. }
  60. });
  61. }
  62. </script>
  63. </body>
  64. </html>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/554978
推荐阅读
相关标签
  

闽ICP备14008679号