Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
math_decimal_bernoulli [2010/03/16 11:39] tyrtamos créée |
math_decimal_bernoulli [2010/03/16 14:05] tyrtamos |
||
---|---|---|---|
Ligne 15: | Ligne 15: | ||
* avec < | * avec < | ||
- | * et < | + | * et < |
+ | Dans cette formule: | ||
+ | * < | ||
+ | * < | ||
+ | Mais en quoi cette équation est-elle " | ||
+ | |||
+ | Pour le savoir, développons pour n=3: | ||
+ | |||
+ | * < | ||
+ | |||
+ | Il faudrait donc que l'on puisse calculer < | ||
+ | |||
+ | Mais là, on voit bien le problème: on connait < | ||
+ | |||
+ | Comment? En appliquant la formule pour n=1 et n=2 et, à chaque fois, en calculant le dernier B. | ||
+ | |||
+ | Voilà le code qui fait cela (Python version 2.6): | ||
+ | |||
+ | <code python> | ||
+ | # | ||
+ | # -*- coding: utf-8 -*- | ||
+ | from __future__ import division | ||
+ | |||
+ | from decimal import * | ||
+ | |||
+ | ############################################################################## | ||
+ | def combin(n, k): | ||
+ | """ | ||
+ | if k > n//2: | ||
+ | k = n-k | ||
+ | x = 1 | ||
+ | y = 1 | ||
+ | i = n-k+1 | ||
+ | while i <= n: | ||
+ | x = (x*i)//y | ||
+ | y += 1 | ||
+ | i += 1 | ||
+ | return x | ||
+ | |||
+ | ############################################################################## | ||
+ | def bernoulli(n): | ||
+ | """ | ||
+ | prec = getcontext().prec | ||
+ | getcontext().prec = 100 | ||
+ | B = [Decimal(" | ||
+ | for m in xrange(1, | ||
+ | if m>1 and m%2!=0: | ||
+ | B.append(Decimal(" | ||
+ | else: | ||
+ | c = Decimal(" | ||
+ | for k in xrange(0, | ||
+ | c += Decimal(str(combin(m+1, | ||
+ | B.append(-c/ | ||
+ | getcontext().prec = prec | ||
+ | return float(B[n]) | ||
+ | </ | ||
+ | |||
+ | Pour que les calculs intermédiaires soient corrects, il est important qu'ils soient faits avec un nombre suffisant de chiffres significatifs. Ici, après essais, j'ai pris 100 chiffres! Au delà, on ne gagne plus rien (j'ai essayé avec 400 chiffres). | ||
+ | |||
+ | Dans ce code, j'ai choisi que le résultat soit retourné en flottants. Mais on pourrait facilement continuer les calculs en mode Decimal() si c' | ||
+ | |||
+ | Voilà les résultats: | ||
+ | |||
+ | < | ||
+ | B( 0 ) = 1.0 | ||
+ | B( 1 ) = -0.5 | ||
+ | B( 2 ) = 0.16666666666666666 | ||
+ | B( 3 ) = 0.0 | ||
+ | B( 4 ) = -0.033333333333333333 | ||
+ | B( 5 ) = 0.0 | ||
+ | B( 6 ) = 0.023809523809523808 | ||
+ | B( 7 ) = 0.0 | ||
+ | B( 8 ) = -0.033333333333333333 | ||
+ | B( 9 ) = 0.0 | ||
+ | B( 10 ) = 0.07575757575757576 | ||
+ | B( 11 ) = 0.0 | ||
+ | B( 12 ) = -0.2531135531135531 | ||
+ | B( 13 ) = 0.0 | ||
+ | B( 14 ) = 1.1666666666666667 | ||
+ | B( 15 ) = 0.0 | ||
+ | B( 16 ) = -7.0921568627450977 | ||
+ | B( 17 ) = 0.0 | ||
+ | B( 18 ) = 54.971177944862156 | ||
+ | B( 19 ) = 0.0 | ||
+ | B( 20 ) = -529.12424242424242 | ||
+ | B( 21 ) = 0.0 | ||
+ | B( 22 ) = 6192.123188405797 | ||
+ | B( 23 ) = 0.0 | ||
+ | B( 24 ) = -86580.253113553117 | ||
+ | B( 25 ) = 0.0 | ||
+ | B( 26 ) = 1425517.1666666667 | ||
+ | B( 27 ) = 0.0 | ||
+ | B( 28 ) = -27298231.067816094 | ||
+ | B( 29 ) = 0.0 | ||
+ | B( 30 ) = 601580873.9006424 | ||
+ | B( 31 ) = 0.0 | ||
+ | B( 32 ) = -15116315767.092157 | ||
+ | B( 33 ) = 0.0 | ||
+ | B( 34 ) = 429614643061.16669 | ||
+ | B( 35 ) = 0.0 | ||
+ | B( 36 ) = -13711655205088.332 | ||
+ | B( 37 ) = 0.0 | ||
+ | B( 38 ) = 488332318973593.19 | ||
+ | B( 39 ) = 0.0 | ||
+ | B( 40 ) = -19296579341940068.0 | ||
+ | B( 41 ) = 0.0 | ||
+ | B( 42 ) = 8.4169304757368256e+17 | ||
+ | B( 43 ) = 0.0 | ||
+ | B( 44 ) = -4.0338071854059454e+19 | ||
+ | B( 45 ) = 0.0 | ||
+ | B( 46 ) = 2.1150748638081993e+21 | ||
+ | B( 47 ) = 0.0 | ||
+ | B( 48 ) = -1.2086626522296526e+23 | ||
+ | B( 49 ) = 0.0 | ||
+ | B( 50 ) = 7.5008667460769642e+24 | ||
+ | B( 51 ) = 0.0 | ||
+ | B( 52 ) = -5.0387781014810688e+26 | ||
+ | B( 53 ) = 0.0 | ||
+ | B( 54 ) = 3.6528776484818122e+28 | ||
+ | B( 55 ) = 0.0 | ||
+ | B( 56 ) = -2.8498769302450882e+30 | ||
+ | B( 57 ) = 0.0 | ||
+ | B( 58 ) = 2.3865427499683627e+32 | ||
+ | B( 59 ) = 0.0 | ||
+ | B( 60 ) = -2.1399949257225335e+34 | ||
+ | B( 61 ) = 0.0 | ||
+ | B( 62 ) = 2.0500975723478097e+36 | ||
+ | B( 63 ) = 0.0 | ||
+ | B( 64 ) = -2.0938005911346379e+38 | ||
+ | B( 65 ) = 0.0 | ||
+ | B( 66 ) = 2.2752696488463515e+40 | ||
+ | B( 67 ) = 0.0 | ||
+ | B( 68 ) = -2.6257710286239577e+42 | ||
+ | B( 69 ) = 0.0 | ||
+ | B( 70 ) = 3.2125082102718032e+44 | ||
+ | B( 71 ) = 0.0 | ||
+ | B( 72 ) = -4.1598278166794712e+46 | ||
+ | B( 73 ) = 0.0 | ||
+ | B( 74 ) = 5.6920695482035283e+48 | ||
+ | B( 75 ) = 0.0 | ||
+ | B( 76 ) = -8.2183629419784578e+50 | ||
+ | B( 77 ) = 0.0 | ||
+ | B( 78 ) = 1.2502904327166994e+53 | ||
+ | B( 79 ) = 0.0 | ||
+ | B( 80 ) = -2.001558323324837e+55 | ||
+ | B( 81 ) = 0.0 | ||
+ | B( 82 ) = 3.3674982915364376e+57 | ||
+ | B( 83 ) = 0.0 | ||
+ | B( 84 ) = -5.947097050313545e+59 | ||
+ | B( 85 ) = 0.0 | ||
+ | B( 86 ) = 1.1011910323627977e+62 | ||
+ | B( 87 ) = 0.0 | ||
+ | B( 88 ) = -2.1355259545253502e+64 | ||
+ | B( 89 ) = 0.0 | ||
+ | B( 90 ) = 4.3328896986641194e+66 | ||
+ | B( 91 ) = 0.0 | ||
+ | B( 92 ) = -9.1885528241669332e+68 | ||
+ | B( 93 ) = 0.0 | ||
+ | B( 94 ) = 2.0346896776329074e+71 | ||
+ | B( 95 ) = 0.0 | ||
+ | B( 96 ) = -4.700383395803573e+73 | ||
+ | B( 97 ) = 0.0 | ||
+ | B( 98 ) = 1.1318043445484249e+76 | ||
+ | B( 99 ) = 0.0 | ||
+ | B( 100 ) = -2.8382249570693707e+78 | ||
+ | B( 101 ) = 0.0 | ||
+ | B( 102 ) = 7.4064248979678853e+80 | ||
+ | B( 103 ) = 0.0 | ||
+ | B( 104 ) = -2.0096454802756605e+83 | ||
+ | B( 105 ) = 0.0 | ||
+ | B( 106 ) = 5.6657170050805942e+85 | ||
+ | B( 107 ) = 0.0 | ||
+ | B( 108 ) = -1.6584511154136216e+88 | ||
+ | B( 109 ) = 0.0 | ||
+ | B( 110 ) = 5.0368859950492378e+90 | ||
+ | B( 111 ) = 0.0 | ||
+ | B( 112 ) = -1.5861468237658186e+93 | ||
+ | B( 113 ) = 0.0 | ||
+ | B( 114 ) = 5.1756743617545625e+95 | ||
+ | B( 115 ) = 0.0 | ||
+ | B( 116 ) = -1.7488921840217116e+98 | ||
+ | B( 117 ) = 0.0 | ||
+ | B( 118 ) = 6.1160519994952182e+100 | ||
+ | B( 119 ) = 0.0 | ||
+ | B( 120 ) = -2.2122776912707833e+103 | ||
+ | B( 121 ) = 0.0 | ||
+ | B( 122 ) = 8.2722776798770969e+105 | ||
+ | B( 123 ) = 0.0 | ||
+ | B( 124 ) = -3.1958925111415708e+108 | ||
+ | B( 125 ) = 0.0 | ||
+ | B( 126 ) = 1.2750082223387793e+111 | ||
+ | B( 127 ) = 0.0 | ||
+ | B( 128 ) = -5.2500923086774131e+113 | ||
+ | B( 129 ) = 0.0 | ||
+ | B( 130 ) = 2.2301817894241627e+116 | ||
+ | B( 131 ) = 0.0 | ||
+ | B( 132 ) = -9.7684521930955207e+118 | ||
+ | B( 133 ) = 0.0 | ||
+ | B( 134 ) = 4.409836197845295e+121 | ||
+ | B( 135 ) = 0.0 | ||
+ | B( 136 ) = -2.0508570886464089e+124 | ||
+ | B( 137 ) = 0.0 | ||
+ | B( 138 ) = 9.8214433279791277e+126 | ||
+ | B( 139 ) = 0.0 | ||
+ | B( 140 ) = -4.8412600798208881e+129 | ||
+ | B( 141 ) = 0.0 | ||
+ | B( 142 ) = 2.4553088801480982e+132 | ||
+ | B( 143 ) = 0.0 | ||
+ | B( 144 ) = -1.2806926804084748e+135 | ||
+ | B( 145 ) = 0.0 | ||
+ | B( 146 ) = 6.8676167104668579e+137 | ||
+ | B( 147 ) = 0.0 | ||
+ | B( 148 ) = -3.7846468581969106e+140 | ||
+ | B( 149 ) = 0.0 | ||
+ | B( 150 ) = 2.1426101250665291e+143 | ||
+ | B( 151 ) = 0.0 | ||
+ | B( 152 ) = -1.2456727137183695e+146 | ||
+ | B( 153 ) = 0.0 | ||
+ | B( 154 ) = 7.4345787551000156e+148 | ||
+ | B( 155 ) = 0.0 | ||
+ | B( 156 ) = -4.5535795304641704e+151 | ||
+ | B( 157 ) = 0.0 | ||
+ | B( 158 ) = 2.861211281685887e+154 | ||
+ | B( 159 ) = 0.0 | ||
+ | B( 160 ) = -1.843772355203387e+157 | ||
+ | B( 161 ) = 0.0 | ||
+ | B( 162 ) = 1.2181154536221047e+160 | ||
+ | B( 163 ) = 0.0 | ||
+ | B( 164 ) = -8.2482187185314122e+162 | ||
+ | B( 165 ) = 0.0 | ||
+ | B( 166 ) = 5.7225877937832942e+165 | ||
+ | B( 167 ) = 0.0 | ||
+ | B( 168 ) = -4.0668530525059105e+168 | ||
+ | B( 169 ) = 0.0 | ||
+ | B( 170 ) = 2.9596092064642052e+171 | ||
+ | B( 171 ) = 0.0 | ||
+ | B( 172 ) = -2.2049522565189457e+174 | ||
+ | B( 173 ) = 0.0 | ||
+ | B( 174 ) = 1.6812597072889599e+177 | ||
+ | B( 175 ) = 0.0 | ||
+ | B( 176 ) = -1.3116736213556958e+180 | ||
+ | B( 177 ) = 0.0 | ||
+ | B( 178 ) = 1.0467894009478039e+183 | ||
+ | B( 179 ) = 0.0 | ||
+ | B( 180 ) = -8.543289357883371e+185 | ||
+ | B( 181 ) = 0.0 | ||
+ | B( 182 ) = 7.1287821322486547e+188 | ||
+ | B( 183 ) = 0.0 | ||
+ | B( 184 ) = -6.0802931455535905e+191 | ||
+ | B( 185 ) = 0.0 | ||
+ | B( 186 ) = 5.2996776424849921e+194 | ||
+ | B( 187 ) = 0.0 | ||
+ | B( 188 ) = -4.719425916874586e+197 | ||
+ | B( 189 ) = 0.0 | ||
+ | B( 190 ) = 4.2928413791402983e+200 | ||
+ | B( 191 ) = 0.0 | ||
+ | B( 192 ) = -3.9876744968232205e+203 | ||
+ | B( 193 ) = 0.0 | ||
+ | B( 194 ) = 3.781978041935888e+206 | ||
+ | B( 195 ) = 0.0 | ||
+ | B( 196 ) = -3.6614233683681192e+209 | ||
+ | B( 197 ) = 0.0 | ||
+ | B( 198 ) = 3.617609027237286e+212 | ||
+ | B( 199 ) = 0.0 | ||
+ | B( 200 ) = -3.6470772645191356e+215 | ||
+ | B( 201 ) = 0.0 | ||
+ | B( 202 ) = 3.7508755436454406e+218 | ||
+ | B( 203 ) = 0.0 | ||
+ | B( 204 ) = -3.934586729643903e+221 | ||
+ | B( 205 ) = 0.0 | ||
+ | B( 206 ) = 4.2088211148190084e+224 | ||
+ | B( 207 ) = 0.0 | ||
+ | B( 208 ) = -4.5902296220617918e+227 | ||
+ | B( 209 ) = 0.0 | ||
+ | B( 210 ) = 5.1031725772629572e+230 | ||
+ | B( 211 ) = 0.0 | ||
+ | B( 212 ) = -5.7822762303656954e+233 | ||
+ | B( 213 ) = 0.0 | ||
+ | B( 214 ) = 6.6762482167835884e+236 | ||
+ | B( 215 ) = 0.0 | ||
+ | B( 216 ) = -7.8535307644450417e+239 | ||
+ | B( 217 ) = 0.0 | ||
+ | B( 218 ) = 9.4106894067058724e+242 | ||
+ | B( 219 ) = 0.0 | ||
+ | B( 220 ) = -1.1484933873465185e+246 | ||
+ | B( 221 ) = 0.0 | ||
+ | B( 222 ) = 1.4272958742848785e+249 | ||
+ | B( 223 ) = 0.0 | ||
+ | B( 224 ) = -1.8059559586909309e+252 | ||
+ | B( 225 ) = 0.0 | ||
+ | B( 226 ) = 2.3261535307660807e+255 | ||
+ | B( 227 ) = 0.0 | ||
+ | B( 228 ) = -3.0495751715499594e+258 | ||
+ | B( 229 ) = 0.0 | ||
+ | B( 230 ) = 4.0685806076433976e+261 | ||
+ | B( 231 ) = 0.0 | ||
+ | B( 232 ) = -5.5231031321974362e+264 | ||
+ | B( 233 ) = 0.0 | ||
+ | B( 234 ) = 7.6277279396434395e+267 | ||
+ | B( 235 ) = 0.0 | ||
+ | B( 236 ) = -1.0715571119697886e+271 | ||
+ | B( 237 ) = 0.0 | ||
+ | B( 238 ) = 1.5310200895969188e+274 | ||
+ | B( 239 ) = 0.0 | ||
+ | B( 240 ) = -2.2244891682179836e+277 | ||
+ | B( 241 ) = 0.0 | ||
+ | B( 242 ) = 3.286267919069014e+280 | ||
+ | B( 243 ) = 0.0 | ||
+ | B( 244 ) = -4.9355928955960348e+283 | ||
+ | B( 245 ) = 0.0 | ||
+ | B( 246 ) = 7.5349571200832511e+286 | ||
+ | B( 247 ) = 0.0 | ||
+ | B( 248 ) = -1.1691485154584178e+290 | ||
+ | B( 249 ) = 0.0 | ||
+ | B( 250 ) = 1.8435261467838938e+293 | ||
+ | B( 251 ) = 0.0 | ||
+ | B( 252 ) = -2.9536826172968082e+296 | ||
+ | B( 253 ) = 0.0 | ||
+ | B( 254 ) = 4.8079321277501568e+299 | ||
+ | B( 255 ) = 0.0 | ||
+ | B( 256 ) = -7.9502125045885252e+302 | ||
+ | B( 257 ) = 0.0 | ||
+ | B( 258 ) = 1.3352784187354634e+306 | ||
+ | </ | ||
+ | |||
+ | Et voilà une liste apte à être intégrée dans un code par copier-coller: | ||
+ | |||
+ | < | ||
+ | bernoulli = [1.0, -0.5, 0.166666666667, | ||
+ | 0.0757575757576, | ||
+ | 0.0, 6192.12318841, | ||
+ | 0.0, 429614643061.0, | ||
+ | 0.0, -4.03380718541e+19, | ||
+ | 0.0, 3.65287764848e+28, | ||
+ | 0.0, -2.09380059113e+38, | ||
+ | 0.0, 5.6920695482e+48, | ||
+ | 0.0, -5.94709705031e+59, | ||
+ | 0.0, 2.03468967763e+71, | ||
+ | 0.0, -2.00964548028e+83, | ||
+ | 0.0, 5.17567436175e+95, | ||
+ | 0.0, -3.19589251114e+108, | ||
+ | 0.0, 4.40983619785e+121, | ||
+ | 0.0, -1.28069268041e+135, | ||
+ | 0.0, 7.4345787551e+148, | ||
+ | 0.0, -8.24821871853e+162, | ||
+ | 0.0, 1.68125970729e+177, | ||
+ | 0.0, -6.08029314555e+191, | ||
+ | 0.0, 3.78197804194e+206, | ||
+ | 0.0, -3.93458672964e+221, | ||
+ | 0.0, 6.67624821678e+236, | ||
+ | 0.0, -1.80595595869e+252, | ||
+ | 0.0, 7.62772793964e+267, | ||
+ | 0.0, -4.9355928956e+283, | ||
+ | 0.0, 4.80793212775e+299, | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | Amusez-vous bien! | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <style type=" | ||
+ | <!-- | ||
+ | body {background-image: | ||
+ | --> | ||
+ | </ | ||
+ | </ | ||
+ | < | ||
+ | </ | ||
+ | </ | ||