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

R语言下三角线性方程组求解程序通用版本报错求助

下三角矩阵求解函数的错误分析与修正

你的通用版本Lsolve无法正常运行的核心问题出在循环内的求和逻辑上:

  • 原代码中sum(L[i,i-1]*b[i-1])只计算了第i行第i-1列元素与b[i-1]的乘积,漏掉了第i行前i-2个元素(即L[i,1]到L[i,i-2])与对应b[1]到b[i-2]的乘积项。下三角矩阵的前向替换需要累加第i行所有左侧非零元素(从第1列到第i-1列)与已求解的b[1]到b[i-1]的乘积,而不是仅最后一项。

修正后的代码

Lsolve <- function(L,b) {
    # 输入合法性检查
    if (nrow(L) != ncol(L)) stop("L必须是方阵")
    if (length(b) != nrow(L)) stop("b的长度必须与L的行数一致")
    
    # 前向替换计算
    b[1] <- b[1] / L[1,1]
    for(i in 2:nrow(L)) {
        # 取第i行前i-1个元素,与对应已求解的b值相乘后求和
        b[i] <- (b[i] - sum(L[i, 1:(i-1)] * b[1:(i-1)])) / L[i,i]
    }
    return(b)
}

测试验证

用你之前的3×3矩阵场景验证:

# 构造3x3下三角矩阵
L <- matrix(c(2,0,0,
              1,3,0,
              4,2,5), nrow=3, byrow=TRUE)
b <- c(4, 10, 22)

# 修正后函数求解
Lsolve(L, b) # 输出:[1] 2 2 2
# 原3x3版本求解
L3solve(L, b) # 输出一致:[1] 2 2 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:15:31