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

Python实现系数矩阵运算时while循环无法遍历i值问题求助

问题原因

你写的return sum_i语句缩进错误,被包含在了while循环的内部逻辑里:第一次循环执行完累加、i自增后,函数就会直接返回结果,自然不会执行后续的循环。另外你定义的M矩阵只有3行,循环上限写5会触发数组越界错误。

修复方法

调整return的缩进位置到循环外,同时把循环上限改为3即可:

def T(p,q):
    sum_i = 0
    i = 1
    while i <=3: # 匹配矩阵行数,修改上限为3
        sum_i = sum_i + ((M1(i)*p**M2(i))*((1-p)**M3(i))*(q**M4(i))*((1-q)**M5(i)))
        i = i +1
    return sum_i # 缩进调整到和while同级,循环结束后再返回

更优的求解方案

你目前写5个独立函数取矩阵元素的写法冗余度很高,可以直接用numpy的向量化运算一次性完成所有计算,不需要手动写循环,逻辑更清晰也不容易出错:

import numpy as np

# 全局只定义一次矩阵即可,不需要重复创建
M = np.array([[1,3,0,4,0,0],[3,3,1,4,0,0],[4,4,0,3,1,0]])

def T(p,q):
    # 按列取所有行的参数,批量计算每一项后直接求和
    items = M[:,0] * (p ** M[:,1]) * ((1-p) ** M[:,2]) * (q ** M[:,3]) * ((1-q) ** M[:,4])
    return items.sum()

print(T(0.6,0.45))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:24:02