函数图像

y=f(x) 实时绘图/缩放平移

412 次访问

函数图像绘图器

y = f(x)(支持 sin cos tan log sqrt 等)

x 范围 [a, b]

y 范围(自动)

关于本工具

了解工具定位 · 使用场景 · 对比优势

使用场景

📐

函数图像验证

学生在做数学作业时,手绘函数图像容易出错,尤其遇到分式函数、复合函数或含参函数。用本工具输入解析式 y=f(x),立即生成精确曲线,支持缩放平移观察局部细节。例如验证 y=1/x 的渐近线、y=sin(2x) 的周期变化,比手绘快 10 倍,且不会漏掉关键拐点。

📈

参数变化对比

教师或自学者需要理解参数对函数形状的影响,例如 y=a·x²+b 中 a 的正负决定开口方向、b 决定顶点位置。本工具支持同时输入多个函数(如 y=x²、y=2x²、y=x²+3),在同一坐标系内叠加显示,通过平移缩放直观对比振幅、相位、截距变化,替代静态教材的抽象描述。

🧮

方程根与交点

解方程 f(x)=g(x) 时,代数法可能繁琐或无法直接求解。本工具将两个函数图像绘制在同一坐标系中,交点即为方程的解。例如求 x²=ln(x) 的近似根,直接观察交点横坐标,再通过缩放功能定位到小数点后两位,适合工程估算或数学实验。

🎓

导数与切线教学

学习导数的几何意义时,需要理解某点切线斜率与函数变化率的关系。本工具输入函数 y=f(x) 和指定点 x₀,可手动标记该点并观察切线方向。通过缩放局部区域,清晰看到函数在该点附近的线性逼近效果,辅助理解导数定义中的极限过程。

⚙️

工程函数拟合

工程师在分析实验数据时,常需要快速验证经验公式是否合理。例如温度传感器输出与温度的关系假设为 y=kx+b,将实测数据点与理论曲线叠加绘制,通过缩放查看偏差分布。本工具无需安装软件,浏览器打开即用,适合现场快速检查拟合质量。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具GeoGebra传统方法(纸笔/计算器)
数据隐私纯浏览器计算,函数表达式不上传服务器部分功能需联网同步数据完全离线,无数据泄露风险
处理速度输入即渲染,实时响应复杂函数(如含参数动画)可能有短暂延迟手动描点绘图,速度取决于用户熟练度
离线可用完全离线,加载后断网可用部分功能(如在线资源库)需联网完全离线
交互方式鼠标拖拽平移/滚轮缩放,实时更新支持拖拽、缩放及滑动条参数调节静态图像,无法交互
功能复杂度专注 y=f(x) 快速绘图,操作极简集成了几何、代数、统计等完整数学套件仅能绘制有限个点或简单函数
使用门槛打开即用,零学习成本功能丰富但界面复杂,新手需学习需掌握函数计算和坐标纸绘图技巧

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例8 个典型场景,覆盖常规、边界与易错

输入输出说明
y=sin(x)正弦波图像,周期 2π,振幅 1,在 x=0 处过原点典型常规场景:基础三角函数的实时绘图
y=x^2开口向上的抛物线,顶点在原点 (0,0),对称轴为 y 轴典型常规场景:二次函数的图像验证
y=1/x双曲线,两条渐近线为 x=0 和 y=0,第一、三象限对称边界 case:在 x=0 处有间断点,测试工具对奇点的处理
y=tan(x)正切曲线,周期 π,在 x=π/2 + kπ 处有垂直渐近线边界 case:含无穷间断点的函数,测试缩放后渐近线显示
y=sqrt(x)从原点出发向右延伸的曲线,定义域 x≥0,值域 y≥0边界 case:定义域非全体实数,测试工具对输入范围的限制
y=abs(x)V 形折线,顶点在原点,左右对称,斜率分别为 -1 和 1易错 case:新手常误以为绝对值函数是平滑曲线,实际是折线
y=ln(x)自然对数曲线,在 x=0 处有垂直渐近线,过点 (1,0),单调递增易错 case:用户可能输入 x≤0 导致无定义,需注意定义域
y=x^3 - 3x三次曲线,有两个极值点(局部极大和极小),过原点典型常规场景:含极值点的多项式函数,适合观察导数特征

常见错误对照9 个常踩的坑 · 错误 → 修复

1. 忘记乘方运算符

错误
y=2x^3+5x
修复
y=2*x^3+5*x

数学手写中省略乘号是惯例,但函数图像工具使用标准计算表达式语法,乘号 '*' 和乘方 '^' 必须显式写出。

2. 括号不匹配导致语法错误

错误
y=sin(x+1
修复
y=sin(x+1)

表达式解析器依赖括号配对来确定运算优先级;左括号数量不等于右括号数量时,解析器无法构造语法树,直接报错。

3. 三角函数参数使用角度制

错误
y=sin(90)
修复
y=sin(pi/2) 或 y=sin(1.5708)

几乎所有编程语言和数学工具的三角函数默认采用弧度制;sin(90) 实际计算的是 sin(90 rad) ≈ 0.894,而非期望的 1。

4. 自然对数写成 'ln' 而非 'log'

错误
y=ln(x)
修复
y=log(x)

不同工具对 ln/log 的命名约定不同;本工具遵循多数编程语言惯例,log 表示自然对数(底数 e),不接受 ln 作为函数名。

5. 使用中文括号或运算符

错误
y=sin(x)
修复
y=sin(x)

等号、括号、逗号等符号必须使用英文半角字符;中文全角符号不被表达式解析器识别,导致解析失败或意外字符错误。

6. 在定义域外求值

错误
y=sqrt(x) 输入 x 范围 -10 到 10
修复
y=sqrt(x) 输入 x 范围 0 到 10

sqrt 定义域为 x≥0;负半轴无实数解,图像在 x<0 区域会显示空白或断点,并非工具 bug,而是数学定义限制。

7. 混淆 '=' 赋值与 '==' 比较

错误
y==x^2
修复
y=x^2

表达式语法中单等号 '=' 表示函数定义;双等号 '==' 是关系运算符,会被解析为布尔比较表达式,导致图像出现意料之外的离散点或空图。

8. 隐式乘法导致解析歧义

错误
y=2x+3
修复
y=2*x+3 或 y=2x+3(取决于工具是否支持隐式乘法)

部分工具(如 Desmos)支持隐式乘法,本工具不支持;'2x' 会被解析为标识符而非 '2*x',导致变量未定义错误。

9. 使用未定义的自定义变量

错误
y=a*x^2 + b*x + c
修复
y=2*x^2 + 3*x + 1(代入具体数值)

本工具仅支持自变量 x 和预定义常数(如 pi, e);a、b、c 等字母会被视为未定义变量,导致解析失败。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

y = f(x)

变量说明

  • x — 自变量,实数域内任意值
  • y — 因变量,由函数 f 映射得到
  • f — 用户自定义的数学函数表达式

示例

绘制正弦函数:输入 f(x) = sin(x)。取 x = 0, π/2, π, 3π/2, 2π,对应 y = 0, 1, 0, -1, 0。图像为周期 2π 的波浪曲线,振幅 1。

适用范围

适用于任意定义在实数域上的初等函数(多项式、三角函数、指数、对数等)。不适用于分段函数、隐函数、参数方程(需额外输入格式)。数据来源:数学分析标准定义。

原理图

函数图像 · 实时绘图流程输入函数表达式y = f(x)浏览器解析 & 采样Canvas 逐点绘制实时曲线展示支持缩放/平移交互反馈用户输入本地处理输出结果
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import numpy as np
import matplotlib.pyplot as plt

# 定义函数和 x 范围
def f(x):
    return np.sin(x) + 0.5 * np.cos(2 * x)

x = np.linspace(-10, 10, 1000)
y = f(x)

# 绘图并设置缩放
plt.figure(figsize=(8, 4))
plt.plot(x, y, label='y = sin(x) + 0.5*cos(2x)')
plt.xlim(-5, 5)  # 水平缩放
plt.ylim(-2, 2)  # 垂直缩放
plt.grid(True, alpha=0.3)
plt.legend()
plt.show()
package main

import (
	"fmt"
	"math"
	"os"
	"strconv"
)

// 计算 y = sin(x) + 0.5*cos(2x) 在 x 处的值
func f(x float64) float64 {
	return math.Sin(x) + 0.5*math.Cos(2*x)
}

func main() {
	if len(os.Args) < 2 {
		fmt.Println("用法: go run main.go <x值>")
		return
	}
	x, err := strconv.ParseFloat(os.Args[1], 64)
	if err != nil {
		fmt.Println("无效的 x 值:", err)
		return
	}
	y := f(x)
	fmt.Printf("f(%.4f) = %.6f\n", x, y)
}
// 使用 Canvas API 绘制函数图像
const canvas = document.getElementById('plot');
const ctx = canvas.getContext('2d');

// 定义函数
const f = (x) => Math.sin(x) + 0.5 * Math.cos(2 * x);

// 绘图参数
const xMin = -5, xMax = 5;
const yMin = -2, yMax = 2;
const width = canvas.width, height = canvas.height;

// 坐标映射:世界坐标 → 像素坐标
const toPixelX = (x) => ((x - xMin) / (xMax - xMin)) * width;
const toPixelY = (y) => height - ((y - yMin) / (yMax - yMin)) * height;

// 绘制曲线
ctx.beginPath();
ctx.strokeStyle = 'blue';
ctx.lineWidth = 2;

const step = (xMax - xMin) / width;
for (let px = 0; px <= width; px++) {
    const x = xMin + (px / width) * (xMax - xMin);
    const y = f(x);
    const py = toPixelY(y);
    px === 0 ? ctx.moveTo(px, py) : ctx.lineTo(px, py);
}
ctx.stroke();

常见问题

8 个高频疑问

这个函数图像工具怎么用?我输入了一个函数但没有显示图像。
在输入框中直接输入数学表达式,比如 `sin(x)`、`x^2`、`1/(x-1)`。注意:乘号用 `*`,除号用 `/`,指数用 `^`。输入后按回车或点击绘图按钮,图像会实时绘制。如果没显示,检查表达式是否有括号不匹配或除零错误(如 `1/x` 在 x=0 处无定义,图像在该点会断开)。支持多个函数用分号 `;` 隔开,比如 `sin(x); cos(x)`,会叠加显示多条曲线。鼠标滚轮缩放,拖拽平移视图。
为什么我画的 y=1/x 在 x=0 附近图像很奇怪,有竖线?
这是采样点连接导致的视觉假象。工具默认在 x 轴上均匀取点,然后将相邻点用线段连接。当函数在 x=0 处趋近于无穷大时,左右两侧的点取值极大(如 x=-0.001 时 y=-1000,x=0.001 时 y=1000),连接这两点就会画出一条跨越 y 轴的竖线。这不是函数真正的图像——真正的反比例函数在 x=0 处是断开的。可以尝试勾选「不连接间断点」功能(若有),或手动放大 x=0 附近区域观察。
这个工具能画隐函数或参数方程吗?比如 x^2+y^2=1。
不能直接画隐函数(如 x²+y²=1)。本工具只支持显式函数 y=f(x) 的形式,即一个 x 对应唯一一个 y 值。对于圆,你需要拆成两个函数:y=sqrt(1-x²) 和 y=-sqrt(1-x²) 分别绘制上半圆和下半圆。对于参数方程(如 x=cos(t), y=sin(t)),本工具也不支持,建议使用专门的参数方程绘图工具。
工具绘制的图像准确吗?能用来做作业或考试参考吗?
图像是基于数值计算逐点绘制的,在平滑函数上准确度足够做作业参考。但注意两点:一是采样点有限(默认约 1000 个点),在函数变化剧烈的地方(如 y=tan(x) 在 π/2 附近)可能漏掉细节,可放大后工具会自动重采样;二是极值点、拐点等关键位置是近似定位,不会自动标注精确坐标。建议配合数值计算工具(如求导求根)一起使用。本工具不联网,所有计算在浏览器本地完成,无数据上传。
为什么我画 y=sin(100x) 时图像看起来像一团乱麻,没有清晰的波形?
这是频率过高而采样点不够导致的混叠现象。当函数变化频率超过采样频率的一半时,图像会失真。默认采样约 1000 个点分布在 x 轴范围(如 -10 到 10),每个点间隔约 0.02,而 sin(100x) 的周期是 0.0628,一个周期内只有约 3 个点,不足以还原波形。解决方法:缩小 x 轴范围到 -1 到 1,或使用放大功能聚焦到局部。也可以尝试调整采样密度(若有此设置项)。
这个工具和 Desmos、GeoGebra 比有什么不同?为什么用这个?
核心区别在于:本工具是纯浏览器端实现(FE),无需注册、无广告、无网络请求,关闭页面即清除一切数据。Desmos 和 GeoGebra 功能更全面(支持隐函数、参数方程、滑动条、统计图等),但需要加载更多资源且部分功能依赖网络。本工具定位是轻量快速绘图——打开即用,适合简单的显函数快速可视化场景,比如验证手算的函数形状、课堂演示单条曲线、或者断网环境下使用。如果你需要复杂交互或教学演示,建议用 Desmos。
能画分段函数吗?比如当 x<0 时 y=x,当 x≥0 时 y=x^2。
不能直接写分段条件。但可以用「符号函数」技巧:`(x<0)*x + (x>=0)*x^2`。在数学表达式中,逻辑判断式(如 x<0)在工具中会被当作 0 或 1 处理,因此 (x<0)*x 在 x<0 时为 x,否则为 0;同理 (x>=0)*x² 在 x≥0 时为 x²,否则为 0。两者相加即得到分段函数。注意:这种写法在 x=0 处可能因浮点精度出现微小跳变,不影响整体形状。
工具最多能同时画几条曲线?画多了会卡吗?
没有硬性数量限制,但受浏览器性能影响。每条曲线需要独立计算 1000 个点并渲染,同时画 10 条以上普通函数(如多项式、三角函数)在主流电脑上仍流畅。但如果每条都是高震荡函数(如 sin(1000x))或者同时开启多条曲线,帧率可能下降。建议:不需要的曲线及时清除;如果卡顿,可以缩小 x 轴范围减少计算量。工具不占用服务器资源,所有计算在本地完成,不会因为多曲线而消耗网络流量。
选择 打开 +新窗口 esc关闭