Mathématiques flop compter de la colonne de secours sur la fonction de substitution ( Julia )

0

La question

Je suis nouveau à l'Algèbre Linéaire et de l'apprentissage sur triangulaires systèmes mis en place en Julia lang. J'ai un col_bs fonction de() , je vais montrer ici que j'ai besoin de faire des mathématiques flop comte de. Il n'a pas à être super technique, c'est à des fins d'apprentissage. J'ai essayé de rompre la fonction vers le bas, en interne, je boucle extérieure et j en boucle. Entre les deux est un nombre de chaque FLOP , ce qui je suppose est inutile, puisque les constantes sont généralement chuté de toute façon.

Je connais aussi la réponse doit être N^2 depuis sa une version inversée de la avant la substitution de l'algorithme qui est N^2 flops. J'ai essayé de mon mieux pour tirer cette N^2 comte mais quand j'ai essayé j'ai fini avec une étrange Nj comte. Je vais essayer de fournir tout le travail que j'ai fait! Merci à toute personne qui aide.

function col_bs(U, b)


n = length(b)
x = copy(b)

for j = n:-1:2
    if U[j,j] == 0
        error("Error: Matrix U is singular.")
    end
        x[j] = x[j]/U[j,j] 
        
        for i=1:j-1
        x[i] = x[i] - x[j] * U[i , j ]
        end
end

x[1] = x[1]/U[1,1]
 

return x
end

1: To start 2 flops for the addition and multiplication x[i] - x[j] * U[i , j ]

The $i$ loop does: $$ \sum_{i=1}^{j-1} 2$$

2: 1 flop for the division $$ x[j]  / = U[j,j] $$
3: Inside the for $j$ loop in total does: $$ 1 + \sum_{i=1}^{j-1} 2$$
4:The $j$ loop itself does:$$\sum_{j=2}^n ( 1 + \sum_{i=1}^{j-1} 2)) $$
5: Then one final flop for $$  x[1] = x[1]/U[1,1].$$

6: Finally we have 
$$\\ 1 + (\sum_{j=2}^n ( 1 + \sum_{i=1}^{j-1} 2))) .$$

Which we can now break down.

If we distribute and simplify
$$\\ 1 + (\sum_{j=2}^n + \sum_{j=2}^n \sum_{i=1}^{j-1} 2) .$$

We can look at only the significant variables and ignore constants,

$$\\
  \\ 1 + (n + n(j-1)) 
  \\ n + nj - n
  \\ nj
$$

Ce qui signifie donc que si l'on ignore les constantes de la plus haute possibilité de flops pour cette formule serait de $n$ ( qui peut être une allusion à quoi de mal avec ma fonction, car il doit être $n^2$, tout comme le reste de nos systèmes triangulaires je crois)

Function picture

Proof picture 1

Proof picture 2 and conclusion

1

La meilleure réponse

2

Réduire votre code de ce formulaire:

for j = n:-1:2
   ...
   for i = 1:j-1
      ... do k FLOPs
   end
end

La boucle interne prend k*(j-1) flops. Le coût de la boucle externe est donc

\sum_{j=2}^n k (j-1)

Puisque vous savez que j <= nvous savez que cette somme est inférieure à (n-1)^2 ce qui est suffisant pour big O.

En fait, cependant, vous devez également être en mesure de comprendre que

\sum_{j=1}^n j = n (n+1) / 2

2021-11-16 07:23:40

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................