2011-10-30 109 views
0
// Write a program to calculate the innerproduct of two arrays (ip of v,w = sum, for all i, of vi*wi) 

var v = [1, 2, 3, 'x']; 
var w = [1, 2, 3, 4]; 
vSum_total = 0; 
wSum_total = 0; 

// calculate sum of v 
for(i=0; i<v.length; i++) 
{ 
    if (isNaN(v[i])) 
    v[i] = 0 
    else 
    vSum_total += Number(v[i]); 
} 

// calculate sum of w 
for(i=0; i<v.length; i++) 
{ 
    if (isNaN(v[i])) 
    v[i] = 0 
    else 
    wSum_total += Number(w[i]); 
} 

alert ("Total of v: " + (vSum_total)); 
alert ("Total of w: " + (wSum_total)); 
alert ("Inner product: " + (vSum_total * wSum_total)); 

我試圖計算一個數組的內積,但是我的結果不是提示。任何提示正確的方向將非常感激!計算陣列的內積

+2

愚蠢的問題:是'vSum_total'初始化爲值'1'? –

+2

順便說一句,計算'內積'需要兩個向量,而不是一個 –

+2

什麼是'vSum'?你的意思只是'v' –

回答

3

由於VSUM開始爲0,當通過任意數量乘以它保持0

+0

'vsum'確實從0開始。但是OP使用'vSum_total'。 –

+0

這是假設vsum_total是vsum,並且您將v [i]添加到總數而不是vsum [i]。 – NickLH

+0

代碼沒有意義,否則... – NickLH

2
var vSum = 1; 

var v = []; 
v[0] = parseInt(prompt("v0:")); 
v[1] = parseInt(prompt("v1:")); 
v[2] = parseInt(prompt("v2:")); 
v[3] = parseInt(prompt("v3:")); 

// calculate ip of v 
for(i = 0; i < v.length; i++) 
{ 
    vSum *= v[i]; 
} 

alert(vSum); 
+1

解釋比代碼轉儲更好。代碼片段是修飾帖子的好方法,但解釋OP做錯了什麼是提供答案的最佳方式。 –

+0

是的,我應該添加一個解釋。 – michaeljdennis

1

vSumv(或反之亦然)。

您正在嘗試使用像數組這樣的整數,因此腳本正在中止。

打開調試器。

+0

更何況vSum_total是什麼?這是甚至在任何地方定義。 – Joe

+0

@IAbstractDownvoteFactory:的確 –