You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Maxima输出简洁十进制方程解?求解结果解读

Maxima配置:获取简洁十进制解

问题场景

1. 求解指数n时输出无意义等式

使用公式 (K_n = K_0*(1+r)^n),输入代码:

float (solve (575.12=550*(1+0.015)^n))

得到输出:

[203.0^n=1.045672727272727*200.0^n]

已知正确解为3,但无法通过该输出得到结果。

2. 求解r时返回冗余复数解

输入代码:

solve (1905.01=1400*(1+r)^12), numer

得到冗长结果;改用float():

float (solve (1905.01=1400*(1+r)^12));

虽得到正确解r≈0.026,但结果包含11个额外的复数根,仅需有效正实数解。

运行环境

wxMaxima: 19.05.7
wxWidgets: 3.1.2
Unicode Support: yes
Maxima version: 5.43.0 (x86_64-apple-darwin13.4.0)
Lisp: SBCL 1.5.3

解决方案

针对指数n的求解

Maxima的solve函数对指数方程的符号处理能力有限,推荐两种直接获取数值解的方式:

  • 对数转换直接计算:利用指数转对数的数学原理,直接计算结果
float(log(575.12/550)/log(1+0.015));

执行后直接返回3.0。

  • 数值根查找:使用find_root函数定位根的范围,快速得到解
find_root(550*(1+0.015)^n - 575.12, n, 0, 10);

返回精确的数值解3.0。

针对r的求解

solve会返回多项式的所有根(包括复数根),只需筛选正实数根即可:

  • 用realroots直接获取实数根:
realroots(1905.01=1400*(1+r)^12);
float(%);

仅返回实数根,再转为浮点数得到简洁结果。

  • 从解集中筛选正根:
    先获取所有解,再过滤出符合条件的有效根:
solutions: float(solve(1905.01=1400*(1+r)^12));
[r_sol] : [s for s in solutions if is(r>0) and is(realpart(r)>0)];

执行后得到唯一有效正根r≈0.026。

全局输出优化配置

若需要默认输出简洁的十进制数,可设置以下全局参数:

/* 设置浮点数输出精度(比如保留4位小数) */
fpprintprec: 4;
/* 让所有计算默认启用数值求解 */
numer:true;

注意:numer:true会让所有运算默认转为数值解,如需保留符号运算能力,可按需开启或关闭。

内容的提问来源于stack exchange,提问作者dotnetCarpenter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 09:43:22