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条)

报告相同问题?

悬赏问题

  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历