Czy wyniki są równe?

0

Cześć,
Mam takie działanie:
A + B * (C - d)) / E

gdzie jedyną zmienną jest d, a pozostałe parametry to stałe. Zastanawiam się czy jak policzymy to równanie kilkadziesiąt razy dla różnych wartości d to czy średnia wyniku:
AVG(A + B * (C - d)) / E)

będzie równa wynikowi działania policzonemu tylko raz, ale dla średniej wartości zmiennej d?
A + B * (C - AVG(d))) / E

1

To czemu się zastanawiasz zamiast policzyć?

0

Bo mam kilka różnych równań i liczę na to, że ktoś zna jakąś zasadę którą można wszędzie zastosować. Taki jeden konkretny przypadek to tylko przykład dla którego wiem tylko na podstawie obserwacji kiedy strony są równe.

0

Jak liczysz na komputerze to podlegasz pod błędy numeryczne. W zależności od wielkości względnej parametrów A, B, C i d wyniki mogą być w widoczny sposób różne.

0

Oprócz błędów zaokrągleń, kompilator może zrobić jakąś optymalizację i będziesz w runtime miał coś w stylu: alfa + beta*d

0

Z matematycznego punktu widzenia średnia arytmetyczna jest operatorem liniowym, więc:
AVG(ax + b) = a * AVG(x) + AVG(b) = a * AVG(x) + b
Dla a i b stałych. Czyli w Twoim przypadku:
AVG(A + B * (C - d) / E) = A + AVG(B * (C - d) / E) = A + B * AVG(C - d) / E = A + B * (C - AVG(d)) / E
Więc tak, możesz tak zrobić. Oczywiście pozostaje jeszcze kwestia błędów działań na floatach, tak jak wspomnieli inni.

0

Napisz pętlę np. od 0 do 100, która wylosuje losowe wartości. W output powinny znaleźć się dane sformatowane np. tak: Dla if'a kolor zielony, a dla else kolor różowy. Mogłoby to wyglądać np. tak:

<?php
if(A+B==avg(A+B+$d)) {
   echo '<span style="color:green;">'.A+B.'=='.avg(A+B+$d).'</span>';
}else {
   echo '<span style="color:pink;">'.A+B.'!='.avg(A+B+$d).'</span>';
}
?>

Czego ma być średnia, bo źle nawiasy domknąłeś?

Czy oto Ci chodzi: ((A + B * (C - d))*1/2) / E ?
A tego: (A + B * (C - d*1)) / E , to już nie rozumiem. Nie rozumiem, ponieważ średnia z tej samej liczby to jest tyle samo przecież. avg(5) = 5, bo to inaczej takie działanie: (5+0)/1=5.

1 użytkowników online, w tym zalogowanych: 0, gości: 1