Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Lukujono

Matso [19.05.2008 17:23:19]

#

Ei ny ajatus oikeen kulje.. tällanen lukujono juttu. Eli otetaan joku luku, vaikka numero 1. No sitten pitäs saaha siitä lukujono, joka vähenee aina tietyllä määrällä tai prosentuaalisella osuudella (ihan sama kummin) ja että siitä tulis yhteensä se alkuperäinen luku. Siis esim.

Alkup. luku: 1

Lukujono: 0.4 + 0.3 + 0.2 + 0.1 = 1

Ton nyt sain ilman kaavoja kehitettyä, mutta miten saisin nyt vaikka tosta ykkösestä vastaavan lukujonon, niin että noita lukuja summattais vaikka sata yhteen.

hunajavohveli [19.05.2008 17:57:28]

#

Kun lasketaan yhteen n lukua, joista ensimmäinen on a, ja erotus kahden peräkkäisen luvun välillä on d, summa saadaan kaavalla:

n * (2a + (n - 1)d) / 2.

Jos summa on 1, n on 100 ja a yhtä kuin d, saadaan yhtälö:

100 * (d + 100d) / 2 = 1
5050d = 1

Mistä saadaan d = 1 / 5050.

Lukujono on siis 1 / 5050, 2 / 5050, 3 / 5050, ..., 100 / 5050, ellen aivan pahasti laskenut jossain pieleen.

Edit: Viilasin ensimmäistä kaavaa, se ei ollut äsken aivan yleisessä tapauksessa pätevä.

Chiman [19.05.2008 18:17:53]

#

def sum_series(target, n, step):
    average = target / n
    if n % 2:
        first = average - (step * (n - 1) / 2)
    else:
        first = average - (step * n / 2) + 0.5 * step
    return [first + x * step for x in range(n)]

def print_sum(items):
    print ' + '.join('%.1f' % x for x in items), '=', sum(items)

# tulostaa: 0.1 + 0.2 + 0.3 + 0.4 = 1.0
print_sum(sum_series(1.0, 4, 0.1))

# tulostaa: 6.7 + 7.0 + 7.3 + 7.6 + 7.9 + 8.2 + 8.5 = 53.0
print_sum(sum_series(53.0, 7, 0.3))

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta