复利存款倒推本金
理财顾问推荐一款年化 3.5% 的五年期产品,说到期能拿到 12 万。用户想反推现在需要存多少本金。手动算复利公式容易漏掉复利期数,用本工具的通项公式,设置 a₁ 为未知数,公比 q = 1.035,项数 n = 5,直接解出 a₁ 约为 10.1 万。比用手机计算器反复试错快三倍,且不会因为小数位取舍偏差导致本金算错。
a(n-1);函数白名单 abs/sqrt/pow/floor/ceil/round/min/max/log/exp/sin/cos。绝不 eval 用户原文。等差通项aₙ = a₁ + (n−1)·d
等差求和Sₙ = n(a₁+aₙ)/2 = n·a₁ + n(n−1)d/2
等比通项aₙ = a₁·qⁿ⁻¹
等比求和Sₙ = a₁(1−qⁿ)/(1−q)(q≠1);q=1 时 Sₙ = n·a₁
无穷等比S = a₁/(1−q)(仅当 |q|<1 收敛)
等差中项2aₖ = aₖ₋₁ + aₖ₊₁,任意相邻三项成等差
等比中项aₖ² = aₖ₋₁·aₖ₊₁(同号),几何平均
高斯求和1+2+…+n = n(n+1)/2(公差 d=1 的等差)
学生对着数列题列了通项,求和却不知从哪代起——等差等比数列工具把通项、前n项和、任意项三个入口放平,输入首项、公差或公比,直接出结果。支持指定项数范围批量输出,适合作业检查、习题自测或教案准备。计算在浏览器内完成,数据不上传服务器。
理财顾问推荐一款年化 3.5% 的五年期产品,说到期能拿到 12 万。用户想反推现在需要存多少本金。手动算复利公式容易漏掉复利期数,用本工具的通项公式,设置 a₁ 为未知数,公比 q = 1.035,项数 n = 5,直接解出 a₁ 约为 10.1 万。比用手机计算器反复试错快三倍,且不会因为小数位取舍偏差导致本金算错。
装修公司报价 20 万,用户打算用信用卡分期 24 期还,每期手续费 0.6%。销售说「每期只还 8333 本金加 120 手续费」,但用户怀疑实际年化利率远高于宣传。用本工具把每期还款额看作等比数列求和,输入首项 8453、公比 1、项数 24,得到总还款 20.29 万。再对比用等额本息公式反推,发现实际年化约 13%,远高于表面 7.2%,决定改用低息消费贷。
田径教练为 1500 米运动员制定赛前一周训练量:周一跑 5000 米,之后每天递减 10%。周四该跑多少米?用本工具通项公式,a₁=5000,q=0.9,n=4,直接算出周四需跑 3645 米。如果按等差数列每天减固定 500 米,周四只剩 3500 米,强度过低。等比递减更符合超量恢复原理,工具让教练不用手算指数,专注调整减量百分比。
仓库发现一批电子元件库存对不上:月初入库 1000 个,每天按固定比例出库,记录显示第 7 天剩 478 个。主管怀疑有人多拿,用本工具反推出库比例:a₁=1000,a₇=478,n=7,通项公式解得 q≈0.9,即每天出库 10%。按此比例第 7 天应剩 478 个,与记录吻合,排除人为偷盗,确认是出库流程中损耗率被低估。
吉他手练习一段 16 分音符的速弹,节拍器设 120 BPM,但感觉实际速度忽快忽慢。用本工具验证:120 BPM 下每分钟 120 拍,每拍 0.5 秒。如果节拍器每拍误差 2%(q=1.02),第 10 拍时延误差已累积到 0.5×(1.02¹⁰-1)≈0.11 秒,足够让音符堆叠。工具算出等比累积效应后,吉他手改用电子节拍器而非机械式。
| 维度 | 本工具 | 竞品 A(Desmos) | 传统方法(手算/计算器) |
|---|---|---|---|
| 输入方式 | 直接输入首项、公差/公比、项数 | 需在函数编辑器中构造数列公式 | 逐项手算或按计算器累加 |
| 任意项查询 | 输入 n 直接输出第 n 项值 | 需拖动滑块或手动输入 n 值 | 需自行推导通项公式再代入 |
| 求和计算 | 一键输出前 n 项和(等差/等比) | 需额外输入求和函数 sum() | 需手动套用求和公式,易出错 |
| 等比数列公比限制 | 公比可为任意实数(含负数、小数) | 公比可为任意实数 | 负数公比易混淆,手算易漏项 |
| 结果精度 | 保留多位小数,无四舍五入截断 | 默认显示有限小数,可手动调整 | 依赖计算器精度,常需四舍五入 |
| 离线可用 | 纯浏览器运行,无需网络 | 需要网络加载 | 完全离线 |
| 输入 | 输出 | 说明 |
|---|---|---|
| 首项: 2, 公差: 3, 项数: 5, 求: 通项公式 | an = 2 + (n-1) * 3 = 3n - 1 | 常规:等差数列基础通项,验证公式推导正确性 |
| 首项: 1, 公比: 2, 项数: 10, 求: 前n项和 | S10 = 1 * (2^10 - 1) / (2 - 1) = 1023 | 常规:等比数列求和,验证大数计算精度(2^10=1024) |
| 首项: 0, 公差: 5, 项数: 100, 求: 第100项 | a100 = 0 + (100-1) * 5 = 495 | 边界:首项为0时,通项公式首项项不消失,验证公式处理 |
| 首项: 1, 公比: 1, 项数: 1000, 求: 前n项和 | S1000 = 1000 | 边界:公比为1的等比数列退化为常数列,求和公式需特殊处理(分母为0) |
| 首项: 2, 公差: -3, 项数: 8, 求: 第8项 | a8 = 2 + (8-1) * (-3) = -19 | 易错:负公差导致项值递减,用户易忽略符号运算 |
| 首项: 1, 公比: 0.5, 项数: 20, 求: 第20项 | a20 = 1 * 0.5^(20-1) = 1.9073486328125e-6 | 易错:公比为小数时项值快速趋近0,验证浮点数精度与科学计数法显示 |
| 首项: 10, 公差: 0, 项数: 5, 求: 前n项和 | S5 = 5 * 10 + 5*4/2 * 0 = 50 | 常规:公差为0的等差数列(常数列),验证求和公式仍正确 |
1.公差 d 或公比 q 输入了非数字字符
首项: 1, 公差: 2a首项: 1, 公差: 2工具只接受纯数字(含负数、小数),字母或符号会导致解析失败,返回 NaN 或报错。
2.等比数列中公比 q 设为 0
首项: 5, 公比: 0, 项数: 10首项: 5, 公比: 2, 项数: 10公比 q=0 时,从第二项起全为 0,通项公式 aₙ = a₁·qⁿ⁻¹ 仍成立,但实际数列退化,无计算意义,工具可能输出全 0 结果。
3.求和时项数 n 输入了小数
首项: 1, 公差: 2, 项数: 5.5首项: 1, 公差: 2, 项数: 5项数 n 必须是正整数。小数项数无数学意义,工具会截断取整或直接拒绝计算。
4.等比数列求和时公比 q=1 但用了求和公式
首项: 3, 公比: 1, 项数: 10, 期望用 Sₙ = a₁(1-qⁿ)/(1-q)首项: 3, 公比: 1, 项数: 10, 实际和为 30(即 n·a₁)标准等比求和公式在 q=1 时分母为 0,数学上不成立。此时数列为常数列,和 = 首项 × 项数。
5.等差数列通项公式中项数 n 从 0 开始误算
首项: 2, 公差: 3, 想求第 5 项,输入 n=5 得到 17首项: 2, 公差: 3, 第 5 项应输入 n=5,正确结果 2+(5-1)×3=14通项公式 aₙ = a₁ + (n-1)d,n 代表第 n 项,不是索引。若误将 n 当索引,会多算一个公差。
6.负数公差/公比导致符号理解偏差
首项: 10, 公差: -3, 认为第 3 项是 10+(-3)×2=4首项: 10, 公差: -3, 第 3 项 = 10 + (3-1)×(-3) = 4,结果正确但用户误以为符号算错负数公差/公比会交替符号或递减,结果可能为负,用户常误判为计算错误,实际公式正确。
7.输入了超大数值导致浮点溢出
首项: 1e15, 公差: 1e15, 项数: 1000首项: 1, 公差: 1, 项数: 1000JavaScript 数字精度约 15-16 位有效数字,超大数值累加后尾数丢失,结果不精确。工具基于浏览器运算,受限于 IEEE 754 双精度浮点。
S_n = n/2 × (2a₁ + (n-1)d) 或 S_n = n/2 × (a₁ + a_n)
S_n前 n 项和n项数,正整数a₁首项d公差a_n第 n 项等差数列首项 a₁=3,公差 d=5,求前 10 项和:先算 a₁₀ = 3 + (10-1)×5 = 48,代入 S₁₀ = 10/2 × (3 + 48) = 5 × 51 = 255。
5 种主流语言实现,复制即用:
def arithmetic_sequence(a1, d, n):
"""等差数列:通项 an = a1 + (n-1)*d,前 n 项和 Sn = n*(a1+an)/2"""
an = a1 + (n - 1) * d
sn = n * (a1 + an) // 2
return an, sn
def geometric_sequence(a1, q, n):
"""等比数列:通项 an = a1 * q^(n-1),前 n 项和 Sn = a1*(1-q^n)/(1-q) (q≠1)"""
an = a1 * (q ** (n - 1))
if q == 1:
sn = a1 * n
else:
sn = a1 * (1 - q ** n) / (1 - q)
return an, sn
# 示例:等差数列 a1=2, d=3, n=5 → an=14, sn=40
print(arithmetic_sequence(2, 3, 5))
# 示例:等比数列 a1=3, q=2, n=4 → an=24, sn=45.0
print(geometric_sequence(3, 2, 4))function arithmeticSequence(a1, d, n) {
const an = a1 + (n - 1) * d;
const sn = n * (a1 + an) / 2;
return { an, sn };
}
function geometricSequence(a1, q, n) {
const an = a1 * Math.pow(q, n - 1);
let sn;
if (q === 1) {
sn = a1 * n;
} else {
sn = a1 * (1 - Math.pow(q, n)) / (1 - q);
}
return { an, sn };
}
console.log(arithmeticSequence(2, 3, 5)); // { an: 14, sn: 40 }
console.log(geometricSequence(3, 2, 4)); // { an: 24, sn: 45 }package main
import "fmt"
func arithmetic(a1, d, n float64) (an, sn float64) {
an = a1 + (n-1)*d
sn = n * (a1 + an) / 2
return
}
func geometric(a1, q, n float64) (an, sn float64) {
an = a1 * pow(q, n-1)
if q == 1 {
sn = a1 * n
} else {
sn = a1 * (1 - pow(q, n)) / (1 - q)
}
return
}
func pow(base, exp float64) float64 {
result := 1.0
for i := 0.0; i < exp; i++ {
result *= base
}
return result
}
func main() {
fmt.Println(arithmetic(2, 3, 5)) // 14 40
fmt.Println(geometric(3, 2, 4)) // 24 45
}public class SequenceCalculator {
public static double[] arithmetic(double a1, double d, int n) {
double an = a1 + (n - 1) * d;
double sn = n * (a1 + an) / 2;
return new double[]{an, sn};
}
public static double[] geometric(double a1, double q, int n) {
double an = a1 * Math.pow(q, n - 1);
double sn;
if (q == 1) {
sn = a1 * n;
} else {
sn = a1 * (1 - Math.pow(q, n)) / (1 - q);
}
return new double[]{an, sn};
}
public static void main(String[] args) {
double[] arith = arithmetic(2, 3, 5);
System.out.println(arith[0] + " " + arith[1]); // 14.0 40.0
double[] geom = geometric(3, 2, 4);
System.out.println(geom[0] + " " + geom[1]); // 24.0 45.0
}
}fn arithmetic(a1: f64, d: f64, n: i32) -> (f64, f64) {
let an = a1 + (n as f64 - 1.0) * d;
let sn = (n as f64) * (a1 + an) / 2.0;
(an, sn)
}
fn geometric(a1: f64, q: f64, n: i32) -> (f64, f64) {
let an = a1 * q.powi(n - 1);
let sn = if q == 1.0 {
a1 * n as f64
} else {
a1 * (1.0 - q.powi(n)) / (1.0 - q)
};
(an, sn)
}
fn main() {
println!("{:?}", arithmetic(2.0, 3.0, 5)); // (14.0, 40.0)
println!("{:?}", geometric(3.0, 2.0, 4)); // (24.0, 45.0)
}可以。本工具求和模式支持两种输入方式:1)已知首项、公差和项数,直接算前 N 项和;2)已知首项、末项和项数,算总和。如果你只知道首项和公差但项数未知,需要先确定项数(比如题目里给了“从第几项到第几项”),再代入。如果完全没给项数,工具无法自动推断。
本工具默认保留 6 位小数,不自动四舍五入截断,这是为了避免中间计算误差累积。如果你需要特定精度,可以手动复制结果到自己的计算中。如果公比是 1/3 这种循环小数,建议用分数形式输入(比如直接输入 0.333333),工具会按你输入的值计算,不会自动化简为分数。
先检查输入顺序是否正确:本工具输入框依次是首项、公差/公比、项数。首项 2、公差 3、项数 5 时,数列为 2,5,8,11,14,前 5 项和应为 40。如果结果不是 40,可能是把公差输到了首项位置。另外,求和模式默认计算从第 1 项到第 N 项,如果题目要求从第 m 项到第 n 项,需要先手动算出第 m 项作为新首项。
不会。本工具支持负数输入,公差或公比可以是负数,例如等差数列首项 5、公差 -2 会得到 5,3,1,-1... 结果正确。但注意:等比数列公比为负数时,奇数项和偶数项符号交替,求和结果可能比预期小甚至接近 0,这是数学特性,不是计算错误。如果结果异常,可以先检查公比符号是否输反。
本工具底层直接实现通项公式 an = a1 + (n-1)d 和求和公式 Sn = n/2 * (2a1 + (n-1)d)(等差),以及 an = a1 * q^(n-1) 和 Sn = a1(1-q^n)/(1-q)(等比,q≠1)。如果结果和课本不一致,常见原因:1)课本用了另一种等价形式(如等比求和公式分 q=1 和 q≠1 两种情况);2)输入顺序错了;3)项数 n 包含首项,有些题目项数要减 1。建议先拿一个简单例子(如首项 1、公差 1、项数 3)验证结果是否为 6。
不能直接算无穷项和。本工具只支持有限项输入(项数最大支持 1000 项)。如果需要计算无穷等比级数的和(公比绝对值小于 1 时),可以手动输入一个足够大的项数(比如 1000)近似结果,但注意当公比接近 1 时,1000 项可能仍有较大误差。严格计算无穷和请使用专门的级数计算工具。
当结果超过 9999999 时,本工具会自动切换为科学计数法显示(如 1.23e+8),这是为了保持界面整洁。你仍然可以复制这个科学计数法数值用于后续计算。如果不想看到科学计数法,可以尝试减小项数或输入较小的数字。底层计算精度不受影响,只是显示格式变了。
可以。本工具提供“任意项”模式,输入首项、公差/公比和想查的项数(比如 100),直接输出第 100 项的值,不展示中间项。如果你需要同时查看通项和求和结果,可以先用“通项”模式算第 100 项,再切到“求和”模式算前 100 项和,两个功能互不干扰。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。