Skip to content

Instantly share code, notes, and snippets.

@pgtwitter
Last active December 10, 2023 11:45
Show Gist options
  • Save pgtwitter/f4f83e32eeafdfd8bcb207236a68d166 to your computer and use it in GitHub Desktop.
Save pgtwitter/f4f83e32eeafdfd8bcb207236a68d166 to your computer and use it in GitHub Desktop.
y^2=x^3+2
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 7,
"source": [
"import sympy\n",
"from spb import plot_implicit, plot_list # sympy_plot_backends\n",
"import matplotlib.font_manager as fm\n",
"import matplotlib\n",
"prop = fm.FontProperties(fname='/System/Library/Fonts/ヒラギノ角ゴシック W3.ttc')\n",
"prop.set_weight = 'normal'\n",
"matplotlib.rcParams['font.family'] = prop.get_name()\n",
"matplotlib.rcParams['font.weight'] = 'normal'\n",
"\n",
"\n",
"def step_imp(f, x, y, s0, s1):\n",
" if (s1[0] == s0[0]):\n",
" raise\n",
" a = (s1[1] - s0[1]) / (s1[0] - s0[0])\n",
" g = sympy.Eq(y, a * (x - s1[0]) + s1[1])\n",
" try:\n",
" result = sympy.nonlinsolve([f, g], [x, y])\n",
" except:\n",
" raise\n",
" return result\n",
"\n",
"\n",
"def step(f, x, y, new_ps, ps):\n",
" results = set()\n",
" for s0 in list(new_ps):\n",
" for s1 in list(ps):\n",
" try:\n",
" results = results.union(step_imp(f, x, y, s0, s1))\n",
" except:\n",
" continue\n",
" ary = list(results)\n",
" for i in range(len(ary)-1):\n",
" for j in range(1, len(ary)):\n",
" try:\n",
" results = results.union(step_imp(f, x, y, ary[i], ary[j]))\n",
" except:\n",
" continue\n",
" return results\n",
"\n",
"\n",
"def main():\n",
" x, y = sympy.symbols('x y')\n",
" f = sympy.Eq(y**2, x**3+2)\n",
" ps = {(-1, 1), (-1, -1)}\n",
" new_ps = {(sympy.Rational(17, 4), sympy.Rational(71, 8))}\n",
" for i in range(3):\n",
" new_new_ps = step(f, x, y, new_ps, ps)\n",
" ps = ps.union(new_ps)\n",
" new_ps = new_new_ps\n",
" ps = ps.union(new_ps)\n",
"\n",
" p1 = plot_implicit(f, show=False)\n",
" xs = [point[0] for point in ps]\n",
" ys = [point[1] for point in ps]\n",
" p2 = plot_list((xs, ys, '有理点'), scatter=True, show=False)\n",
" (p1 + p2).show()\n",
" return ps\n",
"\n",
"\n",
"main()"
],
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {}
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{(-1, -1),\n",
" (-1, 1),\n",
" (-171804003687530192810198042838512424366412027182994348016212304543116691174005914152028115566393115098039741486535595290693353145176520338844652705343679900783/194053801888324560225268776200051065243053319489957665795255729413836001170883028796350680169230046040406763375871478175304409389066402103864482296570686124004, 3089311888954132756627355276786552544157272663915510709333053853951210257254735522338176687107830278927308859200801812600230381529994374194959956398705452131920486199770932162369405616117597808662433213292531516292658824088904048465428729/2703231464089788541556861581863739989052519379046591317219568246034341604903785017667065582354445877314712530600398355436396563249952149785562957626054602384366709078843016339981832349835815526054927833355869879921169736021122655941372008),\n",
" (-174016613231/306196222500, -228355009922164103/169433679720375000),\n",
" (-174016613231/306196222500, 228355009922164103/169433679720375000),\n",
" (-17460701374089693414993703572831391844305813021886721527981261848869011278037410986426860567041/24630282659480462640530021489638092497322536473059362677946763888590154124074954295402230390241, -4955866435753217499336614126970771851850165049425664830826436962817801009797677436444428313837158127688330649940011343252223430211077262492511/3865485903210166493152555941508119196523456396570721490290285520589994271795459181007256586635086103515743804320289375687356976378442924997039),\n",
" (-17460701374089693414993703572831391844305813021886721527981261848869011278037410986426860567041/24630282659480462640530021489638092497322536473059362677946763888590154124074954295402230390241, 4955866435753217499336614126970771851850165049425664830826436962817801009797677436444428313837158127688330649940011343252223430211077262492511/3865485903210166493152555941508119196523456396570721490290285520589994271795459181007256586635086103515743804320289375687356976378442924997039),\n",
" (-294275162465906803579958895962184185552486263901358530848123248103679969286125967485281188065235927725188660262818346489834004353364565087844738621534223793959356270278079297630233540120319/268110815107578459727696813710893638236035751895446940475046083549045790812132226504386865892268331726922245887738676240173009099308033871875856664314879867354269069986504760676080558440000, -3614116243984704942111450282848099671637186145509319746501872390890413883767855308607319192825202028789300473733832239417446653697723890824596826670327925565419495036955509797867263113488884370059652136040750553920442408883160050271367858071557312428276693012098892964610489504065921/4390070549243071155614338516601942477028836218888965523850610124887224968635715652871316215545926413589024940779204513630669038197445572930330803327203716091781854711579258013758595012481524383067427446577268846164101710148400152663593007144480767122791711298032196052822675672000000),\n",
" (-29941148708875475967334568290870279166859089352593764062667167381511194113/25021480466137752966546109819994073221218426758579948674033347462842175521, -67001551896707190182775087760714925760137076882802672146707588793595451376936340173868671853334560959987785375/125161138096860999936478953458522607017453068626793385257461153544274434231547022676420339398782483130962980431),\n",
" (-29941148708875475967334568290870279166859089352593764062667167381511194113/25021480466137752966546109819994073221218426758579948674033347462842175521, 67001551896707190182775087760714925760137076882802672146707588793595451376936340173868671853334560959987785375/125161138096860999936478953458522607017453068626793385257461153544274434231547022676420339398782483130962980431),\n",
" (-535925530724803712767/431791166736106232896, -2661377178406628694765981631103/8972441396523924058823922413056),\n",
" (-535925530724803712767/431791166736106232896, 2661377178406628694765981631103/8972441396523924058823922413056),\n",
" (-64363752249455070879137307239023/293763056960316465372944069236324, -7101756495124011219835271161698654764912754876409/5034957028437368992912415633092962882910696377832),\n",
" (-64363752249455070879137307239023/293763056960316465372944069236324, 7101756495124011219835271161698654764912754876409/5034957028437368992912415633092962882910696377832),\n",
" (-824136362467215916120339051748492396787145899946285441/12065085178071267105699997026486520010935156296327791641, -59261955663176542820566929402921571332810654587541006119092008000384044811626238889/41907870042838007647768696705528097104137676462986024373487335458699885242839015811),\n",
" (-824136362467215916120339051748492396787145899946285441/12065085178071267105699997026486520010935156296327791641, 59261955663176542820566929402921571332810654587541006119092008000384044811626238889/41907870042838007647768696705528097104137676462986024373487335458699885242839015811),\n",
" (108305279/48846121, -1226178094681/341385539669),\n",
" (108305279/48846121, 1226178094681/341385539669),\n",
" (11126445330544165269697248988782403779189315157924093657436794152340601148393430136179541370608150109408529/4201854251290128153310454530760798198327674778973994698384734360340745623462560118765421545132646103602500, -1235233433475338613814013118479215893857870399081907321684084803150948598519549014050854856636375902692714714529014398490499161150857214945594134580671307119417/272371383053675131951151078733404207611320565715158630401826952675881307435468143807067019423301932247072616092571255967208829144437198934011949007653029875000),\n",
" (11126445330544165269697248988782403779189315157924093657436794152340601148393430136179541370608150109408529/4201854251290128153310454530760798198327674778973994698384734360340745623462560118765421545132646103602500, 1235233433475338613814013118479215893857870399081907321684084803150948598519549014050854856636375902692714714529014398490499161150857214945594134580671307119417/272371383053675131951151078733404207611320565715158630401826952675881307435468143807067019423301932247072616092571255967208829144437198934011949007653029875000),\n",
" (11140700095100159/357683450575441, -1175934405978496374576911/6764695770360489996761),\n",
" (11140700095100159/357683450575441, 1175934405978496374576911/6764695770360489996761),\n",
" (127/441, -13175/9261),\n",
" (127/441, 13175/9261),\n",
" (15396425553104508829100231273086208452928665464967291365807717137/1978449787610840968498371935642316822375639939443093508806888644, -1914473763357826058323702734200727235917791068850229643220442512076160268727607813182863736696889/88000988136977295630450338050708914486060180741847547290812723450259590806012071848459923244728),\n",
" (15396425553104508829100231273086208452928665464967291365807717137/1978449787610840968498371935642316822375639939443093508806888644, 1914473763357826058323702734200727235917791068850229643220442512076160268727607813182863736696889/88000988136977295630450338050708914486060180741847547290812723450259590806012071848459923244728),\n",
" (17/4, -71/8),\n",
" (17/4, 71/8),\n",
" (227448591442292675789385204574120475027504189230110715983081670764434180283384802802503096427702221729155873544489321846963166336379695741130399383056215778160618241323093759/647710586046323624028950419064578343164822688201279039392345211527605727391285049748746233062747247335400380495854651926268274089629610092718218983842381400725654607593841, -108473808265288338951965725372620354471250951969368705191208036268924764364409211675366498901513355286560966880694210689198930783602911334203643288523564900330766780068333311328451536035325523418281369346341826703369786037267966037852027335125558244155694055761/16484337310781822949029058575544856498456681944319387866335343386719144720826116041448862204818576067823712598651361698980352891997521810475126889846943862083572073849615731868657529999770260566217838704100008820105808137515769717445220351329579310141163639),\n",
" (23158951172697717591271760513834109620332359962566265789564713479363540868596426126188674094463743498559313796703111348474837578721928127769895180081896986990760620915085654060123510884963408862449494866939476939439918737/169489321888835577403971307650054325274276234617690565433887379289353908912675603225469709295848644016601036244272055771242123011834384851941212278122190725125075909001358727617273100013374897019366546684242494817366523044, -98742772697464557650123726835079517068112686997813335532616024006152532565964675452956156839697473656000402784847693889414583044473258988864797956133393118909547866489391619510652138037809899468626414508909818748920359136973376246564673960943749534736027788674205279588373503457383835267808794964140534352040694227060604064036875911/69777195978121347952008416041065303233600221673156091646006214253849686983362079413215896542615708509618705053900044227101882993696339575319919889127240828173722673647674206029838473210195025287524473289154708990406377039519327108559241482122934511820178913586004766259392158045159006063780602926815874337756445773170592046549706072),\n",
" (2595726336375589555034251962504465110399/1735780892301135377719180694996800211401, -167179734275618245639072235888579418199301357147738576388551/72317325268770755373564164064015925706921529913152521145851),\n",
" (2595726336375589555034251962504465110399/1735780892301135377719180694996800211401, 167179734275618245639072235888579418199301357147738576388551/72317325268770755373564164064015925706921529913152521145851),\n",
" (26123915718362765034501174361841930017646450337729803679851967809893104833936360329374952100616029195866005884792648698535961950273/59263694854660612333236108244964509633091196401257719161074835725898931234366348999916081929381869669643236513182882274192358188176, -20835514955620793427368766702643131547211928353772748452067884645946772880098387773165193302705152405819466935700310334723395635974522912589583715942755056859354086748229809354130565525118807324063/14427234364009428772344349452829674317420910072415965210461003349075204752311950325585914718785940278698365648439647404969298594721609200229694869542671382829991144020612217778246345342504866607424),\n",
" (26123915718362765034501174361841930017646450337729803679851967809893104833936360329374952100616029195866005884792648698535961950273/59263694854660612333236108244964509633091196401257719161074835725898931234366348999916081929381869669643236513182882274192358188176, 20835514955620793427368766702643131547211928353772748452067884645946772880098387773165193302705152405819466935700310334723395635974522912589583715942755056859354086748229809354130565525118807324063/14427234364009428772344349452829674317420910072415965210461003349075204752311950325585914718785940278698365648439647404969298594721609200229694869542671382829991144020612217778246345342504866607424),\n",
" (2626903059167851992361421072919950250268504123452756103870713225848775863181923536128540022725490777165089101258062162220413907118867888045400447/764312843793271781647571371889703744133779200858734192818094672180976606167184987720544669691158974692676491691047990304198556005454674954981001, -4361220302188879626109785180491979518320123625583540156883043886832927742283474496987063284486049806762003222698716578307654906247732414489701232450106117171628976116119850034095684402650125210914884178923963031888775/668200408084109799945151042213193709421955794489668987473152870482379136685691975335616884714856465091655266501550342148966134314346429420179249952124521899990352892576701885445926273989210833075717106001737807153499),\n",
" (325834850451854833442478847/30317214134131077328593201, -5886346872409528149568212334188213358225/166929824520321193945622172391945198551),\n",
" (325834850451854833442478847/30317214134131077328593201, 5886346872409528149568212334188213358225/166929824520321193945622172391945198551),\n",
" (35000450332537238375816131238920468039644512532639448425029109696933549338160050365856516519117940554087186467128821275587812578780731608688076416621654632376418090787446762284984922570404243724742007199960424214121789627534813464492691327/35114898971745411544624690697228137440421229966119516102394391591149751940939137437520661961999728180295912028386870597236715757321783427751002656512980610170681300045906238089861144691340220016042203037765535333714538210269481882974760041, 11378661513636668252896030210547456559778912474488475373514318259987954116522578313651601963243498729904514250038441528902170980359200445773173551400980723042436312209063350317690389545191999283355186407010590155013601178402142833508358349823828411185677970145080868948221437429828915126521486240627636957258809857136220175279105376593536519820478202346726425/6580170318789170046882011863726093940057341772994600134948363077863005933415906287307769076269336346966606357097063122624205377562432263392428141875502886071173477833128819068374613602757410481232967110203324985578502756060655611173462054083041597235721642429742528850885359898186876697444354956721574375897614283412267761281128574937651691861821019543796661),\n",
" (54284942929043300353345037285319390971266705165251921458212985845879986905523411207746423541679613822235632028703906553152853353033298676989013998305892241323971260853461942281065543445730621744817866592353492701778496251846121467182007289770716217821818433/29005734126932050423892295535748974963887329912806320406222052626256685168117454043758710681907209478363311656558689493772245885735907645096953173146763377835605610826526878034240785596130309005469841297247042967200822104034090354575996393548020587129146896, -14449110601871672103961897878187090219327931822197664041733460339789658903033357448808966077968028849824718963562662676561595597663833084901813248723313835371301600802486792079343190319409531883891186135376415709320500744564354749181779299121201653302869559751146079964605537124286229147431934270904633080784601022521357835263896787645227390167002233464126890323822962901479048125766497/4939986848465946884428894628541393922766421007292096659483176930034373839264776364500197199772112998593509716143978095208270696064989942301449741350251066991574453836987643291463787066905878901425903962761533948853319339467573127883987888107262534296229156943356376293259164848025851719030685130516829099645014808871774172950536567308076994568119239791401338795319882917838712632069056),\n",
" (5684150277056117693846073619995323254386866370604842807073292934419395643307861577132678294864954361949801672459386186730873157285330358354107931645120620875357334038123871830830559473593429551682788737279/1056911971851427162802714448120900366504970078809666992768301663408816735265232740592304336466299962362270962560331941729109885002117267945516013139310944948619116613575918096876225158241205942124948207121, 13638683720085901049911726735238381455763625553463979060312922829070513438140434921573462523190297450398799354847126354062180768578370412199273577408531416967792243553129019239581069488260992658078713007830849056526571315273190779950074932161706013271031184212495799986563212072927612019198936687865237114319/1086571290568805444226876368915057303285200649533062874911547930458942505972214427179228604553813824095830580706123476190402902371726379170682257360071789769282277340953982830656389818488003086293758560143542117006138473946962118261255527213669133541552542381511954530428775915106856220977904941327012073081),\n",
" (6240940251494753633227024829892302603392538475716474317707208222431548249666435108231311717106406941530180853632195199/9539345175968736560903584678857068119822269884979225450253407202998439409175936086607993784916508103946056692920544601, -1406849049119092832237093556439111153635104851757943027401705542387850789862037957068060425740847194526699113206741717170668122141903698616153546287533203810328495611258645066601/931703754700713299299652521220570772823323385460468565439208795194977524037443490103128431854398033992538357575354582944439514257535906506019487435586435003132064876626258095651),\n",
" (6240940251494753633227024829892302603392538475716474317707208222431548249666435108231311717106406941530180853632195199/9539345175968736560903584678857068119822269884979225450253407202998439409175936086607993784916508103946056692920544601, 1406849049119092832237093556439111153635104851757943027401705542387850789862037957068060425740847194526699113206741717170668122141903698616153546287533203810328495611258645066601/931703754700713299299652521220570772823323385460468565439208795194977524037443490103128431854398033992538357575354582944439514257535906506019487435586435003132064876626258095651),\n",
" (66113/80656, -36583777/22906304),\n",
" (66113/80656, 36583777/22906304),\n",
" (772805555622561085754284730649320876540759479924781966253867217010713775046113600513/12233383819070573854920228034719826243115561262689186285612357731049270470224998656, -679371111983979366950341936886555511235721226683940182435309400379402966288001337776039889374603688960884501650478073311169023/1353068871137800746667176634296189674394299711557302820433259748960169557285123196821411142491595877100106405022999898525696),\n",
" (772805555622561085754284730649320876540759479924781966253867217010713775046113600513/12233383819070573854920228034719826243115561262689186285612357731049270470224998656, 679371111983979366950341936886555511235721226683940182435309400379402966288001337776039889374603688960884501650478073311169023/1353068871137800746667176634296189674394299711557302820433259748960169557285123196821411142491595877100106405022999898525696),\n",
" (80847053920120592072485074387717081543836128321/63867645803444970935968042899269555386658010000, -32395651382706597537447408594480794057642008040898942035222041398537119/16140662709436744049800953359816559688753520982587414381484613701000000),\n",
" (80847053920120592072485074387717081543836128321/63867645803444970935968042899269555386658010000, 32395651382706597537447408594480794057642008040898942035222041398537119/16140662709436744049800953359816559688753520982587414381484613701000000)}"
]
},
"metadata": {},
"execution_count": 7
}
],
"metadata": {}
}
],
"nbformat": 4,
"nbformat_minor": 2,
"metadata": {
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": 3
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment