首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JS中二维数组的赋值解决思路

2014-01-06 
JS中二维数组的赋值试着写一个矩阵的LU分解,浏览器报错为 Uncaught TypeError: Cannot set property 0 o

JS中二维数组的赋值
试着写一个矩阵的LU分解,浏览器报错为 Uncaught TypeError: Cannot set property '0' of undefined
查了一些目前还不能解决,猜着是自己对数组的操作不懂
希望路过的您指点一下,谢谢!

<!DOCTYPE html>
<html>
<head>
    <title>习题2-矩阵LU分解</title>
</head>
<body>

<p id="myA">原矩阵为</p>
<p id="resultL">L为</p>
<P id="resultU">U为</P>
<script>
    //输入数组
    var myMatrix = [
       [2,2,3],
       [4,7,7],
       [-2,4,5]
    ];
    var myLength = myMatrix.length;
    var l= new Array(myLength);
    var u = new Array(myLength);

    //计算
    for(j=0;j<myLength;j++){
        u[0][j] = myMatrix[0][j];//报错行
    }

    for(k=1;k<myLength;k++){
        l[k][0] = myMatrix[k][0]/u[0][0];
    }

    for(i=1;i<myLength;i++){
        //求Uij
        for(j=i;j<myLength;j++){
            //求和Lit*Utj
            for(t=0;t<i-1;t++){
               var tmp =0;
               tmp = tmp + l[i][t]*u[t][j];
            }
            u[i][j] = a[i][j]-tmp;
        }

        //求Lki
         for(k=i+1;k<myLength;k++){
             //
             for(t2=0;t2<i-1;t++){
                var tmp2 = 0;
                 tmp2 = tmp2 + l[k][t2]*u[t2][j];
             }

             l[k][i] = 1/u[i][i]*(a[k][i] - tmp2);
         }
    }

    document.getElementById("myA").innerHTML = myMatrix;
    document.getElementById("resultL").innerHTML = l;
    document.getElementById("resultU").innerHTML = u;
</script>

</body>
</html>

[解决办法]
u[0] = new Array();//这里该一下
    for(j=0;j<myLength;j++){
        u[0][j] = myMatrix[0][j];//报错行
    }
    for(k=1;k<myLength;k++){
l[k] = [];//这里改一下。同时,为啥k是从1开始的?
        l[k][0] = myMatrix[k][0]/u[0][0];
    }


后面的a数组没有看到,你自己测试再改动下。
[解决办法]
一维数组不能当做二维数组使用
var u = new Array(myLength);一维数组
u[0][j] = myMatrix[0][j];当做二维数组使用了
l一样
a哪来的

热点排行