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

Julia迭代运算中矩阵赋值后同步变动问题如何解决

问题原因

Julia 中的矩阵属于可变复合类型,直接使用 = 赋值时不会拷贝值,只会让两个变量指向同一块内存地址。你执行 V = V_new 后,V 和 V_new 本质是同一个矩阵的不同名字,后续修改 V_new 的元素时,V 的值自然也会同步变化,和你的预期逻辑不符。

解决方法

把赋值行修改为值拷贝即可,常用有三种方案,按需选择:

  • 普通数值矩阵用浅拷贝即可,语法最简单:V = copy(V_new)
  • 矩阵元素是引用类型(比如嵌套数组、自定义结构体)时用深拷贝:V = deepcopy(V_new)
  • 不需要新开内存,直接覆盖原有 V 的元素,性能最优,要求两个矩阵尺寸一致:V .= V_new

修改后的完整代码

dif = 1.0
it = 0
itmax = 2
V = [1 1 ; 1 1]
V_new = [1 1 ; 1 1]
# Iteration
while it < itmax
    it = it+1
    println(it)
    V = copy(V_new)  # 仅修改这一行即可,也可替换为 V .= V_new
    for i in 1:2
        for j in 1:2
            V_new[i,j] = 1 + V_new[i,j]
        end
    end
    dif = maximum(abs.(V-V_new))
    println(V)
    println(V_new)
end

运行结果验证

修改后输出会和你的预期一致:

1
[1 1; 1 1]
[2 2; 2 2]
2
[2 2; 2 2]
[3 3; 3 3]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:54:04