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

如何在wxMaxima中计算指定任务的月供及利率调整后的新月供

解决可变利率抵押贷款的wxMaxima计算方案

一、计算初始月供

你的AIPV公式对应普通年金现值(每月月末还款,现值等于贷款本金),因此我们可以通过令贷款本金等于AIPV(A, r, t, m),解方程求月供A。

wxMaxima代码实现

/* 定义已知参数 */
PV: 130000;          /* 贷款本金 */
r1: 0.0949;          /* 初始年利率 */
t_total: 10;         /* 总贷款年限 */
m: 12;               /* 每年还款次数(复利频次) */
n_total: t_total * m;/* 总还款期数 */

/* 利用AIPV公式建立方程:贷款本金 = 年金现值 */
eq1: PV = AIPV(A, r1, t_total, m);

/* 解方程求初始月供A */
solve(eq1, A);

/* 提取数值结果(可选,直接计算精确值) */
A_initial: float(rhs(first(solve(eq1, A))));

运行后得到的初始月供数值,应与你Excel计算结果一致。

二、利率调整后的新月供计算

利率调整的核心是先算出调整日的剩余贷款本金,再用剩余本金、新利率、剩余还款期数重新计算月供。

步骤1:确定时间节点与已还款期数

贷款6月1日办理,每月月末还款,3月1日调整利率时,已完成9期还款(从6月末到2月末),剩余还款期数为n_remaining = n_total - 9 = 120 - 9 = 111。

步骤2:计算调整日的剩余本金

两种等效方法可选:

方法1:终值法

n_paid: 9;                   /* 已还款期数 */
rhs_total: PV*(1 + r1/m)^n_paid;  /* 本金复利到调整日的终值 */
payment_fv: ADFV(A_initial, r1, n_paid/m, m);  /* 已还款的年金终值 */
PV_remaining: float(rhs_total - payment_fv);    /* 剩余本金 */

方法2:现值法(更简洁)

PV_remaining: float(AIPV(A_initial, r1, 111/12, m));

步骤3:用新利率计算新月供

新年利率r2 = 0.0949 - 0.02 = 0.0749,剩余期限为111/12年,再次用AIPV公式解方程:

r2: 0.0749;                  /* 调整后的年利率 */
t_remaining: 111/12;         /* 剩余贷款年限 */

/* 建立方程:剩余本金 = 新月供的年金现值 */
eq2: PV_remaining = AIPV(A_new, r2, t_remaining, m);

/* 解方程求新月供 */
solve(eq2, A_new);

/* 提取数值结果 */
A_new: float(rhs(first(solve(eq2, A_new))));

关键说明

  • 你的年金公式已覆盖所需的现值/终值计算,核心是理解利率调整时的剩余本金是连接两个阶段的关键。
  • 确认时间节点时,注意利率调整日(3月1日)在当月还款(3月末)之前,因此首次按新利率还款为3月末,剩余期数需准确对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 04:44:58