物理题答案核对
高二学生小陈做自由落体运动习题,列式 4.9t² - 3t - 2 = 0,算出 t = 0.8s 但总感觉不对。代入工具输入 a=4.9, b=-3, c=-2,判别式 Δ=48.2,两根分别为 1.03s 和 -0.39s。他立刻发现负根舍去后正确答案是 1.03s,自己计算时把 b 符号抄反了。工具 3 秒出结果,比翻书后答案快 10 倍,且能看清每一步的判别式和根值,适合课后自检。
求根公式(韦达-巴比伦公式):x = (−b ± √Δ) / (2a),其中判别式 Δ = b² − 4ac。
判别式三态:
韦达定理:若 x₁、x₂ 为 ax²+bx+c=0 的两根,则 x₁ + x₂ = −b/a、x₁ · x₂ = c/a,可用于验算与构造方程。
顶点形式:y = a(x − h)² + k,h = −b/(2a)、k = c − b²/(4a) = −Δ/(4a)。a>0 顶点为最低点、a<0 为最高点;对称轴 x = h。
配方法:两侧除以 a 后把 x 项凑成完全平方,得 (x + b/2a)² = (b²−4ac)/(4a²),即求根公式的来源,直观解释 Δ 为何决定根的性质。
面对 ax²+bx+c=0,手算判别式再代入求根公式,符号一错全盘皆输。这个工具只做一件事:输入 a、b、c 三个系数,立即给出判别式值及两个实数根(或复数根提示)。纯浏览器计算,系数和结果均不上传服务器。适合作业验算、工程快速校核、或考试后核对答案——不教数学,只做计算器该做的事。
高二学生小陈做自由落体运动习题,列式 4.9t² - 3t - 2 = 0,算出 t = 0.8s 但总感觉不对。代入工具输入 a=4.9, b=-3, c=-2,判别式 Δ=48.2,两根分别为 1.03s 和 -0.39s。他立刻发现负根舍去后正确答案是 1.03s,自己计算时把 b 符号抄反了。工具 3 秒出结果,比翻书后答案快 10 倍,且能看清每一步的判别式和根值,适合课后自检。
小超市老板老周想进一批饮料,每瓶进价 3 元、售价 5 元,但需付 200 元摊位费。他列方程 5x - 3x - 200 = 0 → 2x - 200 = 0,这是线性方程,但他在本子上误写成了 2x² - 200 = 0。用工具输入 a=2, b=0, c=-200,Δ=1600,根为 ±10。老周立刻意识到方程列错了——二次项不该出现,于是改回线性重新算,避免了进货 10 瓶就以为能回本的错误。
施工员老赵在修一座拱桥,拱圈设计方程为 y = -0.1x² + 2x(单位米),需在 x=5m 处确认拱高。他代入 x=5 得 y=7.5m,但监理要求验证拱顶位置。老赵将方程化为 -0.1x² + 2x - y = 0,用工具对 y=7.5 求根:a=-0.1, b=2, c=-7.5,Δ=1,两根均为 10m。他立刻确认拱顶在 x=10m、y=10m 处,与设计图一致,避免了凭经验估算导致的 2cm 偏差。
投资人王姐看中一个项目,前期投入 50 万,预计每月净收益 3 万,但第 4 个月需追加 10 万维护费。她列方程 3x - 10 - 50 = 0 → 3x = 60 → x = 20 个月回本,但财务总监指出收益是复利增长的,实际模型是 3x² - 10x - 50 = 0。王姐用工具输入 a=3, b=-10, c=-50,Δ=700,正根约 6.1 个月。她发现回本时间比线性估算少了 14 个月,当即调整了投资决策。
无人机飞手小刘给农田喷洒农药,飞行高度 10 米,喷头出药初速度 5m/s,需计算落地水平距离。他套用斜抛公式 5t² - 10 = 0 → t² = 2 → t ≈ 1.414s,水平距离 = 5×1.414 ≈ 7.07m。但实际有 3m/s 逆风,方程修正为 5t² - 3t - 10 = 0。用工具输入 a=5, b=-3, c=-10,Δ=209,正根 t≈1.67s,水平距离 8.35m。他据此调整航线间距,避免了药液重叠或漏喷。
| 维度 | 本工具 | 数学软件 (如 GeoGebra) | 手工计算 |
|---|---|---|---|
| 输入方式 | 直接输入 a/b/c 数值 | 需输入完整方程或拖拽图形 | 纸笔抄写方程再提取系数 |
| 速度 | 即时出结果 | 需点击/回车后显示 | 分钟级(含验算) |
| 中间过程 | 显示判别式值、根公式代入过程 | 默认只显示最终根 | 需自行逐步推导 |
| 复数根 | 判别式<0 时自动输出复数解 | 部分版本需切换复数模式 | 需手动引入虚数单位 i |
| 离线可用 | 纯浏览器,无需网络 | 需安装客户端或在线加载 | 完全离线 |
| 隐私 | 数据不出浏览器 | 在线版会上传方程 | 无数据外泄风险 |
| 费用 | 免费,无限制 | 基础免费,部分功能需付费 | 仅需纸笔 |
| 输入 | 输出 | 说明 |
|---|---|---|
| a=1, b=-3, c=2 | Δ=1, x₁=2, x₂=1 | 常规:判别式为正且为完全平方数,两根为有理数,验证基本求根逻辑 |
| a=1, b=2, c=1 | Δ=0, x₁=x₂=-1 | 边界:判别式为零,两根相等(重根),验证工具是否正确处理重复根 |
| a=1, b=1, c=1 | Δ=-3, 无实数根(复数根:-0.5±0.866i) | 边界:判别式为负,验证工具是否返回复数根或明确提示无实数解 |
| a=0, b=2, c=-4 | 错误:a不能为0(不是一元二次方程) | 易错:用户常误输入a=0,工具应明确拒绝并提示退化为一元一次方程 |
| a=1, b=0, c=-4 | Δ=16, x₁=2, x₂=-2 | 常规:b=0的纯二次方程,验证工具处理缺项时的正确性 |
| a=0.5, b=-1.2, c=0.72 | Δ=0, x₁=x₂=1.2 | 边界:小数系数且判别式为零,验证浮点数精度处理是否导致误判 |
| a=1, b=0, c=0 | Δ=0, x₁=x₂=0 | 易错:所有系数均为零的特殊情况,验证工具是否按规则返回唯一解0 |
1.二次项系数 a 为 0,方程退化一次
a=0, b=2, c=1a=1, b=2, c=1一元二次方程定义要求 a ≠ 0。a=0 时方程变为 bx+c=0,判别式与求根公式均失效,工具应返回错误或提示。
2.系数带单位或百分号,数值类型错误
a=2m, b=5, c=3%a=2, b=5, c=0.03工具只接受纯数字(整数或浮点数)。带单位或百分号的字符串无法解析为数值,会导致计算失败或 NaN。
3.判别式 Δ < 0 时仍期望实数根
输入 a=2, b=1, c=2,认为有实数解Δ = 1² - 4×2×2 = -15 < 0,工具应输出『无实数根,有共轭复数根』判别式 Δ = b² - 4ac 决定根的性质:Δ<0 时实数范围内无解,只有复数解。用户若未理解复数概念会误以为工具出错。
4.系数符号写反,导致方程方向错误
a=1, b=-5, c=6(实际想解 x² - 5x + 6 = 0)a=1, b=-5, c=6 是正确的工具严格按 ax² + bx + c = 0 格式解析。若用户将方程写成 x² + 5x - 6 = 0 却输入 a=1, b=5, c=-6,结果正确;但若习惯性把减号当作负号输入,需确认符号。
5.系数为分数时未转为小数,格式不被接受
a=1/2, b=3, c=2a=0.5, b=3, c=2工具输入字段为数字类型,不支持分数表达式。1/2 会被当作字符串或除法运算,导致解析异常。应手动换算为小数。
6.根为无理数时,误以为结果必须精确分数
输入 a=1, b=1, c=-1,期望输出 ( -1 ± √5 ) / 2 的精确形式工具输出浮点近似值:0.618... 和 -1.618...本工具为数值计算工具,输出浮点数近似值而非根式表达式。若需精确根式形式,应使用符号计算工具。
7.将方程移项后未归零,导致系数错误
方程 x² + 2x = 8,直接输入 a=1, b=2, c=8移项得 x² + 2x - 8 = 0,输入 a=1, b=2, c=-8工具要求方程右侧为 0。若未移项,c 值会差一个常数项,导致判别式和根完全错误。
8.系数过大或过小,浮点精度损失
a=1e-20, b=2, c=1e20a=1, b=2, c=1(先缩放方程)极悬殊的系数(如 1e20 和 1e-20)在浮点运算中会因精度截断导致结果失真。建议先整体缩放方程使系数量级接近。
x = [-b ± √(b² - 4ac)] / (2a)
a二次项系数,a ≠ 0b一次项系数c常数项Δ判别式 Δ = b² - 4ac方程 2x² - 4x - 6 = 0,a=2, b=-4, c=-6。Δ = (-4)² - 4×2×(-6) = 16 + 48 = 64。x = [4 ± √64] / (2×2) = [4 ± 8] / 4。x₁ = (4+8)/4 = 3,x₂ = (4-8)/4 = -1。
5 种主流语言实现,复制即用:
import math
def solve_quadratic(a, b, c):
"""返回一元二次方程 ax²+bx+c=0 的根(实数或复数)"""
d = b*b - 4*a*c
if d >= 0:
sqrt_d = math.sqrt(d)
x1 = (-b + sqrt_d) / (2*a)
x2 = (-b - sqrt_d) / (2*a)
return (x1, x2)
else:
sqrt_d = math.sqrt(-d)
real = -b / (2*a)
imag = sqrt_d / (2*a)
return (complex(real, imag), complex(real, -imag))
# 示例:x² - 5x + 6 = 0 → 根为 2.0 和 3.0
print(solve_quadratic(1, -5, 6))
# 示例:x² + x + 1 = 0 → 复数根
print(solve_quadratic(1, 1, 1))function solveQuadratic(a, b, c) {
const d = b * b - 4 * a * c;
if (d >= 0) {
const sqrtD = Math.sqrt(d);
const x1 = (-b + sqrtD) / (2 * a);
const x2 = (-b - sqrtD) / (2 * a);
return [x1, x2];
} else {
const sqrtD = Math.sqrt(-d);
const real = -b / (2 * a);
const imag = sqrtD / (2 * a);
return [`${real}+${imag}i`, `${real}-${imag}i`];
}
}
// 示例:x² - 5x + 6 = 0 → [2, 3]
console.log(solveQuadratic(1, -5, 6));
// 示例:x² + x + 1 = 0 → 复数根
console.log(solveQuadratic(1, 1, 1));package main
import (
"fmt"
"math"
)
func solveQuadratic(a, b, c float64) (complex128, complex128) {
d := b*b - 4*a*c
if d >= 0 {
sqrtD := math.Sqrt(d)
x1 := complex((-b+sqrtD)/(2*a), 0)
x2 := complex((-b-sqrtD)/(2*a), 0)
return x1, x2
} else {
sqrtD := math.Sqrt(-d)
real := -b / (2 * a)
imag := sqrtD / (2 * a)
return complex(real, imag), complex(real, -imag)
}
}
func main() {
// 示例:x² - 5x + 6 = 0 → (3+0i) (2+0i)
fmt.Println(solveQuadratic(1, -5, 6))
// 示例:x² + x + 1 = 0 → 复数根
fmt.Println(solveQuadratic(1, 1, 1))
}use std::f64;
fn solve_quadratic(a: f64, b: f64, c: f64) -> (f64, f64) {
let d = b * b - 4.0 * a * c;
let sqrt_d = d.sqrt();
let x1 = (-b + sqrt_d) / (2.0 * a);
let x2 = (-b - sqrt_d) / (2.0 * a);
(x1, x2)
}
fn main() {
// 示例:x² - 5x + 6 = 0 → (3, 2)
let (x1, x2) = solve_quadratic(1.0, -5.0, 6.0);
println!("根: {} 和 {}", x1, x2);
// 注意:Rust 标准库不直接支持复数,此函数仅处理实数根
// 判别式 < 0 时返回 NaN
}<?php
function solveQuadratic($a, $b, $c) {
$d = $b * $b - 4 * $a * $c;
if ($d >= 0) {
$sqrtD = sqrt($d);
$x1 = (-$b + $sqrtD) / (2 * $a);
$x2 = (-$b - $sqrtD) / (2 * $a);
return [$x1, $x2];
} else {
$sqrtD = sqrt(-$d);
$real = -$b / (2 * $a);
$imag = $sqrtD / (2 * $a);
return ["{$real}+{$imag}i", "{$real}-{$imag}i"];
}
}
// 示例:x² - 5x + 6 = 0 → [3, 2]
print_r(solveQuadratic(1, -5, 6));
// 示例:x² + x + 1 = 0 → 复数根
print_r(solveQuadratic(1, 1, 1));
?>a=0 时方程退化为 bx+c=0,是一元一次方程,不是二次方程。本工具只处理二次项系数 a≠0 的情况。如果你需要解 bx+c=0,可以直接心算 x=-c/b,或用专门的一元一次方程工具。输入前请确认 a 不是 0,否则结果区会提示无效输入。
判别式 Δ=b²-4ac 小于 0 时,方程在实数范围内无解(无实根),本工具会明确显示“无实数根”并给出 Δ 的数值。如果你需要复数根的结果,本工具暂不支持,可以换用支持复数运算的数学软件。实数域内就到这里。
最常见的原因是符号抄错:检查 a、b、c 是否按 ax²+bx+c=0 的标准形式输入。例如 2x²-4x+2=0,a=2、b=-4、c=2。如果 b 漏了负号,结果会完全不同。另一个原因是约分习惯不同:本工具保留精确分数或根式(如 √2),如果书上约成小数,看起来会不一样。建议对照判别式值确认。
可以。输入框接受小数、分数(如 1/3)和根号(如 sqrt(2))形式的系数。例如 0.5x² + (1/3)x - √2 = 0,直接输入 a=0.5、b=1/3、c=-sqrt(2) 即可。工具内部会转换为浮点数计算,结果以小数显示,精度约 15 位有效数字,足够日常使用。
本工具目前只输出小数近似值(如 1.4142),不输出 √2 这样的精确根式。如果你需要精确的根式结果,可以手动化简判别式的平方根部分:Δ 的值会单独显示,你可以用 sqrt(Δ) 的形式代入求根公式。后续版本可能加入根式化简功能。
本工具在浏览器本地计算,没有服务器限制。但 JavaScript 处理超大整数(>2⁵³)时可能丢失精度。例如 a=10¹⁶ 时,判别式 b²-4ac 的中间结果可能超出安全整数范围,导致结果不准确。建议系数绝对值控制在 10¹² 以内。如果必须处理超大数,可考虑用支持高精度的数学软件。
没有人工限制,但浏览器浮点数精度约 15 位十进制有效数字。例如输入 a=0.3333333333333333(16 个 3),工具实际存储为 0.3333333333333333,但内部计算时最后一位可能被截断或舍入。对于大多数中学数学题(系数通常 2-3 位小数),完全够用。
手机自带计算器通常没有一元二次方程专用功能,需要手动套求根公式分步计算,容易按错符号或漏掉负号。本工具只需输入三个系数,一键出两根 + 判别式,省去中间步骤。另外本工具在浏览器运行,不联网也能用(首次加载后),手机浏览器直接打开就行,不用装 App。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。