J'ai 2 tableaux de doubles de la même longueur. Le tableau a est rempli de certaines données, le tableau b doit être calculé.Puis-je calculer un élément sans boucler tous les éléments précédents dans mon cas (voir le corps de la question)?
Chaque élément du tableau b est égal à une valeur correspondante du tableau a plus une somme pondérée de tous les éléments précédents dans le tableau b.
Une somme pondérée est calculée en additionnant tous les éléments multipliés par un coefficient égal à sa distance de l'élément courant que nous calculons divisé par le nombre d'éléments du sous-ensemble précédent.
Pour implémenter cela, je boucle tout le sous-ensemble précédent pour chaque élément que je calcule.
Est-ce que cela peut être optimisé? Je n'ai pas assez de compétences en maths, mais je suppose que je ne pourrais utiliser que le premier élément précédent pour calculer chaque prochain car chaque élément est déjà dérivé de l'ensemble précédent et contient toutes les informations déjà pondérées. Peut-être que je peux juste ajuster la formule de poids et obtenir le même résultat sans boucle de deuxième niveau?
Cela semble être un exemple dans Scala (je ne suis pas sûr si c'est correct: -]). Comme le projet réel utilise des indices négatifs, traitez un (1) et un (2) comme un précédent (0) en fonction de la tâche écrite ci-dessus.
import scala.Double.NaN
val a = Array[Double] (8.5, 3.4, 7.1, 5.12, 0.14, 5)
val b = Array[Double] (NaN, NaN, NaN, NaN, NaN, 5)
var i = b.length - 2
while (i >= 0) {
b(i) = a(i) + {
var succession = 0.0
var j = 1
while (i + j < b.length) {
succession += b (i+j) * (1.0-j.toDouble/(b.length - i))
j += 1
}
succession
}
i -= 1
}
b.foreach((n : Double) => println(n))
Le code ne semble pas correct, même s'il semble être syntaxiquement correct. Au lieu du code, fournissez un exemple: ce qu'est l'entrée, quelle est la sortie et la formule pour chaque élément de la sortie. –