2014-10-07 26 views
0

我有一個等式表示了這樣的:求解第一度方程 - 代碼優化

general equation

其中A和X是數字的兩個向量和N> 2的用戶輸入(每次都不同),而G是一個數字常量,Y是我想找到的變量。 使一些計算,我想說的解決方案可能是(它的測試)概括如下:

general formula

因此,這裏是我的問題。當前求解方程的代碼是使用二分法,即它通過以迭代方式替換公式中的值來估計Y的值,直到表達式的全局值足夠接近0(無法訪問代碼,所以我不能說關於中斷級別或其結構的附加信息,不幸的是)。

但是,我在考慮實現一個計算代碼的代碼,如上面的解決方案(第二個公式)所示。這是我的嘗試:

num = 0 
den = 0 
For j = 1 To N 
    prods = 1 
    For k = 1 To N 
     If k <> j Then 
      prods = prods * X(k) 
     End If 
    Next k 
    num = num + prods 
    den = den + (prods/A(j)) 
Next j 
Y = num/den 

從來沒有研究過任何計算機科學,所以我不能夠評估自己這個方法w.r.t.質量經典的二分之一。 任何人都可以請給我一個關於如何理解兩個代碼中的哪一個更好地工作的提示,並且如果可能的話有一些解釋?提前致謝。

注意:不能提供足夠的信息進行正確的分析我不希望有任何詳細的結果。我只是想獲得一些專家「第一眼」的意見,是我不是你一個:)

+0

是有一些原因,你不使用公式'Y = sum_j(1/X(j))/ sum_j(1 /(A(j)* X(j)))'? – 2014-10-07 17:23:58

+0

在總和本身內部進行底部總和劃分,所以我認爲你說的劃分在數學上是不可行的。 N = 2時的示例: 'y = [x(1)+ x(2)]/[[x(2)/ A(1)] + [x(1)/ A(2)]]。 – 2014-10-07 17:32:10

+0

我在第一個評論中錯誤地使用了不到一分鐘的公式,但是現在的那個公式是通過用右邊的分子和分母除以product_j X(j)來得到的。 – 2014-10-07 17:35:04

回答

1

鴻溝分子和解決方案的分母由product_j X(j)得到公式

 N 
     --- 1 
     \ ---- 
    / X(j) 
     --- 
     j=1 
Y = -------------- , 
    N 
    ---  1 
    \ --------- 
    / A(j) X(j) 
    --- 
    j=1 

它可以在線性時間內直接進行評估,使用大約一樣多的操作來評估第一個等式的左手邊,這是平分的一次迭代的大部分。模數潛在的數字精度問題的可能性,我會說,直接法優於平分法。

+0

非常感謝,我已經測試並意識到你是對的。對於數據進入函數的方式,我會說你的方法只需要N次迭代,不能想象一個更快的方法! – 2014-10-08 08:41:16

1

我得到簡化,該解決方案

enter image description here

它解決了

enter image description here

隨着平凡解

Sub Main() 

    Dim A() As Double, X() As Double 
    Dim j As Integer, N As Integer = ... 

    A = New Double(N) {...} 
    X = New Double(N) {...} 

    Dim num As Double = 0, den As Double = 0 

    For j = 1 To N 
     num = num + 1/X(j) 
     den = den + 1/(A(j) * X(j)) 
    Next 

    Dim Y = num/den 

End Sub 
+0

謝謝你ja72,爲了公平起見,我首先批准了David的回答。謝謝! – 2014-10-08 08:42:04