merida-06-13

1619 days ago by pang

R dentro de Sage

%r datos <- c(2,1,2,2,3,2,1); summary(datos) 
       
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   1.500   2.000   1.857   2.000   3.000 
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   1.500   2.000   1.857   2.000   3.000 
%r hist(datos); 
       
Error en png() : X11 no está disponible
Error en png() : X11 no está disponible

Un primer ejemplo: lanzamientos de monedas

def es_favorable(ms): #ms es una lista de 0's y 1's caras = 0 for j,m in enumerate(ms): if m: caras += 1 cruces = j+1-caras #si en algun momento hay mas cruces que caras, no es favorable if caras < cruces: return False return True print es_favorable([1,0,0,1]) print es_favorable([1,0,1,0]) 
       
False
True
False
True
K=4 for k in srange(2^K): vars = k.digits(base=2,padto=K) print vars 
       
[0, 0, 0, 0]
[1, 0, 0, 0]
[0, 1, 0, 0]
[1, 1, 0, 0]
[0, 0, 1, 0]
[1, 0, 1, 0]
[0, 1, 1, 0]
[1, 1, 1, 0]
[0, 0, 0, 1]
[1, 0, 0, 1]
[0, 1, 0, 1]
[1, 1, 0, 1]
[0, 0, 1, 1]
[1, 0, 1, 1]
[0, 1, 1, 1]
[1, 1, 1, 1]
[0, 0, 0, 0]
[1, 0, 0, 0]
[0, 1, 0, 0]
[1, 1, 0, 0]
[0, 0, 1, 0]
[1, 0, 1, 0]
[0, 1, 1, 0]
[1, 1, 1, 0]
[0, 0, 0, 1]
[1, 0, 0, 1]
[0, 1, 0, 1]
[1, 1, 0, 1]
[0, 0, 1, 1]
[1, 0, 1, 1]
[0, 1, 1, 1]
[1, 1, 1, 1]
K = 10 totales = 2^K favorables = 0 for k in srange(totales): vars = k.digits(base=2,padto=K) if es_favorable(vars): favorables += 1 p = favorables/totales 
       
K = 10 totales = 1000 favorables = 0 for _ in srange(totales): vars = [randint(0,1) for _ in srange(K)] if es_favorable(vars): favorables += 1 p = favorables/totales print '%s=%.3f'%(p,p) 
       
6/25=0.240
6/25=0.240

Objetos combinatorios

#Una permutacion aleatoria de una lista print Permutations(srange(4)).random_element() #Todas las formas de sumar 5 con números positivos print Partitions(5).list() #Todas las formas de sumar 8 usando monedas de 1, 2 y 5 print WeightedIntegerVectors(8, [1,2,5]).list() #Por si acaso no te creias que para calcular el cardinal no hace falta #calcular todos los elementos S = Set([1,2,3,4]) S3 = Subsets(Subsets(Subsets(S))) print S3.cardinality() 
       
[0, 1, 2, 3]
[[5], [4, 1], [3, 2], [3, 1, 1], [2, 2, 1], [2, 1, 1, 1], [1, 1, 1, 1,
1]]
[[1, 1, 1], [3, 0, 1], [0, 4, 0], [2, 3, 0], [4, 2, 0], [6, 1, 0], [8,
0, 0]]
200352993040684646497907235156025575044782547556975141926501697371089405\
955631145308950613088093334810103823434290726318182294938211881266886950\
636476154702916504187191635158796634721944293092798208430910485599057015\
931895963952486337236720300291696959215610876494888925409080591145703767\
520850020667156370236612635974714480711177481588091413574272096719015183\
628256061809145885269982614142503012339110827360384376787644904320596037\
912449090570756031403507616256247603186379312648470374378295497561377098\
160461441330869211810248595915238019533103029216280016056867010565164675\
056803874152946384224484529253736144253361437372908830379460127472495841\
486491593064725201515569392262818069165079638106413227530726714399815850\
881129262890113423778270556742108007006528396332215507783121428855167555\
407334510721311242739956298271976915005488390522380435704584819795639315\
785351001899200002414196370681355984046403947219401606951769015611972698\
233789001764151719005113346630689814021938348143542638730653955296969138\
802415816185956110064036211979610185953480278716720012260464249238511139\
340046435162386756707874525946467090388654774348321789701276445552940909\
202195958575162297333357615955239488529757995402847194352991354376370598\
692891375715374000198639433246489005254310662966916524341917469138963247\
656028941519977547770313806478134230959619096065459130089018888758808473\
362595606544488850144733570605881709016210849971452956834406197969056546\
981363116205357936979140323632849623304642106613620022017578785185740916\
205048971178182040018728293994344618622432800983732376493181478984811945\
271300744022076568091037620399920349202390662626449190916798546151577883\
906039772075927937885224129430101745808686226336928472585140303961555856\
433038545068865221311481363840838477826379045960718687672850976347127198\
889068047824323039471865052566097815072986114143030581692792497140916105\
941718535227588750447759221830115878070197553572224140001954810200566177\
358978149953232520858975346354700778669040642901676380816174055040511767\
009367320280454933902799249186730653993164072049223847481528061916690093\
380573212081635070763435166986962502096902316285935007187419057916124153\
689751480826190484794657173660100589247665544584083833479054414481768425\
532720731558634934760513741977952519036503219802010876473836868253102518\
337753390886142618480037400808223810407646887847164755294532694766170042\
446106331123802113458869453220011656407632702307429242605158281107038701\
834532456763562595143003203743274078087905628366340696503084422585596703\
927186946115851379338647569974856867007982396060439347885086164926030494\
506174341236582835214480672667684180708375486221140823657980296120002744\
132443843240233125740354501935242877643088023285085588608996277445816468\
085787511580701474376386797695504999164399828435729041537814343884730348\
426190338884149403136613985425763557710533558020662218557706008255128889\
333222643628198483861323957067619140963853383237434375883085923372228464\
428799624560547693242899843265267737837317328806321075321123868060467470\
842805116648870908477029120816110491255559832236624486855665140268464120\
969498259056551921618810434122683899628307165486852553691485029953967550\
395493837185340590009618748947399288043249637316575380367358671017578399\
481847179849824694806053208199606618343401247609663951977802144119975254\
670408060849934417825628509272652370989865153946219300460736450792621297\
591769829389236701517099209153156781443979124847570623780460000991829332\
130688057004659145838720808801688744583555792625846512476308714856631352\
893416611749061752667149267217612833084527393646924458289257138887783905\
630048248379983969202922221548614590237347822268252163995744080172714414\
617955922617508388902007416992623830028228624928418267124340575142418856\
999427233160699871298688277182061721445314257494401506613946316919762918\
150657974552623619122484806389003366907436598922634956411466550306296596\
019972063620260352191777674066877746354937531889958786628212546979710206\
574723272137291814466665942187200347450894283091153518927111428710837615\
922238027660532782335166155514936937577846667014571797190122711781278045\
024002638475878833939681796295069079881712169068692953824852983002347606\
845411417813911064856023654975422749723100761513187002405391051091381784\
372179142252858743209852495787803468370333781842144401713868812424998441\
861812927119853331538256732187042153063119774853521467095533462633661086\
466733229240987984925669110951614361860154890974024191350962304361219612\
816595051866602203071561368473236466086890501426391390651506390819937885\
231836505989729912540447944342516677429965981184923315155527288327402835\
268844240875281128328998062591267369954624734154333350014723143061275039\
030739713525206933817384332295070104906186753943313078479801565513038475\
815568523621801041965025559618193498631591323303609646190599023611268119\
602344184336333459492763194610171665291382371718239429921627253846177606\
569454229787707138319881703696458868981186321097690035573588462446483570\
629145305275710127887202796536447972402540544813274839179412882642383517\
194919720979714593688753719872913083173803391101612854741537737771595172\
808411162759718638492422280237344192546999198367219213128703558530796694\
271341639103388275431861364349010094319740904733101447629986172542442335\
561223743571582593338280498624389249822278071595176275784710947511903348\
224141202518268871372819310425347819612844017647953150505711072297431456\
991522345164312184865757578652819756484350895838472292353455946452121583\
165775147129870822590929265563883665112068194383690411625266871004456024\
370420066370900194118555716047204464369693285006004692814050711906926139\
399390273553454556747031490388602202463994826050176243196930564066636662\
609020704888743889890749815286544438186291738290105182086993638266186830\
391527326458128678280660133750009659336462514609172318031293034787742123\
467911845479131110989779464821692250562939995679348380169915743970053754\
213448587458685604728675106542334189383909911058646559511364606105515683\
854121745980180713316361257307961116834386376766730735458349478978831633\
012924080083635682593915711313097803051644171668251834657367593419808495\
894794098329250008638977856349469321247342610306271374507728615692259662\
857385790553324064184901845132828463270926975383086730840914224765947443\
997334813081098639941737978965701068702673416196719659159958853783482298\
827012560584236558953969030647496558414798131099715754204325639577607048\
510088157829140825077773855979012912940730946278594450585941227319481275\
322515232480150346651904822896140664689030510251091623777044848623022948\
896671138055560795662073244937337402783676730020301161522700892184351565\
212137921574820685935692079021450227713309998772945959695281704458218195\
608096581170279806266989120506156074232568684227130629500986442185347081\
040712891764690655083612991669477802382250278966784348919940965736170458\
678624255400694251669397929262471452494540885842272615375526007190433632\
919637577750217600519580069384763578958687848953687212289855780682651819\
270363209948015587445557517531273647142129553649408438558661520801211507\
907506855334448925869328385965301327204697069457154695935365857178889486\
233329246520273585318853337094845540333656535698817258252891805663548836\
374379334841184558016833182767683464629199560551347003914787680864032262\
961664156066750815371064672310846196424753749055374480531822600271021640\
098058449752602303564003808347205314994117296573678506642140084269649710\
324191918212121320693976914392336837470922826773870813223668008692470349\
158684099115309831541206356612318750430546753698323082796645741762080659\
317726568584168183796610614496343254411170694170022265781735835125982108\
076910196105222926387974504901925431190062056190657745241619191318753398\
404934397682331029846589331837301580959252282920682086223033258528011926\
649631444131644277300323779227471233069641714994553226103547514563129066\
885434542686978844774298177749371011761465162418361668025481529633530849\
084994300676365480610294009469375060984558855804397048591444958444507997\
849704558355068540874516331646411808312307970438984919050658758642581073\
842242059119194167418249045270028826398305795005734171148703118714283418\
449915345670291528010448514517605530697144176136858238410278765932466268\
997841831962031226242117739147720800488357833356920453393595325456489702\
855858973550575123512953654050284208102278524877660357424636667314868027\
948605244578267362623085297826505711462484659591421027812278894144816399\
497388188462276824485162205181707672216986326570165431691974265123004175\
732990447353767253684579275436541282655358185804684006936771860502007054\
724754840080553042495185449526724726134731817474218007857469346544713603\
697588411802940803961674694628854067917213860122541950381970453841726800\
639882065632879283958270851091995883944829777564715202613287108952616341\
770715164289948795356485455355314875497813400996485449863582484769059003\
311696130376612792346432312970662841130742704620203201336835038542536031\
363676357521260470742531120923340283748294945310472741896928727557202761\
527226828337674139342565265328306846999759709775000556088993268502504921\
288406827413988163154045649035077587168007405568572402175868543905322813\
377070741583075626962831695568742406052772648585305061135638485196591896\
864959633556821697543762143077866593473045016482243296489127070989807667\
662567151726906205881554966638257382927418208227896068448822298339481667\
098403902428351430681376725346012600726926296946867275079434619043999661\
897961192875051944235640264430327173734159128149605616835398818856948404\
534231142461355992527233006488162746672352375123431189344211888508507935\
816384899448754475633168921386967557430273795378526254232902488104718193\
903722066689470220425883689584093999845356094886994683385257967516188215\
941098162491874181336472696512398067756194791255795744647142786862405375\
057610420426714936608498023827468057598259133100691994190465190653117190\
892607794911921794640735512963386452303567334558803331319708036545718479\
155043265489955970586288828686660661802188224860214499997312216413817065\
348017551043840662441282280361664890425737764095632648282525840766904560\
843949032529052633753231650908768133661424239830953080654966187938194912\
003391948949406513239881664208008839555494223709673484007264270570116508\
907519615537018626479745638118785617545711340047381076276301495330973517\
418065547911266093803431137853253288353335202493436597912934128485497094\
682632907583019307266533778255931433111096384805394085928398890779621047\
984791968687653998747709591278872747587443980677982496827827220092644994\
455938041460877064194181044075826980568803894965461658798390466058764534\
181028990719429302177451997610449504319684150345551404482092893337865736\
305283061999007774872692299860827905317169187657886090894181705799340489\
021844155979109267686279659758395248392673488363474565168701616624064242\
424122896111801061568234253939218005248345472377921991122859591419187749\
179382334001007812832650671028178139602912091472010094787875255126337288\
422235386949006792766451163475810119387531965724212147603828477477457170\
457861041738574791130190858387789015233434301300528279703858035981518292\
960030568261209195094373732545417105638388704752895056396102984364136093\
564163258940813798151169333861979733982167076100460798009601602482309694\
304380695662012321365014054958625061528258803302290838581247846931572032\
323360189946943764772672187937682643182838260356452069946863021604887452\
842436359355862233350623594500289055858161127534178375045593612613085264\
082805121387317749020024955273873458595640516083058305377073253397155262\
044470542957353836111367752316997274029294167420442324811387507563131907\
827218886405337469421384216992886294047963530515056078812636620649723125\
757901959887304119562622734372890051656111109411174527796548279047125058\
199907749806382155937688554649882293898540829132512907647838632249478101\
675349169348928810420301561028338614382737816094634133538357834076531432\
141715065587754782025245478065730134227747061674424196895261316427410469\
547462148375628829977180418678508454696561915090869587425118443583730659\
095146098045124740941137389992782249298336779601101538709612974970556630\
163730720275073475992294379239382442742118615823616131788639255309511718\
842129850830723825972914414225157940388301135908333165185823496722125962\
181250705811375949552502274727467436988713192667076929919908446716122873\
885845758462272657333075373557282395161696417519867501268174542932373829\
414382481437713986190671665757294580780482055951188168718807521297183263\
644215533678775127476694079011705750981957508456356521738954417987507452\
385445520013357203333237989507439390531291821225525983379090946363020218\
535384885482506289771561696386071238277172562131346054940177041358173193\
176337013633225281912754719144345092071184883836681817426334294961187009\
150304916533946476371776643912079834749462739782217150209067019030246976\
215127852195614207080646163137323651785397629209202550028896201297014137\
964003805573494926907353514596120867479654773369295877362863566014376796\
403843079686413856344780132826128458918489852804804884418082163942397401\
436290348166545811445436646003249061876303950235640204453074821024136689\
519664422133920075747912868380517515063466256939193774028351207566626082\
989049187728783385217852279204577184696585527879044756219266399200840930\
207567392536373562839082981757790215320210640961737328359849406665214119\
818381088451545977289516457213189779790749194101314836854463961690460703\
010759681893374121757598816512700076126278916951040631585763753478742007\
022205107089125761236165802680681585849985263146587808661680073326467683\
020639169720306489440562819540619068524200305346315662189132730906968735\
318164109451428803660599522024824888671155442910472192913424834643870536\
850864874909917881267056566538719104972182004237149274016446094345984539\
253670613221061653308566202118896823400575267548610147699368873820958455\
221157192347968688816085363161586288015039594941852948922707441082820716\
930338781808493620401825522227101098565344481720747075601924591559943107\
294957819787859057894005254012286751714251118435643718405356302418122547\
326609330271039796809106493927272268303541046763259135527968383770501985\
523462122285841055711992173171796980433931770775075562705604783177984444\
763756025463703336924711422081551997369137197516324130274871219986340454\
824852457011855334267526471597831073124566342980522145549415625272402891\
533335434934121786203700726031527987077187249123449447714790952073476138\
542548531155277330103034247683586549609372232400715451812973269208105842\
409055772564580368146223449318970813889714329983134761779967971245378231\
070373915147387869211918756670031932128189680332269659445928621060743882\
741691946516226763254066507088107103039417886056489376981673415902592519\
461182364294565266937220315550470021359884629275801252771542201662995486\
313032491231102962792372389976641680349714122652793190763632613681414551\
637665655983978848938173308266877990196288693229659737995193162118721545\
528739417024366988559388879331674453336311954151840408828381519342123412\
282003095031334105070476015998798547252919066522247931971544033179483683\
737322082188577334162385644138070054191353024594391350255453188645479625\
226025176292837433046510236105758351455073944333961021622967546141578112\
719700173861149427950141125328062125477581051297208846526315809480663368\
767014731073354071771087661593585681409821296773075919738297344144525668\
877085532457088895832099382343210271822411476373279135756861542125284965\
790333509315277692550584564401055219264450531207375628774499816364633283\
581614033017581396735942732769044892036188038675495575180689005853292720\
149392350052584514670698262854825788326739873522045722823929020714482221\
988558710289699193587307427781515975762076402395124386020203259659625021\
257834995771008562638611823381331850901468657706401067627861758377277289\
589274603940393033727187385053691295712671506689668849388088514294360996\
201296675907922508227531381284985152690293170026313632894209579757795932\
763553116206675348865131732387243874806351331451264488996758982881292548\
007642518658649024111112730135719718138160258317850693224400799865663537\
154408845486639318170839573578079905973083909488180406093595919090747396\
090441015051632174968141210076571917748376735575100073361692238653742907\
945780320004233745280756615304292901449578062963413838355178359976470885\
134900485697369796523869584599459559209070905895689145114141268450546211\
794502661175016692826025095077077821195043261738322356243760177679936279\
609936897519139496503335850715541843645685261667424368892037103749532842\
592713161053783498074073915863381796765842525803673720646935124865223848\
134166380806150570482905989069645193644001859712042572300731641000991698\
752426037736217776343062161674488493081092990100951797454156425120482208\
671458684925513244426677712786372821133153622430109182439124338021404624\
222334915355951689081628848798998827363044537243217428021575577796702166\
631704796972817248339284101564227450727177926939992974030807277039501358\
154514249404902653610582540937311465310494338248437971860693721444460082\
679800247122948940576185389220342560830269705287662137737359439422411470\
707407290272546130735854174569141944648762435768239706570318416846754073\
346634629367398362000404140071405427763248013274220268539369886978760700\
959004868465062677136307097982100655728510130660101078063374334477307347\
865388174268123074376606664331277535646657860371519292276844045827328324\
380821284121877613204246046490080105473142674926082692215563740548624171\
703102791999694264562095561981645454766204502241144940474934983220680719\
135276798674781345820385957041346617793722853494003163159954409368408957\
253343870298671782977037333280680176463950209002394193149911500910527682\
111951099906316615031158558283558260717941005252858361136996130344279017\
381178741206128818206202326384986151565645123004779296756361834576810504\
334176954306753804111392855379252924134733948105053202570872818630729115\
891133594201476187266429156403637192760230628384065042544174233546454998\
705531872688792642410214736369862546374715974435494344389973005174252511\
087735788639094681209667342815258591992485764048805507132981429935991146\
323991911395992675257635900744657281019180584180734222773472139772321823\
177171691640010882611254909336118678057572239101818616854910850088527227\
437421208652485237245624869766224538481929867112945294551549703058591930\
719849710541418163696897613112674402700964866754593456705993699546450055\
892162804797636568613331656390739570327203438917541526750091501119885687\
270884819553167693168127289214303137681801644547736751835349785792427646\
335416243360112596025210950161226411034608346564823559793427405686884922\
445874549377675212032470380303549115754483129527589193989368087632768543\
876955769488142284431199859570072752139317683783177033913042306095899913\
731468456901042209516196707050642025673387344611565527617599272715187766\
001023894476053978951694570880272873622512107622409181006670088347473760\
515628553394356584375627124124445765166306408593950794755092046393224520\
253546363444479175566172596218719927918657549085785295001284022903506151\
493731010700944615101161371242376142672254173205595920278212932572594714\
641722497732131638184532655527960427054187149623658525245864893325414506\
264233788565146467060429856478196846159366328895429978072254226479040061\
601975197500746054515006029180663827149701611098795133663377137843441619\
405312144529185518013657555866761501937302969193207612000925506508158327\
550849934076879725236998702356793102680413674571895664143185267905471716\
996299036301554564509004480278905570196832831363071899769915316667920895\
876857229060091547291963638167359667395997571032601557192023734858052112\
811745861006515259888384311451189488055212914577569914657753004138471712\
457796504817585639507289533753975582208777750607233944558789590571915673\
6
[0, 1, 2, 3]
[[5], [4, 1], [3, 2], [3, 1, 1], [2, 2, 1], [2, 1, 1, 1], [1, 1, 1, 1, 1]]
[[1, 1, 1], [3, 0, 1], [0, 4, 0], [2, 3, 0], [4, 2, 0], [6, 1, 0], [8, 0, 0]]
2003529930406846464979072351560255750447825475569751419265016973710894059556311453089506130880933348101038234342907263181822949382118812668869506364761547029165041871916351587966347219442930927982084309104855990570159318959639524863372367203002916969592156108764948889254090805911457037675208500206671563702366126359747144807111774815880914135742720967190151836282560618091458852699826141425030123391108273603843767876449043205960379124490905707560314035076162562476031863793126484703743782954975613770981604614413308692118102485959152380195331030292162800160568670105651646750568038741529463842244845292537361442533614373729088303794601274724958414864915930647252015155693922628180691650796381064132275307267143998158508811292628901134237782705567421080070065283963322155077831214288551675554073345107213112427399562982719769150054883905223804357045848197956393157853510018992000024141963706813559840464039472194016069517690156119726982337890017641517190051133466306898140219383481435426387306539552969691388024158161859561100640362119796101859534802787167200122604642492385111393400464351623867567078745259464670903886547743483217897012764455529409092021959585751622973333576159552394885297579954028471943529913543763705986928913757153740001986394332464890052543106629669165243419174691389632476560289415199775477703138064781342309596190960654591300890188887588084733625956065444888501447335706058817090162108499714529568344061979690565469813631162053579369791403236328496233046421066136200220175787851857409162050489711781820400187282939943446186224328009837323764931814789848119452713007440220765680910376203999203492023906626264491909167985461515778839060397720759279378852241294301017458086862263369284725851403039615558564330385450688652213114813638408384778263790459607186876728509763471271988890680478243230394718650525660978150729861141430305816927924971409161059417185352275887504477592218301158780701975535722241400019548102005661773589781499532325208589753463547007786690406429016763808161740550405117670093673202804549339027992491867306539931640720492238474815280619166900933805732120816350707634351669869625020969023162859350071874190579161241536897514808261904847946571736601005892476655445840838334790544144817684255327207315586349347605137419779525190365032198020108764738368682531025183377533908861426184800374008082238104076468878471647552945326947661700424461063311238021134588694532200116564076327023074292426051582811070387018345324567635625951430032037432740780879056283663406965030844225855967039271869461158513793386475699748568670079823960604393478850861649260304945061743412365828352144806726676841807083754862211408236579802961200027441324438432402331257403545019352428776430880232850855886089962774458164680857875115807014743763867976955049991643998284357290415378143438847303484261903388841494031366139854257635577105335580206622185577060082551288893332226436281984838613239570676191409638533832374343758830859233722284644287996245605476932428998432652677378373173288063210753211238680604674708428051166488709084770291208161104912555598322366244868556651402684641209694982590565519216188104341226838996283071654868525536914850299539675503954938371853405900096187489473992880432496373165753803673586710175783994818471798498246948060532081996066183434012476096639519778021441199752546704080608499344178256285092726523709898651539462193004607364507926212975917698293892367015170992091531567814439791248475706237804600009918293321306880570046591458387208088016887445835557926258465124763087148566313528934166117490617526671492672176128330845273936469244582892571388877839056300482483799839692029222215486145902373478222682521639957440801727144146179559226175083889020074169926238300282286249284182671243405751424188569994272331606998712986882771820617214453142574944015066139463169197629181506579745526236191224848063890033669074365989226349564114665503062965960199720636202603521917776740668777463549375318899587866282125469797102065747232721372918144666659421872003474508942830911535189271114287108376159222380276605327823351661555149369375778466670145717971901227117812780450240026384758788339396817962950690798817121690686929538248529830023476068454114178139110648560236549754227497231007615131870024053910510913817843721791422528587432098524957878034683703337818421444017138688124249984418618129271198533315382567321870421530631197748535214670955334626336610864667332292409879849256691109516143618601548909740241913509623043612196128165950518666022030715613684732364660868905014263913906515063908199378852318365059897299125404479443425166774299659811849233151555272883274028352688442408752811283289980625912673699546247341543333500147231430612750390307397135252069338173843322950701049061867539433130784798015655130384758155685236218010419650255596181934986315913233036096461905990236112681196023441843363334594927631946101716652913823717182394299216272538461776065694542297877071383198817036964588689811863210976900355735884624464835706291453052757101278872027965364479724025405448132748391794128826423835171949197209797145936887537198729130831738033911016128547415377377715951728084111627597186384924222802373441925469991983672192131287035585307966942713416391033882754318613643490100943197409047331014476299861725424423355612237435715825933382804986243892498222780715951762757847109475119033482241412025182688713728193104253478196128440176479531505057110722974314569915223451643121848657575786528197564843508958384722923534559464521215831657751471298708225909292655638836651120681943836904116252668710044560243704200663709001941185557160472044643696932850060046928140507119069261393993902735534545567470314903886022024639948260501762431969305640666366626090207048887438898907498152865444381862917382901051820869936382661868303915273264581286782806601337500096593364625146091723180312930347877421234679118454791311109897794648216922505629399956793483801699157439700537542134485874586856047286751065423341893839099110586465595113646061055156838541217459801807133163612573079611168343863767667307354583494789788316330129240800836356825939157113130978030516441716682518346573675934198084958947940983292500086389778563494693212473426103062713745077286156922596628573857905533240641849018451328284632709269753830867308409142247659474439973348130810986399417379789657010687026734161967196591599588537834822988270125605842365589539690306474965584147981310997157542043256395776070485100881578291408250777738559790129129407309462785944505859412273194812753225152324801503466519048228961406646890305102510916237770448486230229488966711380555607956620732449373374027836767300203011615227008921843515652121379215748206859356920790214502277133099987729459596952817044582181956080965811702798062669891205061560742325686842271306295009864421853470810407128917646906550836129916694778023822502789667843489199409657361704586786242554006942516693979292624714524945408858422726153755260071904336329196375777502176005195800693847635789586878489536872122898557806826518192703632099480155874455575175312736471421295536494084385586615208012115079075068553344489258693283859653013272046970694571546959353658571788894862333292465202735853188533370948455403336565356988172582528918056635488363743793348411845580168331827676834646291995605513470039147876808640322629616641560667508153710646723108461964247537490553744805318226002710216400980584497526023035640038083472053149941172965736785066421400842696497103241919182121213206939769143923368374709228267738708132236680086924703491586840991153098315412063566123187504305467536983230827966457417620806593177265685841681837966106144963432544111706941700222657817358351259821080769101961052229263879745049019254311900620561906577452416191913187533984049343976823310298465893318373015809592522829206820862230332585280119266496314441316442773003237792274712330696417149945532261035475145631290668854345426869788447742981777493710117614651624183616680254815296335308490849943006763654806102940094693750609845588558043970485914449584445079978497045583550685408745163316464118083123079704389849190506587586425810738422420591191941674182490452700288263983057950057341711487031187142834184499153456702915280104485145176055306971441761368582384102787659324662689978418319620312262421177391477208004883578333569204533935953254564897028558589735505751235129536540502842081022785248776603574246366673148680279486052445782673626230852978265057114624846595914210278122788941448163994973881884622768244851622051817076722169863265701654316919742651230041757329904473537672536845792754365412826553581858046840069367718605020070547247548400805530424951854495267247261347318174742180078574693465447136036975884118029408039616746946288540679172138601225419503819704538417268006398820656328792839582708510919958839448297775647152026132871089526163417707151642899487953564854553553148754978134009964854498635824847690590033116961303766127923464323129706628411307427046202032013368350385425360313636763575212604707425311209233402837482949453104727418969287275572027615272268283376741393425652653283068469997597097750005560889932685025049212884068274139881631540456490350775871680074055685724021758685439053228133770707415830756269628316955687424060527726485853050611356384851965918968649596335568216975437621430778665934730450164822432964891270709898076676625671517269062058815549666382573829274182082278960684488222983394816670984039024283514306813767253460126007269262969468672750794346190439996618979611928750519442356402644303271737341591281496056168353988188569484045342311424613559925272330064881627466723523751234311893442118885085079358163848994487544756331689213869675574302737953785262542329024881047181939037220666894702204258836895840939998453560948869946833852579675161882159410981624918741813364726965123980677561947912557957446471427868624053750576104204267149366084980238274680575982591331006919941904651906531171908926077949119217946407355129633864523035673345588033313197080365457184791550432654899559705862888286866606618021882248602144999973122164138170653480175510438406624412822803616648904257377640956326482825258407669045608439490325290526337532316509087681336614242398309530806549661879381949120033919489494065132398816642080088395554942237096734840072642705701165089075196155370186264797456381187856175457113400473810762763014953309735174180655479112660938034311378532532883533352024934365979129341284854970946826329075830193072665337782559314331110963848053940859283988907796210479847919686876539987477095912788727475874439806779824968278272200926449944559380414608770641941810440758269805688038949654616587983904660587645341810289907194293021774519976104495043196841503455514044820928933378657363052830619990077748726922998608279053171691876578860908941817057993404890218441559791092676862796597583952483926734883634745651687016166240642424241228961118010615682342539392180052483454723779219911228595914191877491793823340010078128326506710281781396029120914720100947878752551263372884222353869490067927664511634758101193875319657242121476038284774774571704578610417385747911301908583877890152334343013005282797038580359815182929600305682612091950943737325454171056383887047528950563961029843641360935641632589408137981511693338619797339821670761004607980096016024823096943043806956620123213650140549586250615282588033022908385812478469315720323233601899469437647726721879376826431828382603564520699468630216048874528424363593558622333506235945002890558581611275341783750455936126130852640828051213873177490200249552738734585956405160830583053770732533971552620444705429573538361113677523169972740292941674204423248113875075631319078272188864053374694213842169928862940479635305150560788126366206497231257579019598873041195626227343728900516561111094111745277965482790471250581999077498063821559376885546498822938985408291325129076478386322494781016753491693489288104203015610283386143827378160946341335383578340765314321417150655877547820252454780657301342277470616744241968952613164274104695474621483756288299771804186785084546965619150908695874251184435837306590951460980451247409411373899927822492983367796011015387096129749705566301637307202750734759922943792393824427421186158236161317886392553095117188421298508307238259729144142251579403883011359083331651858234967221259621812507058113759495525022747274674369887131926670769299199084467161228738858457584622726573330753735572823951616964175198675012681745429323738294143824814377139861906716657572945807804820559511881687188075212971832636442155336787751274766940790117057509819575084563565217389544179875074523854455200133572033332379895074393905312918212255259833790909463630202185353848854825062897715616963860712382771725621313460549401770413581731931763370136332252819127547191443450920711848838366818174263342949611870091503049165339464763717766439120798347494627397822171502090670190302469762151278521956142070806461631373236517853976292092025500288962012970141379640038055734949269073535145961208674796547733692958773628635660143767964038430796864138563447801328261284589184898528048048844180821639423974014362903481665458114454366460032490618763039502356402044530748210241366895196644221339200757479128683805175150634662569391937740283512075666260829890491877287833852178522792045771846965855278790447562192663992008409302075673925363735628390829817577902153202106409617373283598494066652141198183810884515459772895164572131897797907491941013148368544639616904607030107596818933741217575988165127000761262789169510406315857637534787420070222051070891257612361658026806815858499852631465878086616800733264676830206391697203064894405628195406190685242003053463156621891327309069687353181641094514288036605995220248248886711554429104721929134248346438705368508648749099178812670565665387191049721820042371492740164460943459845392536706132210616533085662021188968234005752675486101476993688738209584552211571923479686888160853631615862880150395949418529489227074410828207169303387818084936204018255222271010985653444817207470756019245915599431072949578197878590578940052540122867517142511184356437184053563024181225473266093302710397968091064939272722683035410467632591355279683837705019855234621222858410557119921731717969804339317707750755627056047831779844447637560254637033369247114220815519973691371975163241302748712199863404548248524570118553342675264715978310731245663429805221455494156252724028915333354349341217862037007260315279870771872491234494477147909520734761385425485311552773301030342476835865496093722324007154518129732692081058424090557725645803681462234493189708138897143299831347617799679712453782310703739151473878692119187566700319321281896803322696594459286210607438827416919465162267632540665070881071030394178860564893769816734159025925194611823642945652669372203155504700213598846292758012527715422016629954863130324912311029627923723899766416803497141226527931907636326136814145516376656559839788489381733082668779901962886932296597379951931621187215455287394170243669885593888793316744533363119541518404088283815193421234122820030950313341050704760159987985472529190665222479319715440331794836837373220821885773341623856441380700541913530245943913502554531886454796252260251762928374330465102361057583514550739443339610216229675461415781127197001738611494279501411253280621254775810512972088465263158094806633687670147310733540717710876615935856814098212967730759197382973441445256688770855324570888958320993823432102718224114763732791357568615421252849657903335093152776925505845644010552192644505312073756287744998163646332835816140330175813967359427327690448920361880386754955751806890058532927201493923500525845146706982628548257883267398735220457228239290207144822219885587102896991935873074277815159757620764023951243860202032596596250212578349957710085626386118233813318509014686577064010676278617583772772895892746039403930337271873850536912957126715066896688493880885142943609962012966759079225082275313812849851526902931700263136328942095797577959327635531162066753488651317323872438748063513314512644889967589828812925480076425186586490241111127301357197181381602583178506932244007998656635371544088454866393181708395735780799059730839094881804060935959190907473960904410150516321749681412100765719177483767355751000733616922386537429079457803200042337452807566153042929014495780629634138383551783599764708851349004856973697965238695845994595592090709058956891451141412684505462117945026611750166928260250950770778211950432617383223562437601776799362796099368975191394965033358507155418436456852616674243688920371037495328425927131610537834980740739158633817967658425258036737206469351248652238481341663808061505704829059890696451936440018597120425723007316410009916987524260377362177763430621616744884930810929901009517974541564251204822086714586849255132444266777127863728211331536224301091824391243380214046242223349153559516890816288487989988273630445372432174280215755777967021666317047969728172483392841015642274507271779269399929740308072770395013581545142494049026536105825409373114653104943382484379718606937214444600826798002471229489405761853892203425608302697052876621377373594394224114707074072902725461307358541745691419446487624357682397065703184168467540733466346293673983620004041400714054277632480132742202685393698869787607009590048684650626771363070979821006557285101306601010780633743344773073478653881742681230743766066643312775356466578603715192922768440458273283243808212841218776132042460464900801054731426749260826922155637405486241717031027919996942645620955619816454547662045022411449404749349832206807191352767986747813458203859570413466177937228534940031631599544093684089572533438702986717829770373332806801764639502090023941931499115009105276821119510999063166150311585582835582607179410052528583611369961303442790173811787412061288182062023263849861515656451230047792967563618345768105043341769543067538041113928553792529241347339481050532025708728186307291158911335942014761872664291564036371927602306283840650425441742335464549987055318726887926424102147363698625463747159744354943443899730051742525110877357886390946812096673428152585919924857640488055071329814299359911463239919113959926752576359007446572810191805841807342227734721397723218231771716916400108826112549093361186780575722391018186168549108500885272274374212086524852372456248697662245384819298671129452945515497030585919307198497105414181636968976131126744027009648667545934567059936995464500558921628047976365686133316563907395703272034389175415267500915011198856872708848195531676931681272892143031376818016445477367518353497857924276463354162433601125960252109501612264110346083465648235597934274056868849224458745493776752120324703803035491157544831295275891939893680876327685438769557694881422844311998595700727521393176837831770339130423060958999137314684569010422095161967070506420256733873446115655276175992727151877660010238944760539789516945708802728736225121076224091810066700883474737605156285533943565843756271241244457651663064085939507947550920463932245202535463634444791755661725962187199279186575490857852950012840229035061514937310107009446151011613712423761426722541732055959202782129325725947146417224977321316381845326555279604270541871496236585252458648933254145062642337885651464670604298564781968461593663288954299780722542264790400616019751975007460545150060291806638271497016110987951336633771378434416194053121445291855180136575558667615019373029691932076120009255065081583275508499340768797252369987023567931026804136745718956641431852679054717169962990363015545645090044802789055701968328313630718997699153166679208958768572290600915472919636381673596673959975710326015571920237348580521128117458610065152598883843114511894880552129145775699146577530041384717124577965048175856395072895337539755822087777506072339445587895905719156736

Construcciones recursivas

def particiones(n, k): if k == n: return [[1]*n] if k == 1: return [[n]] if not(0 < k < n): return [] ls1 = [p+[1] for p in particiones(n-1, k-1)] ls2 = [[parte+1 for parte in p] for p in particiones(n-k, k)] return ls1 + ls2 particiones(8,3) 
       
[[6, 1, 1], [5, 2, 1], [4, 3, 1], [4, 2, 2], [3, 3, 2]]
[[6, 1, 1], [5, 2, 1], [4, 3, 1], [4, 2, 2], [3, 3, 2]]
def n_particiones(n, k): if k == n: return 1 if k == 1: return 1 if not(0 < k < n): return 0 n1 = n_particiones(n-1, k-1) n2 = n_particiones(n-k, k) return n1 + n2 n_particiones(8,3) 
       
5
5
def fibo(n): if n<2: return 1 return fibo(n-1) + fibo(n-2) 
       
for k in [15..25]: time fibo(k) 
       
987
Time: CPU 0.00 s, Wall: 0.00 s
1597
Time: CPU 0.00 s, Wall: 0.00 s
2584
Time: CPU 0.00 s, Wall: 0.00 s
4181
Time: CPU 0.00 s, Wall: 0.00 s
6765
Time: CPU 0.00 s, Wall: 0.00 s
10946
Time: CPU 0.00 s, Wall: 0.01 s
17711
Time: CPU 0.01 s, Wall: 0.01 s
28657
Time: CPU 0.01 s, Wall: 0.01 s
46368
Time: CPU 0.02 s, Wall: 0.02 s
75025
Time: CPU 0.04 s, Wall: 0.04 s
121393
Time: CPU 0.06 s, Wall: 0.06 s
987
Time: CPU 0.00 s, Wall: 0.00 s
1597
Time: CPU 0.00 s, Wall: 0.00 s
2584
Time: CPU 0.00 s, Wall: 0.00 s
4181
Time: CPU 0.00 s, Wall: 0.00 s
6765
Time: CPU 0.00 s, Wall: 0.00 s
10946
Time: CPU 0.00 s, Wall: 0.01 s
17711
Time: CPU 0.01 s, Wall: 0.01 s
28657
Time: CPU 0.01 s, Wall: 0.01 s
46368
Time: CPU 0.02 s, Wall: 0.02 s
75025
Time: CPU 0.04 s, Wall: 0.04 s
121393
Time: CPU 0.06 s, Wall: 0.06 s
@cached_function def n_particiones_cached(n, k): if k == n: return 1 if k == 1: return 1 if not(0 < k < n): return 0 n1 = n_particiones_cached(n-1, k-1) n2 = n_particiones_cached(n-k, k) return n1 + n2 time n_particiones_cached(60,10) 
       
62740
Time: CPU 0.00 s, Wall: 0.00 s
62740
Time: CPU 0.00 s, Wall: 0.00 s

Regresión

datos =[[0.3300, 12.544], [4.1850, 17.278], [2.9000, 17.979], [0.2000, 12.938], [167.5000, 22.500], [72.3416, 24.521], [9.2500, 17.599], [6.0000, 19.176], [51.5000, 19.000], [19.5100, 19.750], [0.1150, 8.070]] puntos = point(datos) var('P a b') D(P)=a*P^b parametros = find_fit(datos, D, solution_dict=True) print 'valores óptimos de los parámetros: ', parametros Dstar = D.subs(parametros) error2 = sum((D0-Dstar(P=P0))^2 for P0,D0 in datos)/len(datos) print 'error cuadratico medio: %f'%error2 mindatos = min(x for x,y in datos) maxdatos = max(x for x,y in datos) ajuste = plot(Dstar, (x, mindatos, maxdatos), rgbcolor=(0,1,0)) grafica = puntos + ajuste grafica.show() 
       
valores óptimos de los parámetros:  {b: 0.10144858534978225, a:
14.36824900562541}
error cuadratico medio: 3.195483
valores óptimos de los parámetros:  {b: 0.10144858534978225, a: 14.36824900562541}
error cuadratico medio: 3.195483

Distribucion discreta con soporte finito

#Ejemplos: #Bernouilli de prob p=1/3 p = 1/3 f_bernouilli = {0:p, 1:1-p} #Binomial con prob p=1/3 y k=10 ensayos independientes k = 10 p = 1/3 f_binomial = dict((j, p^j*(1-p)^(k-j)*binomial(k,j)) for j in range(k+1)) #dibujar una distribucion discreta con soporte finito def dibuja_f(f, *args, **kargs): '''Dibuja una funcion de masa con soporte finito, dada como diccionario Acepta los argumentos adicionales tipicos de graficas en Sage, como color, etc ''' p = (sum([line2d([(x, 0), (x, f[x])], *args, **kargs) for x in f]) + point2d(f.items(), pointsize=30, *args, **kargs)) #Imponemos rango [0,1] para el eje que muestra las probabilidades p.ymin(0) p.ymax(1) p.axes_labels(['$x$','$p$']) return p show(dibuja_f(f_bernouilli)) show(dibuja_f(f_binomial, color = (1,0,0))) 
       


#media y varianza def media_f(f): return sum(x*f[x] for x in f) def varianza_f(f): m = media_f(f) return sum((x-m)^2*f[x] for x in f) print media_f(f_bernouilli), varianza_f(f_bernouilli) print media_f(f_binomial), varianza_f(f_binomial) 
       
2/3 2/9
10/3 20/9
2/3 2/9
10/3 20/9
F_binomial = dict((x, sum(p for y,p in f_binomial.items() if y<=x)) for x in f_binomial) print F_binomial 
       
{0: 1024/59049, 1: 2048/19683, 2: 5888/19683, 3: 11008/19683, 4:
15488/19683, 5: 18176/19683, 6: 2144/2187, 7: 19616/19683, 8:
19676/19683, 9: 59048/59049, 10: 1}
{0: 1024/59049, 1: 2048/19683, 2: 5888/19683, 3: 11008/19683, 4: 15488/19683, 5: 18176/19683, 6: 2144/2187, 7: 19616/19683, 8: 19676/19683, 9: 59048/59049, 10: 1}

Distribucion continua

#Distribucion continua #Normal #funcion de densidad var('x') m = 0.7 s = 1.4 f_normal = (1/sqrt(2*pi*s^2))*e^(-(x - m)^2/(2*s^2)) #Un tipico dibujo de la normal, centrado en la media y con 3 #desviaciones tipicas de rango show(plot(f_normal, x, m - 3*s, m + 3*s)) 
       
#Probabilidad de que X<1, cuando X~N(0.7, 1.4) prob, error = numerical_integral(f_normal, -oo, 1) print prob #Marcamos en el dibujo la prob pedida show(plot(f_normal, x, m - 3*s, m + 3*s) + plot(f_normal, x, m - 3*s, 1, fill = True)) 
       
0.584837871172
0.584837871172
#media y varianza def media_c(f): return integral(x*f,x,-oo,oo) def varianza_c(f): m = media_c(f) return integral((x-m)^2*f,x,-oo,oo) media_c(f_normal), varianza_c(f_normal) 
       
(0.7, 1.96)
(0.7, 1.96)
var('x mu sigma') assume(sigma > 0) #necesario para las integrales simbolicas f_normal = (1/sqrt(2*pi*sigma^2))*e^(-(x - mu)^2/(2*sigma^2)) media_c(f_normal), varianza_c(f_normal) 
       
(sqrt(pi)*sqrt(1/2)*sqrt(2)*mu/(sqrt(pi*sigma^2)*sqrt(sigma^(-2))),
(2*(pi*mu^2*sigma -
sqrt(pi)*sqrt(pi*sigma^2)*mu^2)*sqrt(pi)*sqrt(1/2)/sqrt(sigma^(-2)) +
pi^(3/2)*sqrt(1/2)*sigma/(sigma^(-2))^(3/2))*sqrt(2)/(pi*sqrt(pi*sigma^2\
)*sigma))
(sqrt(pi)*sqrt(1/2)*sqrt(2)*mu/(sqrt(pi*sigma^2)*sqrt(sigma^(-2))), (2*(pi*mu^2*sigma - sqrt(pi)*sqrt(pi*sigma^2)*mu^2)*sqrt(pi)*sqrt(1/2)/sqrt(sigma^(-2)) + pi^(3/2)*sqrt(1/2)*sigma/(sigma^(-2))^(3/2))*sqrt(2)/(pi*sqrt(pi*sigma^2)*sigma))
#Extraccion aleatoria m = 0.7 s = 1.4 f_normal = (1/sqrt(2*pi*s^2))*e^(-(x - m)^2/(2*s^2)) #1: extraemos un numero aleatorio entre 0 y 1 t = random() #2: funcion de distribucion var('x1') F_normal = integral(f_normal(x=x1), x1, -oo, x) show(plot(F_normal,x,-3,3) + plot(0*x+t, x, -3, 3, color=(1,0,0))) #3: "invertimos" la funcion de distribucion (de forma numerica) print t, find_root(F_normal - t, m-10*s, m+10*s) 
       

0.697185277736 1.42285097783

0.697185277736 1.42285097783
#Intentar invertir la funcion de forma simbolica no funciona #con una normal (puede funcionar en otros casos) var('p') solve(F_normal==p, x) #extraccion aleatoria #el argumento es la funcion de distribucion, no la de densidad def extraccion_aleatoria_c(F): t = random() return find_root(F - t, -100, 100) extraccion_aleatoria_c(F_normal) 
       
-0.9425012977086296
-0.9425012977086296

Histograma

from collections import defaultdict T = 200 #Dividimos [-K,K] en N partes iguales K = 3 N = 20 frecuencias = defaultdict(int) for j in range(T): a = extraccion_aleatoria_c(F_normal) k = floor(a*N/(2*K))*(2*K/N) frecuencias[k] += 1/(T*2*K/N) dibuja_f(frecuencias) + plot(f_normal, x, m-3*s, m+3*s, color=(1,0,0)) 
       

Distribución normal bidimensional

var('x1 x2') m1 = 1 m2 = 0 v1 = 3 v12 = -2 v2 = 4 S = matrix(RDF, [[v1,v12],[v12,v2]]) vs = vector([x1,x2]) ms = vector([m1,m2]) f = (1/(2*pi))*(1/sqrt(det(S)))*exp(-(1/2)*(vs-ms)*(~S)*(vs-ms)) 
       
#plot3d(f,(x1,-3,3),(x2,-3,3)).show() p = contour_plot(f, (x1, m1-3*sqrt(v1), m1+3*sqrt(v1)), (x2, m2-3*sqrt(v2), m2+3*sqrt(v2))) p.show(aspect_ratio=1) 
       
var('x1 x2') m1 = 0.2 m2 = 0.5 v1 = 0.3 v12 = 0.3 v2 = 0.6 S = matrix(RDF, [[v1,v12],[v12,v2]]) vs = vector([x1,x2]) ms = vector([m1,m2]) f(x1,x2) = (1/(2*pi))*(1/sqrt(det(S)))*exp(-(1/2)*(vs-ms)*(~S)*(vs-ms)) f_marginal_2(x2) = integral(f,x1,-oo,oo) f_condicionada_1_dado_2(x1,x2) = f(x1,x2)/f_marginal_2(x2) plot(f_marginal_2,x2, -3, 3) 
       
(plot(f_condicionada_1_dado_2(x2=1.3),x1, -3, 3) + plot(f_condicionada_1_dado_2(x2=1.3),x1, -3, .1, fill=True)) 
       
numerical_integral(f_condicionada_1_dado_2(x2=1.3), -oo, 0.1) 
       
(0.09835280122947326, 1.0996705400110192e-08)
(0.09835280122947326, 1.0996705400110192e-08)

Grafos

g1 = graphs.CompleteGraph(5) print g1.is_connected() print g1.is_planar() print g1.is_eulerian() print g1.is_tree() show(g1.plot()) 
       
True
False
True
False
True
False
True
False