c200421050120 2009-12-28 14:02
浏览 184
已采纳

请教一个二维数组数学模型的求解

已知二维数组 W(0),W(1)。
求解W(n+1)=W(n)+a*(W(n)-W(n-1)).
.......
.......
W1=W;

for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
W[i][j]=W[i][j]+a*(W[i][j]-W0[i][j]);
}
}
W0=W1;
..........

我写了上述的代码,可结果怎么也不正确,好像是W0=W1出了问题,W0的新值不是原来W 赋予W1 的值,而是计算后新的W值。

本人学Java时间还不长,现急着要用Java作一个数学模型,哪位高人了解,请予以指教,我非常感激!!

  • 写回答

2条回答 默认 最新

  • JavaHero080 2009-12-29 08:09
    关注

    数组本身是一个特殊的对象,而java里的对象都是引用赋值。
    所以,W0 = W1 是让W0成了W1数组的引用,原来的W0数组啥的都变。此时对新的W0做操作,同时也就改变了W1(因为它们此时是同一个东西的引用)。
    要想把W1中的值赋给W0,写循环一个一个赋值。

    建议代码:
    [code="java"]
    int MAX; // 表示最大的n,记得给个值。
    int SIZE; // 表示矩阵的大小,记得给个值。

    // ...

    // 用三维数组,W[0]就是第一个矩阵,W[1]就是第二个。。。
    int[][][] W = new int[][][MAX];

    for (int k = 0; k < MAX; k++) {
    W[k] = new int[SIZE][SIZE];
    if (k == 0) {
    // 在这里给W[0]初值
    // ...
    } else if (k == 1) {
    // 在这里给W[1]初值
    // ...
    }

    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j < SIZE; j++) {
            // 在这里实现你的递推公式
            W[k][i][j] = W[k - 1][i][j]
                + a * (W[k - 1][i][j] - W[k - 2][i][j]);
        }
    }
    

    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!