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

Python矩阵方程求解:K与b生成函数维度不匹配问题排查

适配4x1输入数组的F=Kx-b矩阵生成函数修复

需求说明

要将方程写成矩阵形式F = Kx - b,编写函数接收长度为4的一维数组ki和Li作为输入,返回对应的矩阵K和数组b。

现有代码

import numpy as np
import random
from scipy import linalg
import numpy.linalg as np_linalg
import scipy.linalg as sp_linalg

def matrixform(ki, Li):
    K=np.zeros((len(ki),len(ki))) #empty matrices
    b=np.zeros(len(ki))
    for i in range(len(ki)): #filling in the k matrix
        for j in range(len(ki)):
            if i == j:
                K[i][j]=sum(ki[i:]*Li[i+1:])
            else:
                K[i][j]=ki[j]*Li[i+1]*np.exp(-sum(ki[i+1:j]*Li[i+1:j+1]))

    for i in range(len(ki)): #filling in b vector
        b[i]=ki[i]*Li[i]

    return K, b

问题描述

当前代码仅能在ki为4x1、Li为3x1时正常运行,当ki和Li都为4x1时,抛出如下错误:

ValueError: operands could not be broadcast together with shapes (4,) (3,)

问题原因

  1. i==j时的切片不匹配:当i=0时,ki[i:]是长度4的数组,Li[i+1:]是长度3的数组,numpy数组相乘要求形状匹配,广播失败。
  2. else分支的切片长度差1:当j>i时,ki[i+1:j]的长度为j-i-1,而Li[i+1:j+1]的长度为j-i,两者长度不一致,导致相乘报错。

修复后的代码

import numpy as np

def matrixform(ki, Li):
    n = len(ki)
    # 校验输入长度一致
    if len(Li) != n:
        raise ValueError("ki和Li必须为长度相同的一维数组")
    
    K = np.zeros((n, n))
    b = np.zeros(n)
    
    for i in range(n):
        for j in range(n):
            if i == j:
                # 调整切片确保数组长度匹配,最后一个索引直接赋值0
                K[i][j] = np.sum(ki[i+1:] * Li[i+1:]) if i < n-1 else 0
            else:
                if j > i:
                    # 修正Li切片范围,与ki子数组长度对齐
                    segment_sum = np.sum(ki[i+1:j] * Li[i+1:j])
                    K[i][j] = ki[j] * Li[i+1] * np.exp(-segment_sum)
                else:
                    # j < i时默认赋值0,可根据实际物理逻辑修改
                    K[i][j] = 0
    
    for i in range(n):
        b[i] = ki[i] * Li[i]
    
    return K, b

修复说明

  • 增加输入长度校验,提前明确报错,避免后续隐式错误。
  • 修正i==j时的切片逻辑,让ki[i+1:]和Li[i+1:]长度一致,解决广播问题;最后一个索引位置直接设为0,符合空元素求和的预期。
  • 调整j>i时的Li切片为Li[i+1:j],与ki[i+1:j]长度完全匹配,消除形状不兼容问题。
  • 补充j<i时的处理逻辑(默认设为0,可根据实际物理模型调整)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:17:51