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

Octave代码与赋值方程关联理解及100阶矩阵构造问题求助

问题拆解与实操解决方案

一、构造100×100矩阵A和列向量b

先从最基础的单位矩阵说起:你提到的$I_{ij}$(100×100单位矩阵),在Octave里一行代码就能生成:

I = eye(100);  # 主对角线全1,其余元素为0的矩阵

假设题目是常见的线性方程组迭代场景(毕竟用到了Gauss-Seidel),比如要求A是三对角矩阵(离散二阶微分方程的典型形式),结合单位矩阵的构造逻辑,我给你举个具体的实现例子:

假设题目定义A满足:主对角线元素为4,上下相邻次对角线为-1,其余为0;b是全1列向量
对应的Octave代码:

n = 100;
# 构造矩阵A
A = 4 * eye(n);  # 先基于单位矩阵设置主对角线为4
for i = 1:n-1
    A(i, i+1) = -1;  # 填充右上相邻元素
    A(i+1, i) = -1;  # 填充左下相邻元素
endfor

# 构造列向量b
b = ones(n, 1);  # 生成100×1的全1列向量
# 如果题目有特殊边界值,比如第一个元素为10,最后一个为20,直接修改:
b(1) = 10;
b(end) = 20;

如果题目里A的定义是和单位矩阵直接组合(比如$A = 3I + B$,B是其他矩阵),你只需要替换系数和补充B的构造逻辑就行,核心思路都是用eye()生成单位矩阵,再通过索引赋值调整元素。

二、Octave代码与Gauss-Seidel赋值方程的对应关系

Gauss-Seidel的核心迭代公式是:
$$x_i^{(k+1)} = \frac{1}{A_{ii}} \left( b_i - \sum_{j=1}^{i-1} A_{ij}x_j^{(k+1)} - \sum_{j=i+1}^{n} A_{ij}x_j^{(k)} \right)$$
我把这个公式和Octave代码逐部分对应,你一看就懂:

一段典型的手动实现Gauss-Seidel代码:

n = 100;
x = zeros(n, 1);  # 初始化解向量为全0
max_iter = 1000;
tol = 1e-6;  # 收敛阈值

for iter = 1:max_iter
    x_old = x;  # 保存上一轮的解,用于计算未更新的元素
    for i = 1:n
        sum_updated = 0;
        # 计算已更新的前半部分(j < i,用当前轮的x值)
        for j = 1:i-1
            sum_updated += A(i,j) * x(j);
        endfor
        
        sum_old = 0;
        # 计算未更新的后半部分(j > i,用上一轮的x_old值)
        for j = i+1:n
            sum_old += A(i,j) * x_old(j);
        endfor
        
        # 对应公式的赋值操作
        x(i) = (b(i) - sum_updated - sum_old) / A(i,i);
    endfor
    
    # 判断是否收敛
    if norm(x - x_old) < tol
        fprintf('迭代收敛,共%d轮\n', iter);
        break;
    endif
endfor

这里的代码完全复刻了数学公式:

  • sum_updated对应公式里的$\sum_{j=1}^{i-1} A_{ij}x_j^{(k+1)}$,因为循环到i时,j<i的x已经被当前轮更新过了
  • sum_old对应$\sum_{j=i+1}^{n} A_{ij}x_j^{(k)}$,用x_old保存上一轮的解,确保取到未更新的值
  • 最后一行赋值和公式完全一致,只是把数学符号换成了Octave的变量名

如果你的讲师给的是封装好的函数,你可以用edit 函数名打开查看内部逻辑,本质还是围绕这个迭代公式展开的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:04:13