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

大概效果如下:

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

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

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Plot Function Graph</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/9.4.4/math.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
    <label for="functionInput">Enter Function:</label>
    <input type="text" id="functionInput" placeholder="e.g., sin(x)">
    <br>
    <label for="startX">Start X:</label>
    <input type="number" id="startX" value="-10">
    <label for="endX">End X:</label>
    <input type="number" id="endX" value="10">
    <br>
    <button onclick="plotGraph()">Plot Graph</button>

    <canvas id="myChart" width="400" height="200"></canvas>

    <script>
        function plotGraph() {
            // 获取用户输入的函数和 x 区间
            var userInputFunction = document.getElementById('functionInput').value;
            var startX = parseFloat(document.getElementById('startX').value);
            var endX = parseFloat(document.getElementById('endX').value);

            // 解析用户输入的函数
            var parser = math.parser();
            parser.evaluate('f(x) = ' + userInputFunction);

            // 计算函数值
            var data = [];
            for (var x = startX; x <= endX; x += 0.1) {
                var y = parser.evaluate('f(' + x + ')');
                data.push({x: x, y: y});
            }

            // 绘制图表
            var ctx = document.getElementById('myChart').getContext('2d');
            var myChart = new Chart(ctx, {
                type: 'line',
                data: {
                    datasets: [{
                        label: 'Function Graph',
                        data: data,
                        fill: false,
                        borderColor: 'rgb(75, 192, 192)',
                        tension: 0.1
                    }]
                },
                options: {
                    scales: {
                        x: {
                            type: 'linear',
                            position: 'bottom'
                        },
                        y: {
                            beginAtZero: true
                        }
                    }
                }
            });
        }
    </script>
</body>
</html>

相关推荐

  1. 定义函数使用

    2024-05-11 10:16:06       16 阅读
  2. hive定义函数

    2024-05-11 10:16:06       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-11 10:16:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-11 10:16:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-11 10:16:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-11 10:16:06       20 阅读

热门阅读

  1. C++ sort()排序详解

    2024-05-11 10:16:06       10 阅读
  2. NSS刷题

    NSS刷题

    2024-05-11 10:16:06      13 阅读
  3. 新能源汽车为什么容易自燃

    2024-05-11 10:16:06       10 阅读
  4. vscode触发建议缓慢问题

    2024-05-11 10:16:06       14 阅读
  5. Linux下MySQL的用户与权限管理

    2024-05-11 10:16:06       10 阅读
  6. 蓝桥杯 算法提高 ADV-1169 区间覆盖问题 python AC

    2024-05-11 10:16:06       9 阅读
  7. VSCODE + SSH for PHP 配置

    2024-05-11 10:16:06       12 阅读
  8. MyBatis——MyBatis 核心配置文件

    2024-05-11 10:16:06       6 阅读
  9. 三生随记——耳机里的诅咒

    2024-05-11 10:16:06       7 阅读
  10. 2.mysql--备份恢复

    2024-05-11 10:16:06       9 阅读
  11. Spring Cloud LoadBalancer 4.1.2

    2024-05-11 10:16:06       8 阅读