From 27baa520d3bb1fe0717edc2c61facc7dfb3ac4b9 Mon Sep 17 00:00:00 2001 From: Peter Stahlecker Date: Mon, 6 Apr 2026 18:50:12 +0200 Subject: [PATCH] discpushing another disc --- .../disc_pushing_disc_501_nodes_solution.csv | 7014 +++++++++++++++++ .../beginner/plot_disc_pushing_disc.py | 562 ++ 2 files changed, 7576 insertions(+) create mode 100644 examples-gallery/beginner/disc_pushing_disc_501_nodes_solution.csv create mode 100644 examples-gallery/beginner/plot_disc_pushing_disc.py diff --git a/examples-gallery/beginner/disc_pushing_disc_501_nodes_solution.csv b/examples-gallery/beginner/disc_pushing_disc_501_nodes_solution.csv new file mode 100644 index 00000000..336df212 --- /dev/null +++ b/examples-gallery/beginner/disc_pushing_disc_501_nodes_solution.csv @@ -0,0 +1,7014 @@ +8.750000000000 +8.749618302644 +8.748855161232 +8.747710592373 +8.746184612517 +8.744277238578 +8.741988488217 +8.739318380178 +8.736266934697 +8.732834174013 +8.729020123026 +8.724824810237 +8.720248269226 +8.715290541265 +8.709951680289 +8.704231762786 +8.698130907812 +8.691649317011 +8.684787351662 +8.677545669075 +8.669925425457 +8.661928472954 +8.653557328367 +8.644814706702 +8.635702878859 +8.626223392138 +8.616377204818 +8.606164930529 +8.595587017260 +8.584643845780 +8.573335777266 +8.561663175092 +8.549626414781 +8.537225888859 +8.524462009623 +8.511335211095 +8.497845950703 +8.483994710876 +8.469782000642 +8.455208357244 +8.440274347803 +8.424980571009 +8.409327658856 +8.393316278413 +8.376947133629 +8.360220967179 +8.343138562339 +8.325700744894 +8.307908385081 +8.289762399559 +8.271263753403 +8.252413462134 +8.233212593763 +8.213662270860 +8.193763672652 +8.173518037122 +8.152926663139 +8.131990912598 +8.110712212563 +8.089092057430 +8.067132011092 +8.044833709109 +8.022198860878 +7.999229251806 +7.975926745484 +7.952293285849 +7.928330899347 +7.904041697083 +7.879427876974 +7.854491725872 +7.829235621697 +7.803662035544 +7.777773533789 +7.751572780171 +7.725062537878 +7.698245671610 +7.671125149648 +7.643704045901 +7.615985541970 +7.587972929195 +7.559669610720 +7.531079103566 +7.502205040718 +7.473051173236 +7.443621372404 +7.413919631910 +7.383950070080 +7.353716932170 +7.323224592733 +7.292477558058 +7.261480468718 +7.230238102216 +7.198755375762 +7.167037349177 +7.135089227963 +7.102916366532 +7.070524271621 +7.037918605909 +7.005105191840 +6.972090015686 +6.938879231842 +6.905479167379 +6.871896326855 +6.838137397408 +6.804209254110 +6.770118965609 +6.735873800035 +6.701481231180 +6.666948944920 +6.632284845872 +6.597497064248 +6.562593962878 +6.527584144349 +6.492476458206 +6.457280008143 +6.422004159122 +6.386658544296 +6.351253071674 +6.315797930365 +6.280303596316 +6.244780837368 +6.209242152772 +6.173700311636 +6.138168155492 +6.102658601353 +6.067184644875 +6.031759363632 +5.996395920455 +5.961107566836 +5.925907646359 +5.890809598140 +5.855826960249 +5.820973373068 +5.786262582577 +5.751708443502 +5.717324922316 +5.683126100029 +5.649126174730 +5.615339463839 +5.581780406014 +5.548463562657 +5.515403618968 +5.482615384490 +5.450113793069 +5.417913952274 +5.386030884082 +5.354479453189 +5.323274333770 +5.292429976964 +5.261960579250 +5.231880051879 +5.202201991466 +5.172939651820 +5.144105917074 +5.115713276117 +5.087773798345 +5.060299110672 +5.033300375787 +5.006788271569 +4.980772971602 +4.955264126705 +4.930270847402 +4.905801687235 +4.881864626859 +4.858467058831 +4.835615773026 +4.813316942626 +4.791576110630 +4.770398176840 +4.749787385298 +4.729747312158 +4.710280853984 +4.691390216473 +4.673076903633 +4.655341707420 +4.638184697894 +4.621605213915 +4.605601854450 +4.590172470540 +4.575314158007 +4.561023250956 +4.547295316171 +4.534125148476 +4.521506767147 +4.509433413467 +4.497897549504 +4.486890858217 +4.476404244949 +4.466427840414 +4.456951005251 +4.447962336216 +4.439449674089 +4.431400113370 +4.423800013810 +4.416635013860 +4.409890046083 +4.403549354604 +4.397596514775 +4.392014455966 +4.386785493466 +4.381891406706 +4.377313764897 +4.373035304943 +4.369042581824 +4.365307247337 +4.361746382940 +4.358267460651 +4.354790520379 +4.351247437995 +4.347581243097 +4.343745994364 +4.339706624539 +4.335438607808 +4.330927452057 +4.326168060182 +4.321164026160 +4.315926979325 +4.310476231392 +4.304839098828 +4.299049567269 +4.293129757544 +4.287066055408 +4.280831915564 +4.274404023146 +4.267762017560 +4.260881595286 +4.253735466426 +4.246309024792 +4.238591573225 +4.230574204310 +4.222249615619 +4.213612104652 +4.204657579104 +4.195383563490 +4.185789198428 +4.175875227458 +4.165643929274 +4.155098445262 +4.144237226525 +4.133048319146 +4.121535330590 +4.109706638576 +4.097572067641 +4.085142726464 +4.072430941633 +4.059450188054 +4.046215014887 +4.032740967639 +4.019044507116 +4.005142925910 +3.991054263180 +3.976797218425 +3.962391064984 +3.947855563948 +3.933210879153 +3.918477493880 +3.903676129825 +3.888827668878 +3.873953078144 +3.859073338614 +3.844209377802 +3.829382006615 +3.814611860628 +3.799919345919 +3.785324589510 +3.770847394443 +3.756507199446 +3.742323043121 +3.728313532526 +3.714496816014 +3.700890560146 +3.687511930489 +3.674377576087 +3.661503617390 +3.648905637399 +3.636598675823 +3.624597225988 +3.612915234302 +3.601566102029 +3.590562689180 +3.579917320297 +3.569641791948 +3.559747381738 +3.550244858663 +3.541144494645 +3.532456077088 +3.524188922320 +3.516351889778 +3.508953396824 +3.502001434071 +3.495503581122 +3.489467022623 +3.483898564548 +3.478804650635 +3.474191378903 +3.470064518194 +3.466429524666 +3.463291558210 +3.460655498720 +3.458525962200 +3.456907316652 +3.455803697728 +3.455219016430 +3.455132161915 +3.455485724070 +3.456284515472 +3.457532762411 +3.459234540663 +3.461393784818 +3.464014297128 +3.467099756140 +3.470653725094 +3.474679660074 +3.479180917912 +3.484160763841 +3.489622378875 +3.495568866930 +3.502003261670 +3.508928533069 +3.516347593705 +3.524263304751 +3.532678481692 +3.541595899736 +3.551018298938 +3.560948389014 +3.571388853857 +3.582342355742 +3.593811539226 +3.605799034829 +3.618307463575 +3.631339455875 +3.644897845235 +3.658987728987 +3.673630508018 +3.688786123464 +3.704116107378 +3.719286356303 +3.734005108781 +3.748023458368 +3.761142638655 +3.773220386439 +3.784175014883 +3.793986919193 +3.802697475727 +3.810405440332 +3.817261082689 +3.823458430456 +3.829219999269 +3.834762852074 +3.840336573227 +3.846211680198 +3.852540113463 +3.859323424781 +3.866557876994 +3.874250331094 +3.882411324192 +3.891052532032 +3.900186140056 +3.909824703940 +3.919981122609 +3.930661798640 +3.941868206354 +3.953601826402 +3.965864134535 +3.978656590464 +3.991980626694 +4.005837637306 +4.020228966661 +4.035155898017 +4.050619642042 +4.066621325225 +4.083161978170 +4.100242523773 +4.117863765285 +4.136026374257 +4.154730878376 +4.173977649192 +4.193766889746 +4.214098622111 +4.234972674856 +4.256388670444 +4.278346012591 +4.300843873590 +4.323881181627 +4.347456608123 +4.371568555101 +4.396215142636 +4.421394196387 +4.447103235274 +4.473339459302 +4.500099737597 +4.527380596690 +4.555178209097 +4.583488382370 +4.612306549000 +4.641627758839 +4.671446680976 +4.701757646115 +4.732554870403 +4.763833485414 +4.795593786000 +4.827852377691 +4.860602841046 +4.893593240352 +4.926442043732 +4.958803841209 +4.990377953215 +5.020910981450 +5.050203048855 +5.078113325181 +5.104563396658 +5.129538135561 +5.153084061625 +5.175305338545 +5.196354222195 +5.216318925514 +5.235336381481 +5.253590243472 +5.271311783643 +5.288763945232 +5.306113554462 +5.323363150037 +5.340488686147 +5.357478444358 +5.374326843991 +5.391030170555 +5.407585232509 +5.423989013424 +5.440238589065 +5.456331107952 +5.472263786204 +5.488033905441 +5.503638811296 +5.519075912029 +5.534342677128 +5.549436635902 +5.564355376045 +5.579096542181 +5.593657834404 +5.608037006797 +5.622231865951 +5.636240269480 +5.650060124538 +5.663689386338 +5.677126056685 +5.690368182517 +5.703413854465 +5.716261205429 +5.728908409181 +5.741353678996 +5.753595266306 +5.765631459395 +5.777460582128 +5.789080992718 +5.800491082543 +5.811689274998 +5.822674024412 +5.833443815000 +5.843997159887 +5.854332600175 +5.864448704086 +5.874344066155 +5.884017306499 +5.893467070149 +5.902692026456 +5.911690868569 +5.920462312990 +5.929005099207 +5.937317989405 +5.945399768262 +5.953249242822 +5.960865242466 +5.968246618954 +5.975392246572 +5.982301022353 +5.988971866402 +5.995403722307 +6.001595557646 +6.007546364582 +6.013255160562 +6.018720989105 +6.023942920688 +6.028920053727 +6.033651515654 +6.038136464091 +6.042374088118 +6.046363609638 +6.050104284832 +6.053595405713 +6.056836301769 +6.059826341696 +6.062564935223 +6.065051535021 +6.067285638701 +6.069266790892 +6.070994585404 +6.072468667460 +6.073688736010 +6.074654546130 +6.075365912204 +6.075822762063 +0.000000000000 +-0.000000382149 +-0.000000912834 +-0.000001398573 +-0.000001669743 +-0.000001570138 +-0.000000948377 +0.000000350076 +0.000002491374 +0.000005663479 +0.000010089511 +0.000016046176 +0.000023889870 +0.000034094116 +0.000047303407 +0.000064410440 +0.000086665843 +0.000115830949 +0.000154382056 +0.000205760405 +0.000274616267 +0.000366887354 +0.000489412701 +0.000648922420 +0.000850959972 +0.001099567495 +0.001397665068 +0.001747548802 +0.002151229193 +0.002610609692 +0.003127569936 +0.003704001938 +0.004341825137 +0.005042992472 +0.005809492813 +0.006643351935 +0.007546632951 +0.008521436524 +0.009569900993 +0.010694202456 +0.011896554822 +0.013179209849 +0.014544457144 +0.015994624156 +0.017532076130 +0.019159216046 +0.020878484533 +0.022692359747 +0.024603357233 +0.026614029758 +0.028726967109 +0.030944795872 +0.033270179178 +0.035705816425 +0.038254442965 +0.040918829772 +0.043701783077 +0.046606143976 +0.049634788017 +0.052790624754 +0.056076597283 +0.059495681756 +0.063050886865 +0.066745253315 +0.070581853275 +0.074563789811 +0.078694196310 +0.082976235890 +0.087413100794 +0.092008011793 +0.096764217566 +0.101684994098 +0.106773644066 +0.112033496238 +0.117467904877 +0.123080249159 +0.128873932606 +0.134852382533 +0.141019049519 +0.147377406903 +0.153930950303 +0.160683197163 +0.167637686334 +0.174797977677 +0.182167651712 +0.189750309283 +0.197549571264 +0.205569078289 +0.213812490511 +0.222283487378 +0.230985767427 +0.239923048088 +0.249099065486 +0.258517574227 +0.268182347169 +0.278097175145 +0.288265866631 +0.298692247333 +0.309380159678 +0.320333462166 +0.331556028568 +0.343051746935 +0.354824518364 +0.366878255503 +0.379216880729 +0.391844323968 +0.404764520084 +0.417981405793 +0.431498916043 +0.445320979782 +0.459451515057 +0.473894423371 +0.488653583229 +0.503732842796 +0.519136011598 +0.534866851199 +0.550929064784 +0.567326285590 +0.584062064137 +0.601139854206 +0.618562997543 +0.636332701965 +0.654449845459 +0.672915237242 +0.691729615158 +0.710893642717 +0.730407905769 +0.750272908764 +0.770489070597 +0.791056719988 +0.811976090395 +0.833247314426 +0.854870417719 +0.876845312282 +0.899171789267 +0.921849511148 +0.944878003300 +0.968256644946 +0.991984659469 +1.016061104064 +1.040484858730 +1.065254614576 +1.090368861454 +1.115825874895 +1.141620756564 +1.167747342112 +1.194198891042 +1.220968088871 +1.248047051459 +1.275427331340 +1.303099925894 +1.331055287194 +1.359283333345 +1.387773461139 +1.416514559856 +1.445495026055 +1.474702779204 +1.504125278031 +1.533749537472 +1.563562146128 +1.593549284173 +1.623696741633 +1.653989937020 +1.684413936294 +1.714953472152 +1.745592963643 +1.776316536143 +1.807108041711 +1.837951079866 +1.868829018833 +1.899725017300 +1.930622046742 +1.961502914367 +1.992350286733 +2.023146714085 +2.053874655476 +2.084516504699 +2.115054617091 +2.145471337232 +2.175749027588 +2.205870098115 +2.235817036845 +2.265572441480 +2.295119052007 +2.324439784324 +2.353517764898 +2.382336366449 +2.410879244648 +2.439130375842 +2.467074095772 +2.494695139317 +2.521978681225 +2.548910377856 +2.575476409930 +2.601663526287 +2.627459088674 +2.652851117625 +2.677828339792 +2.702380239549 +2.726497134421 +2.750170398650 +2.773393518571 +2.796166774134 +2.818506597689 +2.840380997100 +2.861566685515 +2.881800248255 +2.900856571225 +2.918548968656 +2.934729647791 +2.949292216447 +2.962173983826 +2.973357307720 +2.982869779508 +2.990783214581 +2.997211539032 +3.002307911948 +3.006262064154 +3.009299376240 +3.011672250953 +3.013581298297 +3.015077971710 +3.016159477720 +3.016834134587 +3.017120988483 +3.017112620276 +3.016923790370 +3.016594760865 +3.016155127469 +3.015634002440 +3.015060903527 +3.014465786760 +3.013878974678 +3.013331064631 +3.012852821966 +3.012474975333 +3.012226853028 +3.012123767441 +3.012157627472 +3.012371704463 +3.012801863593 +3.013477972070 +3.014429122527 +3.015683712913 +3.017269365250 +3.019212846853 +3.021539997296 +3.024275661612 +3.027443630139 +3.031066585343 +3.035166055877 +3.039762378050 +3.044874664789 +3.050520782114 +3.056717333034 +3.063479648707 +3.070821786644 +3.078756535627 +3.087295427004 +3.096448751922 +3.106225584054 +3.116633807309 +3.127680148035 +3.139370211151 +3.151708519713 +3.164698557360 +3.178342813128 +3.192642828151 +3.207599243755 +3.223211850519 +3.239479637878 +3.256400843906 +3.273973004916 +3.292193004593 +3.311057122374 +3.330561080844 +3.350700091945 +3.371468901829 +3.392861834213 +3.414872832112 +3.437495497874 +3.460723131448 +3.484548766826 +3.508965206646 +3.533965054931 +3.559540747976 +3.585684583390 +3.612388747307 +3.639645339824 +3.667446398676 +3.695783921204 +3.724649884677 +3.754036264999 +3.783935053872 +3.814338274463 +3.845237995642 +3.876626344845 +3.908495519613 +3.940837797883 +3.973645547070 +4.006911232010 +4.040627421812 +4.074786796446 +4.109384739442 +4.144374312075 +4.179747829508 +4.215498658537 +4.251620212830 +4.288105954552 +4.324949396085 +4.362144101229 +4.399683685914 +4.437561818449 +4.475772219325 +4.514308660594 +4.553164964838 +4.592335003756 +4.631812696383 +4.671592006946 +4.711666942398 +4.752031549616 +4.792679912301 +4.833606147586 +4.874804402351 +4.916268849285 +4.957993682684 +4.999973114007 +5.042201367201 +5.084672673872 +5.127381269054 +5.170321396671 +5.213487431491 +5.256875226842 +5.300491179185 +5.344301904544 +5.388086778913 +5.431634951366 +5.474768535708 +5.517341823135 +5.559244190151 +5.600401950128 +5.640778499475 +5.680372828366 +5.719216618140 +5.757370209328 +5.794917755516 +5.831961908722 +5.868615380446 +5.904984822353 +5.941190451424 +5.977360356603 +6.013563642395 +6.049797944752 +6.086058783849 +6.122346469638 +6.158662832296 +6.195010042985 +6.231390307785 +6.267805781392 +6.304258530195 +6.340747050235 +6.377267046311 +6.413813951221 +6.450382929445 +6.486968880536 +6.523566442263 +6.560169993570 +6.596773657428 +6.633371303630 +6.669956551592 +6.706522773213 +6.743063095841 +6.779570405398 +6.816037349700 +6.852456342018 +6.888819564924 +6.925118974451 +6.961346304610 +6.997493072296 +7.033550582620 +7.069509934693 +7.105362027904 +7.141097568703 +7.176707077942 +7.212180898781 +7.247509205191 +7.282682011090 +7.317689180111 +7.352520436052 +7.387165374007 +7.421613472205 +7.455854104577 +7.489876554064 +7.523670026717 +7.557223666656 +7.590526572275 +7.623567815136 +7.656336467935 +7.688821669488 +7.721012845959 +7.752900525939 +7.784478294067 +7.815735029488 +7.846616494258 +7.877053211712 +7.906991592322 +7.936393860452 +7.965236724298 +7.993510515183 +8.021218077856 +8.048373295743 +8.074999330177 +8.101126699505 +8.126791345442 +8.152032544288 +8.176881455704 +8.201371944530 +8.225538950365 +8.249417210076 +8.273038625419 +8.296421673455 +8.319568866613 +8.342480473471 +8.365158037043 +8.387603701010 +8.409819793028 +8.431808699596 +8.453572833980 +8.475114627643 +8.496436527093 +8.517540991963 +8.538430493412 +8.559107512661 +8.579574539638 +8.599834071707 +8.619888612502 +8.639740670840 +8.659392759739 +8.678847395519 +8.698107097007 +8.717174384821 +8.736051780756 +8.754741807255 +8.773246986975 +8.791569842437 +8.809712895770 +8.827678668535 +8.845469681646 +8.863088455362 +8.880537509376 +8.897819362975 +8.914936535282 +8.931891545583 +8.948686913722 +8.965325160572 +8.981808808582 +8.998140382388 +9.014322409498 +9.030357421034 +9.046247952546 +9.061996544874 +9.077605745082 +9.093078107431 +9.108416194416 +9.123622577843 +9.138699839956 +9.153650574603 +9.168477388445 +9.183182902193 +9.197769751888 +9.212240590198 +9.226598087748 +9.240844934466 +9.254983840952 +9.269017539849 +9.282948787238 +9.296780364029 +9.310515077352 +9.324155761950 +9.337705281563 +9.351166530298 +9.364542433981 +9.377835951494 +9.391050076084 +9.404187836634 +9.417252298911 +9.430246566769 +9.443173783299 +9.456037131944 +9.468839837551 +9.481585167360 +9.494276431935 +9.506916986023 +9.519510229338 +9.532059607263 +9.544568611470 +9.557040780449 +9.569479699944 +9.581889003283 +9.594272371655 +9.606633537241 +5.000000000000 +4.999999903416 +4.999999648454 +4.999999195571 +4.999998519484 +4.999997604027 +4.999996438856 +4.999995017333 +4.999993335164 +4.999991389539 +4.999989178580 +4.999986701003 +4.999983955910 +4.999980942694 +4.999977660997 +4.999974110747 +4.999970292256 +4.999966206393 +4.999961854847 +4.999957240500 +4.999952367886 +4.999947243592 +4.999941876267 +4.999936275848 +4.999930452184 +4.999924413863 +4.999918167736 +4.999911718999 +4.999905071513 +4.999898228156 +4.999891191115 +4.999883962107 +4.999876542531 +4.999868933570 +4.999861136265 +4.999853151557 +4.999844980321 +4.999836623380 +4.999828081528 +4.999819355529 +4.999810446132 +4.999801354070 +4.999792080066 +4.999782624838 +4.999772989099 +4.999763173558 +4.999753178926 +4.999743005915 +4.999732655242 +4.999722127630 +4.999711423810 +4.999700544525 +4.999689490528 +4.999678262590 +4.999666861497 +4.999655288056 +4.999643543096 +4.999631627472 +4.999619542065 +4.999607287789 +4.999594865590 +4.999582276450 +4.999569521394 +4.999556601488 +4.999543517847 +4.999530271637 +4.999516864079 +4.999503296451 +4.999489570100 +4.999475686436 +4.999461646946 +4.999447453196 +4.999433106833 +4.999418609597 +4.999403963324 +4.999389169952 +4.999374231527 +4.999359150215 +4.999343928305 +4.999328568217 +4.999313072514 +4.999297443908 +4.999281685272 +4.999265799647 +4.999249790256 +4.999233660511 +4.999217414029 +4.999201054644 +4.999184586415 +4.999168013647 +4.999151340902 +4.999134573012 +4.999117715100 +4.999100772592 +4.999083751239 +4.999066657131 +4.999049496722 +4.999032276843 +4.999015004729 +4.998997688037 +4.998980334872 +4.998962953806 +4.998945553908 +4.998928144763 +4.998910736501 +4.998893339826 +4.998875966035 +4.998858627055 +4.998841335464 +4.998824104521 +4.998806948196 +4.998789881195 +4.998772918990 +4.998756077848 +4.998739374853 +4.998722827936 +4.998706455896 +4.998690278425 +4.998674316131 +4.998658590552 +4.998643124174 +4.998627939879 +4.998613061031 +4.998598511610 +4.998584316306 +4.998570500585 +4.998557090737 +4.998544113919 +4.998531598181 +4.998519572491 +4.998508066763 +4.998497111873 +4.998486739678 +4.998476983034 +4.998467875814 +4.998459452926 +4.998451750325 +4.998444805037 +4.998438655168 +4.998433339931 +4.998428899656 +4.998425375820 +4.998422811057 +4.998421249191 +4.998420732978 +4.998421303968 +4.998423002908 +4.998425870003 +4.998429945063 +4.998435267597 +4.998441876869 +4.998449811930 +4.998459111639 +4.998469814679 +4.998481959576 +4.998495584710 +4.998510728340 +4.998527428619 +4.998545723630 +4.998565651405 +4.998587249970 +4.998610557375 +4.998635611736 +4.998662451282 +4.998691114399 +4.998721639678 +4.998754065969 +4.998788432432 +4.998824778591 +4.998863144392 +4.998903570256 +4.998946097142 +4.998990766600 +4.999037620833 +4.999086702755 +4.999138056049 +4.999191725227 +4.999247755685 +4.999306193763 +4.999367086795 +4.999430483167 +4.999496432363 +4.999564985015 +4.999636192941 +4.999710109186 +4.999786788052 +4.999866285117 +4.999948657252 +5.000033962620 +5.000122260665 +5.000213612080 +5.000308078763 +5.000405723741 +5.000506611070 +5.000610805710 +5.000718373349 +5.000829380172 +5.000943892420 +5.001061974628 +5.001183678579 +5.001308971031 +5.001437307850 +5.001565649334 +5.001684726721 +5.001808606534 +5.002046278969 +5.002540917135 +5.003419806423 +5.004791083348 +5.006742644765 +5.009339981285 +5.012624145553 +5.016610301017 +5.021287006180 +5.026616291986 +5.032534514270 +5.038953802516 +5.045763512411 +5.052830719930 +5.060005623465 +5.067171336538 +5.074306282719 +5.081424486257 +5.088533639170 +5.095635948514 +5.102731644023 +5.109820275725 +5.116901212672 +5.123973749815 +5.131037129816 +5.138090549158 +5.145133161313 +5.152164079391 +5.159182378748 +5.166187099619 +5.173177249951 +5.180151810276 +5.187109758602 +5.194050102319 +5.200971775989 +5.207873678908 +5.214754692377 +5.221613682815 +5.228449504398 +5.235261001643 +5.242047011949 +5.248806368065 +5.255537900499 +5.262240439846 +5.268912819028 +5.275553875453 +5.282162453073 +5.288737404339 +5.295277592058 +5.301781891135 +5.308249190206 +5.314678393162 +5.321068420552 +5.327418210876 +5.333726721764 +5.339992931037 +5.346215837657 +5.352394462574 +5.358527849458 +5.364615065325 +5.370655201076 +5.376647371922 +5.382590717730 +5.388484403273 +5.394327618405 +5.400119578149 +5.405859522717 +5.411546717461 +5.417180452759 +5.422760043843 +5.428284830574 +5.433754177164 +5.439167471859 +5.444524126577 +5.449823576508 +5.455065279690 +5.460248716544 +5.465373389394 +5.470438821958 +5.475444558825 +5.480390164912 +5.485275224910 +5.490099342716 +5.494862140861 +5.499563259922 +5.504202357940 +5.508779109828 +5.513293206776 +5.517744355657 +5.522132278438 +5.526456711585 +5.530717405472 +5.534914123800 +5.539046643007 +5.543114751697 +5.547118250062 +5.551056949313 +5.554930671116 +5.558739239033 +5.562482492962 +5.566160282298 +5.569772464757 +5.573318905894 +5.576799478630 +5.580214062771 +5.583562544548 +5.586844816147 +5.590060775249 +5.593210324578 +5.596293371439 +5.599309827279 +5.602259607231 +5.605142629680 +5.607958815815 +5.610708089198 +5.613390375326 +5.616005601200 +5.618553694895 +5.621034585131 +5.623448200852 +5.625794470797 +5.628073323081 +5.630284684760 +5.632428481211 +5.634504633215 +5.636513025611 +5.638453137221 +5.640320070021 +5.642077574519 +5.643807756609 +5.646162371535 +5.649776046146 +5.655192542863 +5.662863140885 +5.673132682530 +5.686228338177 +5.702253844027 +5.721189748440 +5.742899603625 +5.767141614547 +5.793584871973 +5.821828939913 +5.851424912787 +5.881893993176 +5.912737233501 +5.943461129796 +5.973807566834 +6.003790265617 +6.033434276422 +6.062745765202 +6.091724865156 +6.120370386071 +6.148680975875 +6.176655382026 +6.204292507703 +6.231591421332 +6.258551355866 +6.285171706050 +6.311452024979 +6.337392020418 +6.362991550984 +6.388250622257 +6.413169382826 +6.437748120293 +6.461987257245 +6.485887347211 +6.509449070605 +6.532673230685 +6.555560749518 +6.578112663980 +6.600330121779 +6.622214377540 +6.643766788932 +6.664988812861 +6.685882001735 +6.706447999809 +6.726688539607 +6.746605438451 +6.766200595070 +6.785475986335 +6.804433664081 +6.823075752068 +6.841404443043 +6.859421995942 +6.877130733209 +6.894533038259 +6.911631353056 +6.928428175809 +6.944926058668 +6.961127605035 +6.977035464811 +6.992652320214 +7.007980828993 +7.023023373327 +7.037780937429 +7.052248478175 +7.066402652439 +7.080244418068 +7.094045111490 +7.108225198562 +7.123173439531 +7.139236773308 +7.156716363618 +7.175858954960 +7.196848514708 +7.219799977812 +7.244755719522 +7.271684990104 +7.300486327776 +7.330992699956 +7.362976753624 +7.396157793935 +7.430208320697 +7.464756751041 +7.499411005122 +7.533924326032 +7.568285466580 +7.602526400175 +7.636660755932 +7.670692616149 +7.704623197043 +7.738452988072 +7.772182310404 +7.805811450092 +7.839340688506 +7.872770309455 +7.906100601254 +7.939331857724 +7.972464378994 +8.005498472263 +8.038434452570 +8.071272643570 +8.104013378321 +8.136657000083 +8.169203863130 +8.201654333568 +8.234008790167 +8.266267625203 +8.298431245309 +8.330500072339 +8.362474544239 +8.394355115927 +8.426142260187 +8.457836468566 +8.489438252285 +8.520948143150 +8.552366694480 +8.583694482039 +8.614932104967 +8.646080186730 +8.677139376062 +8.708110347922 +8.738993804448 +8.769790475918 +8.800501121708 +8.831126531253 +8.861667525015 +8.892124955436 +8.922499707900 +8.952792701687 +8.983004890922 +9.013137265518 +9.043190852113 +9.073166714993 +9.103065957013 +9.132889720495 +9.162639188115 +9.192315583784 +9.221920173493 +9.251454266153 +9.280919214405 +9.310316415409 +9.339647311604 +9.368913391444 +9.398116190096 +9.427257290110 +9.456338322052 +9.485360965096 +9.514326947576 +9.543238047494 +9.572096092984 +9.600902962721 +9.629660586283 +9.658370944453 +9.687036069470 +9.715658045210 +9.744239007309 +9.772781143219 +9.801286692195 +9.829757945202 +9.858197244756 +9.886606984682 +9.914989609793 +9.943347615479 +9.971683547219 +10.000000000000 +5.000000000000 +4.999999970119 +4.999999888662 +4.999999739870 +4.999999512310 +4.999999197700 +4.999998790046 +4.999998285026 +4.999997679533 +4.999996971350 +4.999996158907 +4.999995241118 +4.999994217257 +4.999993086885 +4.999991849796 +4.999990506007 +4.999989055761 +4.999987499571 +4.999985838298 +4.999984073260 +4.999982206384 +4.999980240347 +4.999978178593 +4.999976025113 +4.999973784018 +4.999971459147 +4.999969053857 +4.999966571000 +4.999964012984 +4.999961381853 +4.999958679382 +4.999955907140 +4.999953066546 +4.999950158915 +4.999947185486 +4.999944147446 +4.999941045949 +4.999937882124 +4.999934657091 +4.999931371962 +4.999928027851 +4.999924625875 +4.999921167160 +4.999917652838 +4.999914084056 +4.999910461973 +4.999906787761 +4.999903062611 +4.999899287726 +4.999895464330 +4.999891593664 +4.999887676988 +4.999883715581 +4.999879710743 +4.999875663796 +4.999871576081 +4.999867448965 +4.999863283834 +4.999859082102 +4.999854845203 +4.999850574599 +4.999846271776 +4.999841938247 +4.999837575553 +4.999833185259 +4.999828768961 +4.999824328284 +4.999819864881 +4.999815380436 +4.999810876664 +4.999806355311 +4.999801818155 +4.999797267007 +4.999792703713 +4.999788130150 +4.999783548231 +4.999778959906 +4.999774367159 +4.999769772011 +4.999765176520 +4.999760582782 +4.999755992932 +4.999751409142 +4.999746833624 +4.999742268631 +4.999737716452 +4.999733179421 +4.999728659909 +4.999724160330 +4.999719683137 +4.999715230825 +4.999710805929 +4.999706411023 +4.999702048724 +4.999697721686 +4.999693432601 +4.999689184201 +4.999684979253 +4.999680820558 +4.999676710953 +4.999672653304 +4.999668650508 +4.999664705485 +4.999660821183 +4.999657000566 +4.999653246615 +4.999649562324 +4.999645950689 +4.999642414711 +4.999638957384 +4.999635581688 +4.999632290585 +4.999629087007 +4.999625973848 +4.999622953954 +4.999620030114 +4.999617205042 +4.999614481373 +4.999611861639 +4.999609348263 +4.999606943538 +4.999604649547 +4.999602468156 +4.999600401008 +4.999598449517 +4.999596614861 +4.999594897968 +4.999593299502 +4.999591819854 +4.999590459118 +4.999589217082 +4.999588093203 +4.999587086594 +4.999586196002 +4.999585419789 +4.999584755910 +4.999584201897 +4.999583754833 +4.999583411331 +4.999583167517 +4.999583019005 +4.999582960877 +4.999582987660 +4.999583093308 +4.999583271109 +4.999583513677 +4.999583812968 +4.999584160293 +4.999584546331 +4.999584961142 +4.999585394183 +4.999585834323 +4.999586269859 +4.999586688534 +4.999587077558 +4.999587423631 +4.999587712962 +4.999587931300 +4.999588063956 +4.999588095834 +4.999588011462 +4.999587795022 +4.999587430385 +4.999586901148 +4.999586190664 +4.999585282089 +4.999584158414 +4.999582802510 +4.999581197168 +4.999579325143 +4.999577169199 +4.999574712151 +4.999571936919 +4.999568826566 +4.999565364356 +4.999561533795 +4.999557318688 +4.999552703184 +4.999547671833 +4.999542209631 +4.999536302081 +4.999529935236 +4.999523095758 +4.999515770968 +4.999507948897 +4.999499618339 +4.999490768903 +4.999481391059 +4.999471476191 +4.999461016640 +4.999450005757 +4.999438437939 +4.999426308677 +4.999413614592 +4.999400353475 +4.999386524309 +4.999372127256 +4.999357163238 +4.999341630620 +4.999325501278 +4.999308564402 +4.999289529351 +4.999261933972 +4.999206209888 +4.999155315911 +4.999329871168 +5.000052007004 +5.001597052160 +5.004189062851 +5.008000775601 +5.013151293296 +5.019704337665 +5.027667954838 +5.036995856762 +5.047590344539 +5.059306600045 +5.071957837054 +5.085320071298 +5.099134706254 +5.113119859754 +5.127061288110 +5.140920685122 +5.154723469401 +5.168483543691 +5.182205196067 +5.195889596122 +5.209537143435 +5.223148064171 +5.236722546183 +5.250260766481 +5.263762895761 +5.277229098457 +5.290659531978 +5.304054345863 +5.317413680957 +5.330737668625 +5.344026429837 +5.357280072403 +5.370498687922 +5.383682361725 +5.396831168465 +5.409945170178 +5.423024415864 +5.436068941184 +5.449078768212 +5.462053905240 +5.474994346638 +5.487900072764 +5.500771049927 +5.513607230392 +5.526408552431 +5.539174940419 +5.551906304968 +5.564602543093 +5.577263538423 +5.589889161430 +5.602479269700 +5.615033708222 +5.627552309703 +5.640034894906 +5.652481273001 +5.664891241941 +5.677264588847 +5.689601090402 +5.701900513259 +5.714162614457 +5.726387141840 +5.738573834481 +5.750722423106 +5.762832630527 +5.774904172060 +5.786936755956 +5.798930083818 +5.810883851018 +5.822797747108 +5.834671456227 +5.846504657494 +5.858297025402 +5.870048230197 +5.881757938253 +5.893425812435 +5.905051512450 +5.916634695198 +5.928175015099 +5.939672124420 +5.951125673590 +5.962535311501 +5.973900685803 +5.985221443184 +5.996497229648 +6.007727690771 +6.018912471959 +6.030051218689 +6.041143576743 +6.052189192433 +6.063187712817 +6.074138785904 +6.085042060857 +6.095897188180 +6.106703819902 +6.117461609756 +6.128170213343 +6.138829288300 +6.149438495282 +6.159997496444 +6.170505956295 +6.180963541918 +6.191369923106 +6.201724772494 +6.212027765690 +6.222278581397 +6.232476901539 +6.242622411378 +6.252714799635 +6.262753758606 +6.272738984278 +6.282670176448 +6.292547038838 +6.302369279213 +6.312136609505 +6.321848745933 +6.331505409130 +6.341106324279 +6.350651221243 +6.360139834713 +6.369571904360 +6.378947174988 +6.388265396697 +6.397526324931 +6.406729719067 +6.415875323043 +6.424962634541 +6.433988456237 +6.442930513904 +6.451838332764 +6.461099050976 +6.471082514605 +6.482101178915 +6.494413618585 +6.508220803281 +6.523663282096 +6.540820210838 +6.559710116172 +6.580293269725 +6.602475629169 +6.626114351406 +6.651024837339 +6.676988915241 +6.703762466665 +6.731079133848 +6.758664222044 +6.786367134797 +6.814187735523 +6.842132633819 +6.870198079160 +6.898376955192 +6.926661363083 +6.955043263329 +6.983514624236 +7.012067457924 +7.040693831507 +7.069385872326 +7.098135771341 +7.126935786014 +7.155778242911 +7.184655540091 +7.213560149290 +7.242484617903 +7.271421570770 +7.300363711765 +7.329303825189 +7.358234776975 +7.387149515694 +7.416041073384 +7.444902566189 +7.473727194823 +7.502508244855 +7.531239086827 +7.559913176205 +7.588524053171 +7.617065342259 +7.645530751845 +7.673914073487 +7.702209181134 +7.730410030205 +7.758510656532 +7.786505175202 +7.814387779266 +7.842152738360 +7.869794397215 +7.897307174075 +7.924685559034 +7.951924112279 +7.979017462249 +8.005960303675 +8.032747395367 +8.059373557207 +8.085833664263 +8.112122629833 +8.138235347426 +8.164166502401 +8.189910228397 +8.215461785110 +8.240822718845 +8.265994423322 +8.290974997540 +8.315760663133 +8.340347024261 +8.364730071110 +8.388906972987 +8.412876659173 +8.436640201423 +8.460201027060 +8.483564993340 +8.506740347533 +8.529737675630 +8.552569732942 +8.575251231188 +8.597798678393 +8.620229239091 +8.642553410471 +8.664770902669 +8.686879443905 +8.708877683345 +8.730764748546 +8.752539905496 +8.774202447406 +8.795751665029 +8.817186839308 +8.838507239519 +8.859712122675 +8.880800733223 +8.901772302817 +8.922626050120 +8.943361180633 +8.963976886534 +8.984472346543 +9.004846725810 +9.025099175818 +9.045228834311 +9.065234825245 +9.085116258761 +9.104872231180 +9.124501825029 +9.144004109079 +9.163378138428 +9.182622954591 +9.201737585632 +9.220721046315 +9.239572338291 +9.258290450309 +9.276874358462 +9.295323026461 +9.313635405946 +9.331810436824 +9.349847047649 +9.367744156028 +9.385500669072 +9.403115483876 +9.420587488042 +9.437915560239 +9.455098570801 +9.472135382368 +9.489024850564 +9.505765824722 +9.522357148649 +9.538797661434 +9.555086198302 +9.571221591512 +9.587202671298 +9.603028266867 +9.618697207425 +9.634208323272 +9.649560446929 +9.664752414317 +9.679783065992 +9.694651248418 +9.709355815299 +9.723895628951 +9.738269561731 +9.752476497510 +9.766515333196 +9.780384980309 +9.794084366599 +9.807612437715 +9.820968158916 +9.834150516836 +9.847158521288 +9.859991207112 +9.872647636068 +9.885126898767 +9.897428116648 +9.909550443980 +9.921493069917 +9.933255220568 +9.944836161115 +9.956235197945 +9.967451680820 +9.978485005062 +9.989334613759 +10.000000000000 +0.000000000000 +-0.000171610578 +-0.000514778817 +-0.001029558002 +-0.001716001351 +-0.002574161736 +-0.003604091554 +-0.004805842548 +-0.006179465607 +-0.007725010526 +-0.009442525725 +-0.011332057909 +-0.013393651581 +-0.015627348228 +-0.018033184743 +-0.020611190104 +-0.023361378252 +-0.026283733091 +-0.029378178451 +-0.032644523371 +-0.036082379192 +-0.039691078320 +-0.043469687745 +-0.047417202981 +-0.051532812723 +-0.055816011414 +-0.060266541435 +-0.064884291745 +-0.069669224525 +-0.074621335276 +-0.079740633783 +-0.085027135591 +-0.090480858251 +-0.096101819622 +-0.101890036995 +-0.107845526547 +-0.113968302901 +-0.120258378738 +-0.126715764394 +-0.133340467475 +-0.140132492446 +-0.147091840228 +-0.154218507773 +-0.161512487648 +-0.168973767600 +-0.176602330125 +-0.184398152029 +-0.192361203992 +-0.200491450123 +-0.208788847524 +-0.217253345851 +-0.225884886878 +-0.234683404068 +-0.243648822151 +-0.252781056707 +-0.262080013763 +-0.271545589399 +-0.281177669374 +-0.290976128759 +-0.300940831596 +-0.311071630577 +-0.321368366745 +-0.331830869218 +-0.342458954948 +-0.353252428506 +-0.364211081901 +-0.375334694435 +-0.386623032603 +-0.398075850022 +-0.409692887421 +-0.421473872665 +-0.433418520835 +-0.445526534361 +-0.457797603211 +-0.470231405134 +-0.482827605972 +-0.495585860028 +-0.508505810503 +-0.521587090003 +-0.534829321112 +-0.548232117042 +-0.561795082353 +-0.575517813748 +-0.589399900952 +-0.603440927657 +-0.617640472553 +-0.631998110438 +-0.646513413400 +-0.661185952083 +-0.676015297026 +-0.691001020082 +-0.706142695902 +-0.721439903502 +-0.736892227888 +-0.752499261750 +-0.768260607217 +-0.784175877667 +-0.800244699584 +-0.816466714463 +-0.832841580746 +-0.849368975795 +-0.866048597873 +-0.882880168142 +-0.899863432661 +-0.916998164369 +-0.934284165041 +-0.951721267209 +-0.969309336030 +-0.987048271085 +-1.004938008093 +-1.022978520523 +-1.041169821093 +-1.059511963122 +-1.078005041736 +-1.096649194899 +-1.115444604240 +-1.134391495686 +-1.153490139855 +-1.172740852212 +-1.192143992958 +-1.211699966658 +-1.231408157253 +-1.251267930323 +-1.271278777746 +-1.291440319791 +-1.311752307110 +-1.332214622616 +-1.352827283245 +-1.373590441584 +-1.394504387370 +-1.415569548854 +-1.436786494012 +-1.458155931603 +-1.479678712071 +-1.501355828278 +-1.523188416061 +-1.545177754602 +-1.567325266622 +-1.589632518357 +-1.612101219345 +-1.634733221989 +-1.657530520894 +-1.680495251977 +-1.703629691333 +-1.726934950623 +-1.750411822254 +-1.774061083482 +-1.797883495634 +-1.821879803500 +-1.846050734895 +-1.870397000336 +-1.894919292815 +-1.919618287624 +-1.944494642213 +-1.969548996033 +-1.994781970351 +-2.020194167998 +-2.045786173040 +-2.071558550339 +-2.097511845000 +-2.123646581680 +-2.149963263767 +-2.176462372393 +-2.203144365320 +-2.230009675653 +-2.257058710416 +-2.284291848976 +-2.311709441329 +-2.339311806244 +-2.367099229287 +-2.395071960719 +-2.423230213286 +-2.451574159906 +-2.480103931262 +-2.508819613314 +-2.537721244733 +-2.566808814274 +-2.596082258092 +-2.625541457001 +-2.655186233702 +-2.685016349972 +-2.715031503819 +-2.745231326621 +-2.775615380229 +-2.806183154061 +-2.836934062165 +-2.867867440250 +-2.898982542694 +-2.930278539489 +-2.961754513134 +-2.993409455437 +-3.025242264205 +-3.057251739792 +-3.089436581459 +-3.121795383496 +-3.154326631064 +-3.187028695690 +-3.219899830382 +-3.252938164507 +-3.286141699461 +-3.319508309768 +-3.353035761586 +-3.386721727930 +-3.420563476991 +-3.454558076147 +-3.488709876126 +-3.523033175040 +-3.557549014868 +-3.592283006496 +-3.627263102409 +-3.662517113275 +-3.698070120516 +-3.733941939505 +-3.770144770577 +-3.806681159406 +-3.843542361147 +-3.880707132161 +-3.918140781346 +-3.955794080548 +-3.993604410543 +-4.031517123210 +-4.069516555961 +-4.107602995347 +-4.145773973104 +-4.184023926737 +-4.222317498357 +-4.260608997289 +-4.298884800142 +-4.337136296292 +-4.375355330470 +-4.413533768872 +-4.451663449333 +-4.489736178510 +-4.527743738141 +-4.565677898356 +-4.603530475182 +-4.641293907322 +-4.678966880115 +-4.716558558978 +-4.754055391753 +-4.791447157735 +-4.828726148453 +-4.865884855009 +-4.902915915531 +-4.939812133370 +-4.976566496176 +-5.013172194578 +-5.049622640238 +-5.085911483115 +-5.122032627761 +-5.157980248487 +-5.193748803238 +-5.229333046061 +-5.264728038040 +-5.299929156626 +-5.334932103289 +-5.369732909458 +-5.404327940755 +-5.438713899514 +-5.472887825658 +-5.506847095976 +-5.540589421889 +-5.574112845811 +-5.607415736219 +-5.640496781545 +-5.673354983036 +-5.705989646705 +-5.738400374514 +-5.770587054916 +-5.802549852891 +-5.834289199591 +-5.865805781710 +-5.897100530692 +-5.928174611859 +-5.959029413550 +-5.989666536358 +-6.020087782510 +-6.050295145458 +-6.080290799736 +-6.110077091096 +-6.139656526980 +-6.169031767335 +-6.198205615798 +-6.227181011245 +-6.255961019735 +-6.284548826829 +-6.312947730296 +-6.341161133189 +-6.369192537298 +-6.397045536957 +-6.424723813202 +-6.452231128266 +-6.479571320393 +-6.506748298966 +-6.533766039925 +-6.560628581468 +-6.587340020017 +-6.613904506432 +-6.640326242466 +-6.666609477440 +-6.692758505127 +-6.718777660836 +-6.744671321924 +-6.770454310545 +-6.796146044020 +-6.821749421597 +-6.847267754164 +-6.872704373538 +-6.898062630855 +-6.923345895282 +-6.948557552798 +-6.973701005067 +-6.998779668368 +-7.023796972593 +-7.048756360306 +-7.073661285857 +-7.098515214551 +-7.123321621856 +-7.148083992667 +-7.172805820602 +-7.197490607337 +-7.222141861974 +-7.246763100444 +-7.271357844935 +-7.295929623340 +-7.320481968741 +-7.345018418898 +-7.369542515767 +-7.394057805035 +-7.418567835788 +-7.443076161675 +-7.467586361640 +-7.492102286634 +-7.516629888806 +-7.541167144810 +-7.565668756170 +-7.590084982944 +-7.614368025532 +-7.638473331939 +-7.662361933181 +-7.686002657186 +-7.709373941585 +-7.732465144645 +-7.755277307895 +-7.777823359837 +-7.800127781415 +-7.822225790695 +-7.844160811362 +-7.865977777243 +-7.887732265666 +-7.909488521644 +-7.931285296130 +-7.953125564786 +-7.975011121419 +-7.996946511605 +-8.018937359713 +-8.040989733221 +-8.063109977479 +-8.085304674670 +-8.107580632131 +-8.129942546386 +-8.152393382897 +-8.174936031094 +-8.197573307115 +-8.220307956268 +-8.243142655216 +-8.266080013901 +-8.289122577248 +-8.312272826653 +-8.335533181281 +-8.358905999191 +-8.382393578303 +-8.405998157220 +-8.429721915911 +-8.453566976272 +-8.477535402581 +-8.501629201830 +-8.525850323973 +-8.550200662076 +-8.574682052375 +-8.599296274260 +-8.624045050181 +-8.648930045476 +-8.673952868138 +-8.699115068510 +-8.724418138920 +-8.749863513261 +-8.775452566505 +-8.801186614172 +-8.827066911740 +-8.853094654014 +-8.879270974438 +-8.905596944393 +-8.932073572493 +-8.958701804075 +-8.985482521596 +-9.012416549064 +-9.039504674578 +-9.066747755050 +-9.094147187398 +-9.121706844546 +-9.149438152594 +-9.177342147585 +-9.205308111717 +-9.233166810851 +-9.260766189015 +-9.287975169447 +-9.314684659220 +-9.340810201419 +-9.366294267374 +-9.391107543907 +-9.415249075293 +-9.438745273423 +-9.461647876096 +-9.484029445008 +-9.505933340470 +-9.527423964218 +-9.548585688275 +-9.569523072882 +-9.590353708928 +-9.611152480292 +-9.631922582553 +-9.652655754405 +-9.673349071993 +-9.694002237304 +-9.714615734323 +-9.735190253544 +-9.755726544124 +-9.776225379086 +-9.796687547433 +-9.817113852285 +-9.837505110303 +-9.857862151369 +-9.878185818314 +-9.898476966650 +-9.918736464286 +-9.938965191249 +-9.959164039381 +-9.979333912037 +-9.999475723771 +-10.019590400009 +-10.039678876722 +-10.059742100078 +-10.079781026098 +-10.099796620290 +-10.119789857287 +-10.139761720468 +-10.159713201570 +-10.179645300301 +-10.199559023933 +-10.219455386894 +-10.239335410351 +-10.259200121785 +-10.279050554556 +-10.298887747463 +-10.318712744298 +-10.338526593388 +-10.358330347135 +-10.378125061546 +-10.397911795757 +-10.417691611553 +-10.437465572877 +-10.457234745335 +-10.477000195699 +-10.496762991395 +-10.516524199997 +-10.536284888703 +-10.556046123820 +-10.575808970229 +-10.595574490854 +-10.615343746131 +-10.635117793458 +-10.654897686653 +-10.674684475405 +-10.694479204720 +-10.714282914363 +-10.734096638298 +-10.753921404126 +-10.773758232518 +-10.793608136648 +-10.813472121619 +-10.833351183897 +-10.853246310730 +-10.873158479576 +-10.893088657530 +-10.913037800740 +-10.933006853839 +-10.952996749361 +-10.973008407168 +-10.993042733876 +-11.013100622280 +-11.033182950783 +-11.053290582825 +-11.073424366321 +-11.093585133091 +-11.113773698308 +-11.133990859938 +-11.154237398192 +-11.174514074981 +-11.194821633295 +-11.215160790274 +0.000000000000 +-0.000000155224 +-0.000000597277 +-0.000001442653 +-0.000002798139 +-0.000004764294 +-0.000007437697 +-0.000010912395 +-0.000015280839 +-0.000020634485 +-0.000027064171 +-0.000034660351 +-0.000043513209 +-0.000053712698 +-0.000065348484 +-0.000078509809 +-0.000093285228 +-0.000109762204 +-0.000128026488 +-0.000148161245 +-0.000170245926 +-0.000194355069 +-0.000220557606 +-0.000248917423 +-0.000279495132 +-0.000312349989 +-0.000347541069 +-0.000385127712 +-0.000425169555 +-0.000467726412 +-0.000512858128 +-0.000560624452 +-0.000611084951 +-0.000664298941 +-0.000720325448 +-0.000779223179 +-0.000841050505 +-0.000905865446 +-0.000973725668 +-0.001044688472 +-0.001118810796 +-0.001196149205 +-0.001276759894 +-0.001360698683 +-0.001448021009 +-0.001538781929 +-0.001633036114 +-0.001730837840 +-0.001832240989 +-0.001937299039 +-0.002046065061 +-0.002158591707 +-0.002274931207 +-0.002395135360 +-0.002519255520 +-0.002647342594 +-0.002779447025 +-0.002915618780 +-0.003055907344 +-0.003200361699 +-0.003349030315 +-0.003501961131 +-0.003659201541 +-0.003820798375 +-0.003986797879 +-0.004157245700 +-0.004332186857 +-0.004511665726 +-0.004695726009 +-0.004884410713 +-0.005077762121 +-0.005275821763 +-0.005478630383 +-0.005686227909 +-0.005898653420 +-0.006115945101 +-0.006338140213 +-0.006565275045 +-0.006797384873 +-0.007034503913 +-0.007276665267 +-0.007523900877 +-0.007776241465 +-0.008033716474 +-0.008296354005 +-0.008564180754 +-0.008837221938 +-0.009115501221 +-0.009399040636 +-0.009687860505 +-0.009981979343 +-0.010281413774 +-0.010586178426 +-0.010896285830 +-0.011211746311 +-0.011532567872 +-0.011858756072 +-0.012190313895 +-0.012527241623 +-0.012869536685 +-0.013217193513 +-0.013570203386 +-0.013928554262 +-0.014292230609 +-0.014661213225 +-0.015035479048 +-0.015415000961 +-0.015799747587 +-0.016189683076 +-0.016584766884 +-0.016984953542 +-0.017390192421 +-0.017800427483 +-0.018215597033 +-0.018635633454 +-0.019060462944 +-0.019490005241 +-0.019924173349 +-0.020362873250 +-0.020806003625 +-0.021253455561 +-0.021705113121 +-0.022160853097 +-0.022620544682 +-0.023084049148 +-0.023551219543 +-0.024021900395 +-0.024495927409 +-0.024973127166 +-0.025453316827 +-0.025936303818 +-0.026421885525 +-0.026909848976 +-0.027399970518 +-0.027892015493 +-0.028385737908 +-0.028880880095 +-0.029377172377 +-0.029874332716 +-0.030372066369 +-0.030870065531 +-0.031368008976 +-0.031865561703 +-0.032362374559 +-0.032858087294 +-0.033352329104 +-0.033844718415 +-0.034334862784 +-0.034822358882 +-0.035306792542 +-0.035787738842 +-0.036264762219 +-0.036737416604 +-0.037205245576 +-0.037667782524 +-0.038124550828 +-0.038575064040 +-0.039018826080 +-0.039455331436 +-0.039884065369 +-0.040304504136 +-0.040716115203 +-0.041118357483 +-0.041510681568 +-0.041892529978 +-0.042263337413 +-0.042622531021 +-0.042969530669 +-0.043303749230 +-0.043624592878 +-0.043931461401 +-0.044223748517 +-0.044500842216 +-0.044762125111 +-0.045006974804 +-0.045234764270 +-0.045444862259 +-0.045636633718 +-0.045809440232 +-0.045962640478 +-0.046095590715 +-0.046207645283 +-0.046298157131 +-0.046366478369 +-0.046411960844 +-0.046433956745 +-0.046431819228 +-0.046404903082 +-0.046352565411 +-0.046274166360 +-0.046169069865 +-0.046036644440 +-0.045876264005 +-0.045687308750 +-0.045469166039 +-0.045221231365 +-0.044942909361 +-0.044633614958 +-0.044292775356 +-0.043919837582 +-0.043514312945 +-0.043076035483 +-0.042606367123 +-0.042110462490 +-0.041579432942 +-0.040946368480 +-0.040124172297 +-0.039034685885 +-0.037610629716 +-0.035796256606 +-0.033548737841 +-0.030839578517 +-0.027655799770 +-0.024000783750 +-0.019894719233 +-0.015374618445 +-0.010493970311 +-0.005322369060 +0.000054274146 +0.005536887163 +0.011046783143 +0.016569157514 +0.022113557198 +0.027685249043 +0.033285701084 +0.038914917107 +0.044572313275 +0.050257140549 +0.055968572865 +0.061705724873 +0.067467657530 +0.073253381475 +0.079061860023 +0.084892012128 +0.090742715367 +0.096612809162 +0.102501100487 +0.108406394086 +0.114327531370 +0.120263264909 +0.126212304127 +0.132173336152 +0.138145029324 +0.144126036117 +0.150114995995 +0.156110538214 +0.162111284550 +0.168115851941 +0.174122855056 +0.180130908757 +0.186138630468 +0.192144642438 +0.198147573890 +0.204146063054 +0.210138759086 +0.216124323863 +0.222101433652 +0.228068780662 +0.234025074462 +0.239969043284 +0.245899435196 +0.251815019157 +0.257714585955 +0.263596949024 +0.269460945154 +0.275305435090 +0.281129304029 +0.286931462015 +0.292710844246 +0.298466411281 +0.304197149177 +0.309902069537 +0.315580209488 +0.321230631595 +0.326852423707 +0.332444698751 +0.338006594467 +0.343537273103 +0.349035921061 +0.354501748512 +0.359933988966 +0.365331898822 +0.370694756887 +0.376021863869 +0.381312541859 +0.386566133785 +0.391782002863 +0.396959532026 +0.402098123351 +0.407197197476 +0.412256193012 +0.417274565951 +0.422251789073 +0.427187351346 +0.432080757340 +0.436931526622 +0.441739193174 +0.446503304794 +0.451223422516 +0.455899120024 +0.460529983069 +0.465115608897 +0.469655605673 +0.474149581214 +0.478597162473 +0.482997986584 +0.487351699466 +0.491657955335 +0.495916416223 +0.500126751500 +0.504288637396 +0.508401756519 +0.512465797387 +0.516480453943 +0.520445425083 +0.524360414178 +0.528225128591 +0.532039279200 +0.535802579910 +0.539514747164 +0.543175499458 +0.546784556833 +0.550341640382 +0.553846471732 +0.557298772533 +0.560698263930 +0.564044666024 +0.567337697322 +0.570577074014 +0.573762507425 +0.576893679061 +0.579969949793 +0.582987254309 +0.585917104140 +0.588823144102 +0.592209204684 +0.596562440904 +0.602297553337 +0.609757126701 +0.619202520902 +0.630806743208 +0.644651229616 +0.660726818430 +0.678938815250 +0.699115797103 +0.721021570456 +0.744369465973 +0.768837674619 +0.794082795036 +0.819747026484 +0.845477127995 +0.871090692659 +0.896600245651 +0.922026099379 +0.947375077897 +0.972649654223 +0.997851257697 +1.022981083293 +1.048040274646 +1.073029966007 +1.097951291454 +1.122805387437 +1.147593394753 +1.172316460035 +1.196975737037 +1.221572387804 +1.246107583749 +1.270582506642 +1.294998349526 +1.319356317557 +1.343657628783 +1.367903514854 +1.392095221683 +1.416234010048 +1.440321156145 +1.464357952096 +1.488345706412 +1.512285744423 +1.536179408660 +1.560028059215 +1.583833074062 +1.607595849350 +1.631317799670 +1.655000358299 +1.678644977419 +1.702253128309 +1.725826301529 +1.749366007073 +1.772873774509 +1.796351153105 +1.819799711936 +1.843221039971 +1.866616746163 +1.889988459533 +1.913337829348 +1.936666525728 +1.959976242401 +1.983268709888 +2.006545760064 +2.029809638395 +2.053064388884 +2.076319878528 +2.099579179724 +2.122754360481 +2.145696112199 +2.168254538413 +2.190285672152 +2.211655876913 +2.232248089237 +2.251968019059 +2.270749428251 +2.288558054955 +2.305393940191 +2.321292046823 +2.336321221215 +2.350582679820 +2.364207417044 +2.377353570867 +2.390205524138 +2.402962285554 +2.415751769414 +2.428581085746 +2.441434578838 +2.454306106288 +2.467194561166 +2.480100364844 +2.493024329008 +2.505967355390 +2.518930363610 +2.531914274719 +2.544920007510 +2.557948477637 +2.571000597317 +2.584077275163 +2.597179416033 +2.610307920879 +2.623463686605 +2.636647605910 +2.649860567135 +2.663103454102 +2.676377145957 +2.689682517002 +2.703020436526 +2.716391768635 +2.729797372074 +2.743238100045 +2.756714800026 +2.770228313580 +2.783779476161 +2.797369116918 +2.810998058489 +2.824667116799 +2.838377100841 +2.852128812464 +2.865923046143 +2.879760588760 +2.893642219362 +2.907568708926 +2.921540820114 +2.935559307020 +2.949624914915 +2.963738379986 +2.977900429068 +2.992111779365 +3.006373138176 +3.020685202609 +3.035048659283 +3.049464184038 +3.063932441627 +3.078454085405 +3.093029757019 +3.107660086085 +3.122345689860 +3.137087172913 +3.151885126784 +3.166740129650 +3.181652745968 +3.196623526131 +3.211653006111 +3.226741707096 +3.241890135130 +3.257098780741 +3.272368118577 +3.287698607027 +3.303090687851 +3.318544785795 +3.334061308221 +3.349640644720 +3.365283166736 +3.380989227182 +3.396759160065 +3.412593280103 +3.428491882351 +3.444455241826 +3.460483613137 +3.476577230117 +3.492736305463 +3.508961030375 +3.525251574207 +3.541608084126 +3.558030684760 +0.000000000000 +-0.063616225970 +-0.127190235376 +-0.190761476425 +-0.254329976088 +-0.317895656463 +-0.381458393451 +-0.445018006562 +-0.508574246842 +-0.572126780699 +-0.635675164442 +-0.699218798246 +-0.762756835178 +-0.826287993392 +-0.889810162781 +-0.953319583783 +-1.016809162379 +-1.080265133390 +-1.143660891562 +-1.206947097795 +-1.270040603013 +-1.332825417155 +-1.395190764564 +-1.457103610732 +-1.518637973873 +-1.579914453438 +-1.641031220143 +-1.702045714742 +-1.762985544934 +-1.823861913240 +-1.884678085645 +-1.945433695750 +-2.006126718528 +-2.066754320223 +-2.127313206080 +-2.187799754691 +-2.248210065315 +-2.308539971039 +-2.368785039053 +-2.428940566293 +-2.489001573527 +-2.548962799021 +-2.608818692172 +-2.668563407250 +-2.728190797310 +-2.787694408296 +-2.847067473369 +-2.906302907461 +-2.965393302083 +-3.024330920400 +-3.083107692592 +-3.141715211505 +-3.200144728626 +-3.258387150381 +-3.316433034774 +-3.374272588379 +-3.431895663700 +-3.489291756892 +-3.546450005870 +-3.603359188793 +-3.660007722925 +-3.716383663884 +-3.772474705257 +-3.828268178575 +-3.883751053640 +-3.938909939176 +-3.993731083785 +-4.048200377176 +-4.102303351633 +-4.156025183672 +-4.209350695856 +-4.262264358692 +-4.314750292566 +-4.366792269631 +-4.418373715581 +-4.469477711228 +-4.520086993778 +-4.570183957721 +-4.619750655216 +-4.668768795869 +-4.717219745764 +-4.765084525647 +-4.812343808104 +-4.858977913610 +-4.904966805305 +-4.950290082348 +-4.994926971712 +-5.038856318256 +-5.082056572962 +-5.124505779162 +-5.166181556648 +-5.207061083536 +-5.247121075767 +-5.286337764168 +-5.324686868979 +-5.362143571824 +-5.398682485099 +-5.434277618792 +-5.468902344816 +-5.502529358959 +-5.535130640626 +-5.566677410614 +-5.597140087234 +-5.626488241182 +-5.654690549651 +-5.681714750274 +-5.707527595629 +-5.732094809130 +-5.755381043279 +-5.777349841384 +-5.797963604022 +-5.817183561628 +-5.834969754793 +-5.851281023967 +-5.866075010397 +-5.879308170285 +-5.890935804183 +-5.900912103767 +-5.909190218098 +-5.915722341460 +-5.920459824708 +-5.923114099428 +-5.923640189336 +-5.922026023866 +-5.918259023287 +-5.912326079633 +-5.904213540512 +-5.893907196124 +-5.881392269866 +-5.866653412898 +-5.849674703062 +-5.830439648553 +-5.808931196748 +-5.785131748614 +-5.759023179145 +-5.730586864245 +-5.699803714537 +-5.666654216556 +-5.631118481806 +-5.593176304175 +-5.552807226200 +-5.509990614713 +-5.464705746363 +-5.416931903560 +-5.366640132474 +-5.313844698673 +-5.258571815573 +-5.200853236434 +-5.140726134380 +-5.078232952344 +-5.013421228416 +-4.946343402189 +-4.877056607630 +-4.805622457768 +-4.732106826057 +-4.656579628768 +-4.579114612160 +-4.499789147493 +-4.418684036329 +-4.335883327858 +-4.251474149388 +-4.165546550537 +-4.078193361166 +-3.989510062606 +-3.899594671376 +-3.808547634256 +-3.716471733309 +-3.623471999287 +-3.529655631693 +-3.435131923678 +-3.340012189937 +-3.244409695715 +-3.148439585092 +-3.052218806743 +-2.955866035445 +-2.859501587686 +-2.763247329854 +-2.667226577569 +-2.571563984879 +-2.476385422181 +-2.381817841854 +-2.287989130790 +-2.195027949143 +-2.103063554835 +-2.012225613492 +-1.922643993729 +-1.834448547827 +-1.747768878069 +-1.662734089143 +-1.579472527151 +-1.498111505881 +-1.418777021049 +-1.341593453213 +-1.266683260027 +-1.194166658333 +-1.124161296230 +-1.056781913178 +-0.992139971408 +-0.930343134813 +-0.871493749966 +-0.815681126798 +-0.762940301422 +-0.713076658982 +-0.665453853241 +-0.622555747841 +-0.593477399415 +-0.579820381614 +-0.579490045292 +-0.590513730711 +-0.611032482883 +-0.639208122225 +-0.673228304128 +-0.711336121774 +-0.751859291904 +-0.793231979151 +-0.834005670362 +-0.872841139096 +-0.908457988815 +-0.939522094010 +-0.964921926534 +-0.986634954183 +-1.010617022626 +-1.039023307396 +-1.071315403057 +-1.107000930947 +-1.146737045666 +-1.191021476600 +-1.237740272329 +-1.286241927827 +-1.336228152559 +-1.387431448577 +-1.439585161030 +-1.492420924761 +-1.545669268960 +-1.599060843632 +-1.652328495086 +-1.705216364028 +-1.757580668619 +-1.810203122859 +-1.864817896465 +-1.918831425967 +-1.971448668979 +-2.022428489209 +-2.071556862917 +-2.118630805124 +-2.163458929762 +-2.205862194619 +-2.245674541191 +-2.282743420547 +-2.316930200977 +-2.348110455077 +-2.376174125870 +-2.401025573506 +-2.422583505974 +-2.440780799040 +-2.455564212233 +-2.466894009107 +-2.474743491169 +-2.479098455713 +-2.479956588422 +-2.477326801886 +-2.471228531229 +-2.461690997806 +-2.448752451490 +-2.432459401453 +-2.412865844542 +-2.390032499485 +-2.364026054197 +-2.334918432468 +-2.302786085323 +-2.267709311372 +-2.229771609571 +-2.189059066923 +-2.145659782910 +-2.099663331714 +-2.051160262704 +-2.000241639111 +-1.946998614408 +-1.891522045497 +-1.833902141559 +-1.774228147175 +-1.712588058148 +-1.649068368343 +-1.583753845805 +-1.516727336341 +-1.448069592759 +-1.377859127991 +-1.306172090323 +-1.233082159045 +-1.158660458865 +-1.082975491528 +-1.006093083146 +-0.928076345818 +-0.848985652218 +-0.768878621913 +-0.687810118229 +-0.605832254602 +-0.522994409401 +-0.439343248301 +-0.354922753353 +-0.269774257959 +-0.183936487282 +-0.097446883066 +-0.014475752569 +0.058927025885 +0.133131900302 +0.208041156472 +0.283629708810 +0.359874025795 +0.436752051608 +0.514243168726 +0.592328158988 +0.670989163241 +0.750209639751 +0.829974321476 +0.910269172339 +0.991081342571 +1.072399123230 +1.154211899942 +1.236510105935 +1.319285174383 +1.402529490122 +1.486236340724 +1.570399866957 +1.655015012629 +1.740077473802 +1.825583647463 +1.911530580704 +1.997915933816 +2.084738124342 +2.171998716770 +2.259731559962 +2.348313958599 +2.440463171809 +2.525935907799 +2.554997319016 +2.528374820774 +2.453125412912 +2.336391597858 +2.186530047828 +2.012957964089 +1.825771407255 +1.635317385039 +1.451759422344 +1.284660767500 +1.142607059533 +1.032891294382 +0.960261468852 +0.923808800965 +0.928953525372 +0.979184495209 +1.054738877449 +1.130551886326 +1.205742035607 +1.282075683268 +1.360165516292 +1.440201306805 +1.522268003984 +1.606427313953 +1.692736444866 +1.780112671763 +1.867734619099 +1.955603341241 +2.043718022155 +2.132075988186 +2.220672705066 +2.309501768691 +2.398554892506 +2.487821892557 +2.577290670817 +2.666947197223 +2.756775490833 +2.846757600476 +2.936873585270 +3.027101495360 +3.117417353244 +3.207795136035 +3.298206759015 +3.388622060838 +3.479008790729 +3.569332598043 +3.659557024536 +3.749643499708 +3.839551339583 +3.929237749282 +4.018657829762 +4.107764589088 +4.196508958606 +4.284839814419 +4.372704004588 +4.460046382662 +4.546809848720 +4.632935401279 +4.718362212099 +4.803027771616 +4.886868306490 +4.969820356158 +5.051827523200 +5.132870714647 +5.213102501918 +5.293383430952 +5.376431948580 +5.458410559148 +5.498399884272 +5.474800563310 +5.393632912902 +5.262352000995 +5.088838039079 +4.882011234239 +4.651712720899 +4.408345246230 +4.162456483928 +3.924321010655 +3.703546153261 +3.508147275066 +3.327450553064 +3.169575994500 +3.042310331850 +2.953590028509 +2.908693598189 +2.891601538321 +2.874932595804 +2.854256018417 +2.831626368393 +2.808066605485 +2.783887760716 +2.759176992315 +2.733963485856 +2.708262606862 +2.682086481138 +2.655446375295 +2.628353206161 +2.600817642630 +2.572850122087 +2.544460849846 +2.515659795693 +2.486456690400 +2.456861022749 +2.426882037196 +2.396528732163 +2.365809858987 +2.334733921501 +2.303309176247 +2.271543633327 +2.239445057861 +2.207020972071 +2.174278657968 +2.141225160636 +2.107867292106 +2.074211635818 +2.040264551646 +2.006032181492 +1.971520455431 +1.936735098399 +1.901681637408 +1.866365409289 +1.830791568936 +1.794965098053 +1.758890814381 +1.722573381402 +1.686017318497 +1.649227011557 +1.612206724017 +1.574960608317 +1.537492717764 +1.499807018779 +1.461907403519 +1.423797702864 +1.385481699731 +1.346963142725 +1.308245760086 +1.269333273934 +1.230229414770 +1.190937936243 +1.151462630131 +1.111807341538 +1.071975984279 +1.031972556419 +0.991801155962 +0.951465996652 +0.910971423856 +0.870321930521 +0.829522173162 +0.788576987850 +0.747491406188 +0.706270671223 +0.664920253276 +0.623445865655 +0.581853480202 +0.540149342668 +0.498339987843 +0.456432254432 +0.414433299625 +0.372350613321 +0.330192031963 +0.287965751952 +0.245680342582 +0.203344758487 +0.160968353250 +0.118561012344 +0.076141643215 +0.000000000000 +-0.000063691456 +-0.000088447615 +-0.000080956471 +-0.000045194915 +0.000016600710 +0.000103626990 +0.000216408764 +0.000356882998 +0.000528684121 +0.000737672014 +0.000992777447 +0.001307282395 +0.001700707647 +0.002201548463 +0.002851172290 +0.003709233706 +0.004860851154 +0.006425184429 +0.008563058079 +0.011475977145 +0.015378514444 +0.020420891098 +0.026584953299 +0.033672925296 +0.041434587104 +0.049682928943 +0.058313955571 +0.067280065151 +0.076563416484 +0.086160040722 +0.096072000385 +0.106303866383 +0.116861222594 +0.127750056747 +0.138976520319 +0.150546836041 +0.162467262231 +0.174744078189 +0.187383577045 +0.200392061076 +0.213775837760 +0.227541215943 +0.241694501957 +0.256241995619 +0.271189986114 +0.286544747750 +0.302312535609 +0.318499581108 +0.335112087470 +0.352156225137 +0.369638127132 +0.387563884393 +0.405939541102 +0.424771090024 +0.444064467887 +0.463825550824 +0.484060149901 +0.504774006767 +0.525972789440 +0.547662088278 +0.569847412143 +0.592534184814 +0.615727741652 +0.639433326576 +0.663656089360 +0.688401083296 +0.713673263243 +0.739477484094 +0.765818499691 +0.792700962201 +0.820129421992 +0.848108328000 +0.876642028631 +0.905734773177 +0.935390713765 +0.965613907826 +0.996408321078 +1.027777830988 +1.059726230694 +1.092257233335 +1.125374476739 +1.159081528394 +1.193381890620 +1.228279005838 +1.263776261826 +1.299876996808 +1.336584504223 +1.373902037000 +1.411832811109 +1.450380008175 +1.489546776882 +1.529336232873 +1.569751456829 +1.610795490366 +1.652471329364 +1.694781914296 +1.737730117107 +1.781318724134 +1.825550414550 +1.870427733756 +1.915953061131 +1.962128571513 +2.008956189770 +2.056437537784 +2.104573873194 +2.153366019211 +2.202814284863 +2.252918375050 +2.303677289826 +2.355089212434 +2.407151385676 +2.459859976379 +2.513209927836 +2.567194800339 +2.621806600134 +2.677035597436 +2.732870134421 +2.789296424527 +2.846298344738 +2.903857222908 +2.961617403644 +3.019523915630 +3.077565297225 +3.135729652586 +3.194004593228 +3.252377175302 +3.310833832613 +3.369360305427 +3.427941565098 +3.486561734617 +3.545204005160 +3.603850548756 +3.662482427214 +3.721079497469 +3.779620313538 +3.838082025296 +3.896440274330 +3.954669087128 +4.012740765939 +4.070625777646 +4.128292641036 +4.185707812928 +4.242835573580 +4.299146944754 +4.354430924745 +4.408591488225 +4.461532971478 +4.513160431419 +4.563379980146 +4.612099092270 +4.659226883319 +4.704674358542 +4.748354632357 +4.790183119515 +4.830077699749 +4.867958858233 +4.903749804578 +4.937376573371 +4.968768109418 +4.997856340860 +5.024576243279 +5.048865897774 +5.070666545760 +5.089922643012 +5.106581915172 +5.120595416665 +5.131917594627 +5.140506359197 +5.146323161166 +5.149333077753 +5.149504906980 +5.146811270884 +5.141228727594 +5.132737892073 +5.121323565182 +5.106974870543 +5.089685398553 +5.069453356814 +5.046281726123 +5.020178421151 +4.991156454893 +4.959234105963 +4.924435087868 +4.886788719430 +4.846330095651 +4.803100258422 +4.757146366653 +4.708521865560 +4.657286655076 +4.603507257491 +4.547256984659 +4.488616105216 +4.427672012342 +4.364519392722 +4.299260397913 +4.232004825118 +4.162870361149 +4.091983292869 +4.019482478672 +3.945544038146 +3.870519986807 +3.795542593874 +3.723303925759 +3.645733235224 +3.530948069116 +3.372260456640 +3.176053828364 +2.948732905277 +2.696779855826 +2.427094775969 +2.146961229766 +1.863887315696 +1.585411964705 +1.318905845398 +1.071387408504 +0.849395485994 +0.659025367684 +0.506218681039 +0.395479118821 +0.318174557425 +0.249445568760 +0.180251001650 +0.112442811133 +0.047808982794 +-0.001394701288 +-0.031471650858 +-0.054838250987 +-0.073272232560 +-0.086854171537 +-0.095516485514 +-0.099186127790 +-0.097802013711 +-0.091318341088 +-0.079707110864 +-0.062974438812 +-0.041353717610 +-0.017180931048 +0.005643338516 +0.035679498405 +0.071693188394 +0.112684746173 +0.158525076131 +0.209098397718 +0.264275389470 +0.323913600518 +0.387858407176 +0.455944052655 +0.527994754435 +0.603825867295 +0.683245089064 +0.766053695443 +0.852047789865 +0.941019554230 +1.032758486575 +1.127052612265 +1.223689656102 +1.322458163823 +1.423148562782 +1.525554153069 +1.629472021925 +1.734703875987 +1.841056787543 +1.948343852642 +2.056384760416 +2.165006274424 +2.274042628057 +2.383335837178 +2.492735934036 +2.602101127259 +2.711297893236 +2.820201004594 +2.928693501658 +3.036666612884 +3.144019630189 +3.250659744934 +3.356501850138 +3.461468314141 +3.565488730648 +3.668499649699 +3.770444293706 +3.871272262351 +3.970939229706 +4.069406636595 +4.166641380827 +4.262615507622 +4.357305902199 +4.450693986231 +4.542765419585 +4.633509808527 +4.722920421356 +4.810993912222 +4.897730053731 +4.983131478759 +5.067203431789 +5.149953529943 +5.231391533804 +5.311529128017 +5.390379711597 +5.467958197801 +5.544280823377 +5.619364966979 +5.693229105657 +5.766323832698 +5.831595438917 +5.895586238671 +5.958471504985 +6.020259048757 +6.080956953663 +6.140573588885 +6.199117523968 +6.256597447453 +6.313022089174 +6.368400146087 +6.422740211459 +6.476050707284 +6.528339819770 +6.579615437751 +6.629885093899 +6.679155908586 +6.727434536277 +6.774727114329 +6.821039214085 +6.866375794142 +6.910741155699 +6.954138899898 +6.996571887122 +7.038042198939 +7.078551111891 +7.118099197046 +7.156687936136 +7.194339136546 +7.231299225291 +7.269325390412 +7.301787559856 +7.297479061575 +7.258028742182 +7.188930723549 +7.095547904539 +6.983727835934 +6.859626662872 +6.729424891274 +6.599054815027 +6.473964962381 +6.358931864619 +6.257924364763 +6.174025534252 +6.108911954068 +6.061573651185 +6.034271511758 +6.028317529803 +6.033880965380 +6.039050392830 +6.043473182873 +6.047947631437 +6.052727109699 +6.057868448192 +6.063377466663 +6.069245601141 +6.075458133924 +6.081420006644 +6.086666012683 +6.091150818275 +6.094829703996 +6.097658515229 +6.099593621095 +6.100591884477 +6.100610643009 +6.099607700350 +6.097541327022 +6.094370270126 +6.090053771363 +6.084551592843 +6.077824050261 +6.069832053027 +6.060537151055 +6.049901587871 +6.037888359800 +6.024461280972 +6.009585053925 +5.993225345586 +5.975348868418 +5.955923466534 +5.934918206570 +5.912303473109 +5.888051068434 +5.862134316395 +5.834528170154 +5.805209323553 +5.774156325861 +5.741349699683 +5.706772061886 +5.670408247960 +5.632245442098 +5.592273323177 +5.550484269792 +5.506873810158 +5.461442133228 +5.414200258865 +5.365196078536 +5.314613329974 +5.262961354633 +5.209455903449 +5.146910794974 +5.072786242339 +4.989730101635 +4.900378021696 +4.807143974315 +4.712298480893 +4.617927112154 +4.525869647771 +4.437672405670 +4.354561554803 +4.277440989496 +4.206866474320 +4.141485235891 +4.081748137736 +4.027834305843 +3.979709951893 +3.936902557168 +3.897174672665 +3.857865526294 +3.818601143007 +3.779593928683 +3.740943994499 +3.702682002900 +3.664817761371 +3.627355730674 +3.590298943777 +3.553649908377 +3.517410811749 +3.481583574766 +3.446169874845 +3.411171162757 +3.376588678306 +3.342423465829 +3.308676389679 +3.275348149708 +3.242439296733 +3.209950247954 +3.177881302320 +3.146232655802 +3.115004416568 +3.084196620025 +3.053809243718 +3.023842222063 +2.994295460883 +2.965168851750 +2.936462286088 +2.908175669036 +2.880308933046 +2.852862051196 +2.825835050203 +2.799228023116 +2.773041141672 +2.747274668298 +2.721928967743 +2.697004518319 +2.672501922743 +2.648421918545 +2.624765388058 +2.601533367935 +2.578727058207 +2.556347830853 +2.534397237872 +2.512877018826 +2.491789107868 +2.471135640209 +2.450918958026 +2.431141615791 +2.411806385009 +2.392916258345 +2.374474453124 +2.356484414201 +2.338949816169 +2.321874564909 +2.305262798447 +2.289118887128 +2.273447433067 +2.258253268891 +2.243541455733 +2.229317280484 +2.215586252283 +2.202354098233 +2.189626758335 +2.177410379628 +2.165711309525 +2.154536088334 +2.143891440967 +2.133784267809 +2.124221634773 +2.115210762500 +2.106759014727 +2.098873885821 +2.091562987459 +2.084834034479 +2.078694829890 +2.073153249071 +2.068217223234 +2.063894728610 +2.060194264468 +0.000000000000 +-0.000016097335 +-0.000042493721 +-0.000075480412 +-0.000112681240 +-0.000152576183 +-0.000194195068 +-0.000236920576 +-0.000280361465 +-0.000324270818 +-0.000368493118 +-0.000412929640 +-0.000457515343 +-0.000502202730 +-0.000546949583 +-0.000591708304 +-0.000636415064 +-0.000680977200 +-0.000725257767 +-0.000769057810 +-0.000812102307 +-0.000854048949 +-0.000894554138 +-0.000933403207 +-0.000970610744 +-0.001006386848 +-0.001041021111 +-0.001074789492 +-0.001107914334 +-0.001140559539 +-0.001172840117 +-0.001204834638 +-0.001236596101 +-0.001268160145 +-0.001299550839 +-0.001330784594 +-0.001361872765 +-0.001392823346 +-0.001423642068 +-0.001454333115 +-0.001484899572 +-0.001515343726 +-0.001545667241 +-0.001575871284 +-0.001605956590 +-0.001635923513 +-0.001665772042 +-0.001695501823 +-0.001725112154 +-0.001754601992 +-0.001783969939 +-0.001813214245 +-0.001842332786 +-0.001871323060 +-0.001900182171 +-0.001928906816 +-0.001957493263 +-0.001985937342 +-0.002014234419 +-0.002042379378 +-0.002070366602 +-0.002098189943 +-0.002125842705 +-0.002153317611 +-0.002180606776 +-0.002207701677 +-0.002234593121 +-0.002261271207 +-0.002287725293 +-0.002313943951 +-0.002339914930 +-0.002365625107 +-0.002391060441 +-0.002416205919 +-0.002441045508 +-0.002465562090 +-0.002489737409 +-0.002513551998 +-0.002536985117 +-0.002560014681 +-0.002582617180 +-0.002604767601 +-0.002626439344 +-0.002647604135 +-0.002668231929 +-0.002688290815 +-0.002707746914 +-0.002726564274 +-0.002744704756 +-0.002762127920 +-0.002778790909 +-0.002794648320 +-0.002809652079 +-0.002823751311 +-0.002836892205 +-0.002849017877 +-0.002860068230 +-0.002869979815 +-0.002878685688 +-0.002886115273 +-0.002892194215 +-0.002896844253 +-0.002899983079 +-0.002901524215 +-0.002901376896 +-0.002899445956 +-0.002895631737 +-0.002889830004 +-0.002881931883 +-0.002871823820 +-0.002859387558 +-0.002844500156 +-0.002827034024 +-0.002806857005 +-0.002783832496 +-0.002757819606 +-0.002728673375 +-0.002696245033 +-0.002660382320 +-0.002620929869 +-0.002577729644 +-0.002530715832 +-0.002479808017 +-0.002424903492 +-0.002365884023 +-0.002302620248 +-0.002234974561 +-0.002162802993 +-0.002085956462 +-0.002004281594 +-0.001917621274 +-0.001825815021 +-0.001728699229 +-0.001626107334 +-0.001517869913 +-0.001403814731 +-0.001283766757 +-0.001157548132 +-0.001024978104 +-0.000885872920 +-0.000740045680 +-0.000587306145 +-0.000427460486 +-0.000260310989 +-0.000086035407 +0.000095164868 +0.000283156731 +0.000477849145 +0.000679176638 +0.000887089061 +0.001101545391 +0.001322510135 +0.001549951407 +0.001783840055 +0.002024149462 +0.002270855753 +0.002523938230 +0.002783379954 +0.003049168371 +0.003321295957 +0.003599760843 +0.003884567417 +0.004175726863 +0.004473257673 +0.004777186090 +0.005087546515 +0.005404381852 +0.005727743821 +0.006057693213 +0.006394300114 +0.006737644086 +0.007087814303 +0.007444909660 +0.007809038835 +0.008180320311 +0.008558882360 +0.008944862968 +0.009338409715 +0.009739679586 +0.010148838708 +0.010566062002 +0.010991532731 +0.011425441929 +0.011867987680 +0.012319374236 +0.012779810924 +0.013249510822 +0.013728689156 +0.014217561366 +0.014716340797 +0.015225235941 +0.015744447169 +0.016274162872 +0.016814554924 +0.017365773342 +0.017927939763 +0.018501137121 +0.019085374685 +0.019680368060 +0.020283991831 +0.020882075327 +0.021389469810 +0.021390247375 +0.019846231206 +0.020646635480 +0.039612072430 +0.082439694401 +0.146481547913 +0.228546154303 +0.325260236135 +0.432889419943 +0.547360711430 +0.664359243980 +0.779450860394 +0.888214300970 +0.986370380689 +1.069881374447 +1.134951649055 +1.177867919834 +1.195817255897 +1.194285512187 +1.189157696782 +1.186367256297 +1.184858818896 +1.183718224063 +1.182615918062 +1.181438617008 +1.180156157863 +1.178756190429 +1.177230000160 +1.175569890469 +1.173768692386 +1.171819679654 +1.169716559506 +1.167453478608 +1.165025055223 +1.162426720960 +1.159658054262 +1.156723952893 +1.153612278227 +1.150317153161 +1.146835578205 +1.143165073057 +1.139303597083 +1.135249540896 +1.131001717614 +1.126559352697 +1.121922072415 +1.117089891055 +1.112063196967 +1.106842737554 +1.101429603319 +1.095825211087 +1.090031286527 +1.084049846093 +1.077883178515 +1.071533825957 +1.065004564983 +1.058298387433 +1.051418481345 +1.044368212025 +1.037151103374 +1.029770819575 +1.022231147220 +1.014535977972 +1.006689291818 +0.998695140984 +0.990557634560 +0.982280923877 +0.973869188655 +0.965326623967 +0.956657428008 +0.947865790683 +0.938955883021 +0.929931847377 +0.920797788445 +0.911557765024 +0.902215782537 +0.892775786268 +0.883241655280 +0.873617196984 +0.863906142333 +0.854112141588 +0.844238760635 +0.834289477810 +0.824267681192 +0.814176666341 +0.804019634426 +0.793799690735 +0.783519843509 +0.773183003086 +0.762791981318 +0.752349491231 +0.741858146908 +0.731320463562 +0.720738857777 +0.710115647898 +0.699453054543 +0.688753201221 +0.678018115039 +0.667249727471 +0.656449875189 +0.645620300515 +0.634761319390 +0.623875654843 +0.612964889327 +0.602030409813 +0.591073522955 +0.580095455875 +0.569097356879 +0.558080296155 +0.547045266463 +0.535993183802 +0.524924888054 +0.513841143597 +0.502742639901 +0.491629992080 +0.480503741419 +0.469364355872 +0.458212230523 +0.447047688024 +0.435870979002 +0.424682282450 +0.413481706100 +0.402269286784 +0.391044990783 +0.379808713993 +0.368560279803 +0.357299408551 +0.346025334064 +0.334732065934 +0.323351935083 +0.311155466650 +0.292917416239 +0.288363681639 +0.392435821081 +0.602279101893 +0.902749452748 +1.278433003714 +1.711590274124 +2.182609274422 +2.670917641668 +3.155984068840 +3.618309197548 +4.040335153733 +4.407209570962 +4.707344656712 +4.932662145617 +5.078180064759 +5.140540054297 +5.120649382415 +5.057739506346 +4.997116463804 +4.940668467601 +4.885248129928 +4.829849992271 +4.774253485900 +4.718431633954 +4.662401025264 +4.606187612742 +4.549818938183 +4.493322422409 +4.436725030592 +4.380053154933 +4.323332573135 +4.266588427653 +4.209845212137 +4.153126761485 +4.096456244491 +4.039856158737 +3.983348327561 +3.926953899009 +3.870693346667 +3.814586472298 +3.758652410199 +3.702909633198 +3.647375960219 +3.592068565319 +3.537003988150 +3.482198145743 +3.427666345564 +3.373423299763 +3.319483140549 +3.265859436640 +3.212565210703 +3.159612957757 +3.107014664456 +3.054781829208 +3.002925483058 +2.951456211215 +2.900384174944 +2.849719132921 +2.799470458863 +2.749647143094 +2.700257727855 +2.651309962674 +2.602809233839 +2.554751463201 +2.507090722348 +2.459594016933 +2.411256791066 +2.359029043919 +2.306960938184 +2.300115570285 +2.363347845366 +2.491373494909 +2.677222296076 +2.913265051789 +3.190431890251 +3.498259958076 +3.825243850619 +4.159290285019 +4.488211763692 +4.800222945270 +5.084395363259 +5.330675611444 +5.530173385084 +5.675087793736 +5.758071723893 +5.775709013514 +5.752220151792 +5.726856757858 +5.706822265881 +5.689059292871 +5.671976702777 +5.655096815703 +5.638298504819 +5.621553722056 +5.604856614682 +5.588206402270 +5.571603491588 +5.555048633137 +5.538542745019 +5.522086878295 +5.505682211525 +5.489330051192 +5.473031833287 +5.456789125101 +5.440603627060 +5.424477174544 +5.408411739688 +5.392409433168 +5.376472505947 +5.360603350998 +5.344804504986 +5.329078649907 +5.313428614682 +5.297857376694 +5.282368063264 +5.266963953067 +5.251648477467 +5.236425221777 +5.221297926429 +5.206270488044 +5.191346960410 +5.176531555332 +5.161828643373 +5.147242754454 +5.132778578323 +5.118440964866 +5.104234924261 +5.090165626956 +5.076238403474 +5.062458744010 +5.048832297836 +5.035364872483 +5.022062432689 +5.008931099115 +4.995977146799 +4.983207003347 +4.970627246845 +4.958244603471 +4.946065944813 +4.934098284861 +4.922348776664 +4.910824708653 +4.899533500598 +4.888482699196 +4.877679973282 +4.867133108637 +4.856850002400 +4.846838657051 +4.837107173979 +4.827663746599 +4.818516653031 +4.809674248316 +4.801144956174 +4.792937260284 +4.785059695096 +4.777520836149 +4.770329289919 +4.763493683166 +4.757022651802 +4.750924829270 +4.745208834434 +4.739883258994 +4.734956654426 +4.730437518447 +4.726334281035 +4.722655290005 +4.719408796833 +0.000000000000 +-0.000004980101 +-0.000013576290 +-0.000024798672 +-0.000037926523 +-0.000052435098 +-0.000067942331 +-0.000084170005 +-0.000100915406 +-0.000118030590 +-0.000135407142 +-0.000152964894 +-0.000170643416 +-0.000188395429 +-0.000206181423 +-0.000223964897 +-0.000241707685 +-0.000259364873 +-0.000276878914 +-0.000294173054 +-0.000311145867 +-0.000327672812 +-0.000343625723 +-0.000358913394 +-0.000373515730 +-0.000387478612 +-0.000400881672 +-0.000413809383 +-0.000426336136 +-0.000438521712 +-0.000450411832 +-0.000462040453 +-0.000473432315 +-0.000484605156 +-0.000495571485 +-0.000506339935 +-0.000516916268 +-0.000527304123 +-0.000537505558 +-0.000547521453 +-0.000557351801 +-0.000566995922 +-0.000576452616 +-0.000585720280 +-0.000594796989 +-0.000603680555 +-0.000612368574 +-0.000620858454 +-0.000629147442 +-0.000637232637 +-0.000645111006 +-0.000652779388 +-0.000660234505 +-0.000667472961 +-0.000674491249 +-0.000681285754 +-0.000687852748 +-0.000694188399 +-0.000700288764 +-0.000706149794 +-0.000711767333 +-0.000717137117 +-0.000722254772 +-0.000727115819 +-0.000731715667 +-0.000736049619 +-0.000740112868 +-0.000743900496 +-0.000747407477 +-0.000750628676 +-0.000753558847 +-0.000756192634 +-0.000758524576 +-0.000760549100 +-0.000762260527 +-0.000763653072 +-0.000764720846 +-0.000765457858 +-0.000765858017 +-0.000765915135 +-0.000765622931 +-0.000764975037 +-0.000763965001 +-0.000762586294 +-0.000760832318 +-0.000758696414 +-0.000756171873 +-0.000753251944 +-0.000749929851 +-0.000746198804 +-0.000742052018 +-0.000737482732 +-0.000732484229 +-0.000727049859 +-0.000721173070 +-0.000714847434 +-0.000708066679 +-0.000700824731 +-0.000693115752 +-0.000684934186 +-0.000676274807 +-0.000667132777 +-0.000657503704 +-0.000647383711 +-0.000636769502 +-0.000625658444 +-0.000614048654 +-0.000601939086 +-0.000589329629 +-0.000576221220 +-0.000562615950 +-0.000548517188 +-0.000533929711 +-0.000518859838 +-0.000503315575 +-0.000487306761 +-0.000470845232 +-0.000453944974 +-0.000436622296 +-0.000418895996 +-0.000400787535 +-0.000382331761 +-0.000363565151 +-0.000344524689 +-0.000325248444 +-0.000305776023 +-0.000286148938 +-0.000266410902 +-0.000246608072 +-0.000226789255 +-0.000207006082 +-0.000187313149 +-0.000167768154 +-0.000148431996 +-0.000129368876 +-0.000110646372 +-0.000092335506 +-0.000074510799 +-0.000057250304 +-0.000040635634 +-0.000024751968 +-0.000009688046 +0.000004463858 +0.000017607979 +0.000029633443 +0.000040428015 +0.000049881887 +0.000057887527 +0.000064339635 +0.000069135186 +0.000072173549 +0.000073356664 +0.000072589267 +0.000069779143 +0.000064837407 +0.000057678784 +0.000048221913 +0.000036389636 +0.000022109291 +0.000005313001 +-0.000014062048 +-0.000036073335 +-0.000060772740 +-0.000088206289 +-0.000118413906 +-0.000151429180 +-0.000187279132 +-0.000225983993 +-0.000267556993 +-0.000312004157 +-0.000359324110 +-0.000409507885 +-0.000462538755 +-0.000518392060 +-0.000577035057 +-0.000638426776 +-0.000702517895 +-0.000769250624 +-0.000838558616 +-0.000910366886 +-0.000984591760 +-0.001061140838 +-0.001139912991 +-0.001220798375 +-0.001303678484 +-0.001388426224 +-0.001474906028 +-0.001562974002 +-0.001652478107 +-0.001743258386 +-0.001835147222 +-0.001927969648 +-0.002021543690 +-0.002115680776 +-0.002210186268 +-0.002304860859 +-0.002399508938 +-0.002494002919 +-0.002588769676 +-0.002688223713 +-0.002822812685 +-0.003172508546 +-0.004599229781 +-0.009287347389 +-0.008482329434 +0.029092542874 +0.120355972580 +0.257507526063 +0.432001781763 +0.635285458398 +0.858419615783 +1.092174061540 +1.327269528929 +1.554650320637 +1.765747962857 +1.952709251007 +2.108539501390 +2.227039040679 +2.302439159373 +2.330858916586 +2.323571392704 +2.309899501974 +2.300464046600 +2.293345714932 +2.286942062629 +2.280733342509 +2.274591218956 +2.268486789183 +2.262413668739 +2.256370049613 +2.250354880120 +2.244367115896 +2.238405586827 +2.232468980854 +2.226555848940 +2.220664611467 +2.214793535359 +2.208940427602 +2.203102586556 +2.197278967012 +2.191467790143 +2.185666952166 +2.179874280959 +2.174087553345 +2.168304504667 +2.162522837979 +2.156740232942 +2.150954354385 +2.145162860519 +2.139363410758 +2.133553673153 +2.127731331403 +2.121894091439 +2.116039687579 +2.110165888236 +2.104270501183 +2.098351378382 +2.092406420370 +2.086433580214 +2.080430867041 +2.074396349161 +2.068328156779 +2.062224484329 +2.056083592435 +2.049903809512 +2.043683533038 +2.037421230505 +2.031115440068 +2.024764770917 +2.018367903393 +2.011923588855 +2.005430649334 +1.998887976985 +1.992294533350 +1.985649348467 +1.978951519820 +1.972200211175 +1.965394651284 +1.958534132509 +1.951618009349 +1.944645696906 +1.937616669285 +1.930530457959 +1.923386650093 +1.916184886844 +1.908924861651 +1.901606318516 +1.894229050288 +1.886792896955 +1.879297743959 +1.871743520522 +1.864130198010 +1.856457788323 +1.848726342329 +1.840935948334 +1.833086730596 +1.825178847899 +1.817212492163 +1.809187887124 +1.801105287063 +1.792964975598 +1.784767264543 +1.776512492870 +1.768201163681 +1.759833526996 +1.751409975177 +1.742930937145 +1.734396864612 +1.725808231364 +1.717165532631 +1.708469284539 +1.699720023636 +1.690918306509 +1.682064709492 +1.673159828456 +1.664204278711 +1.655198695001 +1.646143731604 +1.637040062558 +1.627888381996 +1.618689404613 +1.609443866272 +1.600152524751 +1.590816160646 +1.581435578444 +1.572011607756 +1.562545104622 +1.553036951499 +1.543488039074 +1.533899022696 +1.524267329292 +1.514551916334 +1.504303616073 +1.490342944471 +1.484636476580 +1.543453035307 +1.663910604910 +1.836444051738 +2.052073278304 +2.301197449237 +2.573746469244 +2.859488123633 +3.148317555714 +3.430525592139 +3.697059907368 +3.939787039520 +4.151747655430 +4.327346316955 +4.462258570650 +4.552777863840 +4.597514699360 +4.617152125502 +4.636766787715 +4.657483049246 +4.677574223548 +4.696479338645 +4.714067981961 +4.730316707638 +4.745226817858 +4.758805614619 +4.771062263821 +4.782006803165 +4.791649835891 +4.800002445438 +4.807076149445 +4.812882863366 +4.817434866525 +4.820744768840 +4.822825477818 +4.823690165787 +4.823352237417 +4.821825297611 +4.819123119840 +4.815259615006 +4.810248800902 +4.804104772336 +4.796841671968 +4.788473661936 +4.779014896298 +4.768479494337 +4.756881514784 +4.744234930970 +4.730553606942 +4.715851274580 +4.700141511721 +4.683437721308 +4.665753111593 +4.647100677382 +4.627493182349 +4.606943142402 +4.585462810075 +4.563064159860 +4.539758874111 +4.515558328296 +4.490473571060 +4.464515281929 +4.437693640069 +4.410017842705 +4.381494261666 +4.352119598676 +4.321859162516 +4.290620999467 +4.258592785372 +4.226822289278 +4.195284079490 +4.163429036360 +4.130944265388 +4.097726854656 +4.063841141588 +4.029483646175 +3.994947697647 +3.960590374929 +3.926804272960 +3.893994379943 +3.862559032076 +3.832888016183 +3.805342885372 +3.780249707666 +3.757907867456 +3.738426783094 +3.720695229895 +3.702915366397 +3.684756872738 +3.666373239918 +3.647844200249 +3.629192824937 +3.610423651706 +3.591536270384 +3.572529046529 +3.553400035250 +3.534147192707 +3.514768424629 +3.495261598901 +3.475624550591 +3.455855085485 +3.435950983401 +3.415910001525 +3.395729877839 +3.375408334642 +3.354943082178 +3.334331822368 +3.313572252650 +3.292662069938 +3.271598974693 +3.250380675119 +3.229004891478 +3.207469360532 +3.185771840120 +3.163910113858 +3.141881995984 +3.119685336332 +3.097318025450 +3.074777999862 +3.052063247463 +3.029171813076 +3.006101804137 +2.982851396540 +2.959418840622 +2.935802467300 +2.912000694351 +2.888012032841 +2.863835093699 +2.839468594431 +2.814911365977 +2.790162359704 +2.765220654539 +2.740085464219 +2.714756144680 +2.689232201554 +2.663513297787 +2.637599261355 +2.611490093080 +2.585185974539 +2.558687276044 +2.531994564693 +2.505108612480 +2.478030404442 +2.450761146841 +2.423302275359 +2.395655463293 +2.367822629730 +2.339805947691 +2.311607852217 +2.283231048384 +2.254678519216 +2.225953533490 +2.197059653394 +2.168000742022 +2.138780970674 +2.109404825949 +2.079877116589 +2.050202980045 +2.020387888757 +1.990437656086 +1.960358441904 +1.930156757775 +1.899839471723 +1.869413812541 +1.838887373614 +1.808268116231 +1.777564373434 +0.000000000000 +-0.028601763048 +-0.057194706456 +-0.085796530834 +-0.114407224781 +-0.143026730953 +-0.171654969594 +-0.200291832330 +-0.228937176517 +-0.257590819740 +-0.286252533202 +-0.314922030727 +-0.343598945314 +-0.372282774473 +-0.400972752494 +-0.429667560229 +-0.458364691367 +-0.487059139786 +-0.515740893326 +-0.544390819938 +-0.572975970225 +-0.601449854682 +-0.629768237564 +-0.657919205899 +-0.685934957061 +-0.713866448462 +-0.741755003420 +-0.769625051759 +-0.797488796669 +-0.825351791757 +-0.853216417898 +-0.881083634599 +-0.908953776730 +-0.936826895180 +-0.964702895562 +-0.992581591868 +-1.020462725788 +-1.048345972705 +-1.076230942743 +-1.104117180111 +-1.132004161916 +-1.159891296901 +-1.187777924248 +-1.215663312505 +-1.243546658674 +-1.271427087463 +-1.299303650728 +-1.327175327099 +-1.355041021831 +-1.382899566867 +-1.410749721143 +-1.438590171138 +-1.466419531700 +-1.494236347144 +-1.522039092650 +-1.549826175973 +-1.577595939473 +-1.605346662494 +-1.633076564095 +-1.660783806156 +-1.688466496858 +-1.716122694578 +-1.743750412181 +-1.771347621740 +-1.798912259695 +-1.826442232447 +-1.853935422412 +-1.881389694525 +-1.908802903217 +-1.936172899854 +-1.963497540639 +-1.990774694992 +-2.018002254380 +-2.045178141607 +-2.072300320558 +-2.099366806359 +-2.126375675976 +-2.153325079194 +-2.180213249984 +-2.207038518212 +-2.233799321674 +-2.260494218406 +-2.287121899253 +-2.313681200623 +-2.340171117416 +-2.366590816036 +-2.392939647470 +-2.419217160332 +-2.445423113835 +-2.471557490609 +-2.497620509279 +-2.523612636738 +-2.549534600007 +-2.575387397601 +-2.601172310299 +-2.626890911201 +-2.652545074976 +-2.678136986169 +-2.703669146445 +-2.729144380645 +-2.754565841505 +-2.779937012905 +-2.805261711502 +-2.830544086581 +-2.855788617979 +-2.881000111930 +-2.906183694654 +-2.931344803557 +-2.956489175872 +-2.981622834615 +-3.006752071718 +-3.031883428224 +-3.057023671465 +-3.082179769156 +-3.107358860379 +-3.132568223490 +-3.157815241001 +-3.183107361587 +-3.208452059406 +-3.233856791002 +-3.259328950119 +-3.284698432362 +-3.309962178407 +-3.335141237216 +-3.360257007473 +-3.385331219777 +-3.410385917769 +-3.435443438164 +-3.460526389712 +-3.485657631042 +-3.510860247402 +-3.536157526267 +-3.561572931784 +-3.587130078063 +-3.612852701247 +-3.638764630368 +-3.664889756933 +-3.691252003210 +-3.717875289179 +-3.744783498094 +-3.772000440621 +-3.799549817488 +-3.827455180599 +-3.855739892548 +-3.884209881720 +-3.912811938440 +-3.941543538122 +-3.970402025261 +-3.999384644342 +-4.028488565835 +-4.057710906880 +-4.087048746442 +-4.116499134892 +-4.146059098155 +-4.175725636673 +-4.205495719575 +-4.235366274504 +-4.265334173651 +-4.295396216534 +-4.325549110115 +-4.355789446820 +-4.386113681018 +-4.416518104458 +-4.446998821156 +-4.477551722146 +-4.508172460468 +-4.538856426718 +-4.569598725426 +-4.600394152488 +-4.631237173816 +-4.662121905357 +-4.693042094557 +-4.723991103346 +-4.754961892671 +-4.785947008577 +-4.816938569819 +-4.847928256967 +-4.878907302921 +-4.909866484771 +-4.940796116866 +-4.971686044963 +-5.002525641286 +-5.033303800261 +-5.064008934698 +-5.094628972071 +-5.125151350544 +-5.155563014249 +-5.185850407299 +-5.215999465853 +-5.245995607499 +-5.275823717082 +-5.305468128004 +-5.334912597932 +-5.364140277784 +-5.393133672815 +-5.421874594719 +-5.450344104323 +-5.478522448674 +-5.506389020836 +-5.533922492246 +-5.561101717930 +-5.587908636319 +-5.614327723920 +-5.640291510175 +-5.665766526035 +-5.691966663120 +-5.720549819052 +-5.752639971432 +-5.788998604564 +-5.830015985523 +-5.875668477673 +-5.925501206773 +-5.978636498173 +-6.033805178774 +-6.089398138106 +-6.143533623458 +-6.194128502320 +-6.238941530894 +-6.275549866964 +-6.301721665852 +-6.318785444462 +-6.333238791938 +-6.347739897638 +-6.361829626208 +-6.374992272094 +-6.382261936741 +-6.381916488545 +-6.379300475581 +-6.375249358265 +-6.369839029627 +-6.363073067097 +-6.354946743431 +-6.345454862890 +-6.334593271833 +-6.322360035820 +-6.308762804314 +-6.293905356654 +-6.278828798928 +-6.265279810524 +-6.249472129110 +-6.231960996972 +-6.213165119733 +-6.193117759211 +-6.171843420472 +-6.149369639700 +-6.125727134383 +-6.100949733727 +-6.075074276635 +-6.048140479428 +-6.020190774406 +-5.991270120989 +-5.961425791849 +-5.930707137061 +-5.899165329830 +-5.866853097740 +-5.833824443790 +-5.800134361621 +-5.765838549374 +-5.730993126476 +-5.695654357432 +-5.659878386349 +-5.623720985455 +-5.587237320415 +-5.550481734646 +-5.513507554318 +-5.476366915144 +-5.439110611528 +-5.401787968162 +-5.364446733708 +-5.327132995834 +-5.289891116547 +-5.252763686543 +-5.215791497068 +-5.179013527732 +-5.142466948568 +-5.106187134694 +-5.070207691880 +-5.034560491450 +-4.999275712964 +-4.964381893273 +-4.929905980628 +-4.895873392654 +-4.862308077107 +-4.829232574486 +-4.796668081651 +-4.764634515743 +-4.733150577793 +-4.702233815511 +-4.671900684823 +-4.642166609825 +-4.613046040877 +-4.584552510628 +-4.556698687823 +-4.529496428779 +-4.502956826475 +-4.477090257203 +-4.451906424811 +-4.427414402513 +-4.403622672348 +-4.380539162309 +-4.358171281219 +-4.336525951534 +-4.315610181303 +-4.297164770098 +-4.281955579155 +-4.267229596281 +-4.253055427737 +-4.239436562313 +-4.226376219646 +-4.213877404360 +-4.201942919360 +-4.190575378238 +-4.179777216861 +-4.169550704152 +-4.159897952132 +-4.150820925224 +-4.142321448876 +-4.134401217518 +-4.127061801904 +-4.120304655848 +-4.114131122402 +-4.108542439498 +-4.103539745078 +-4.099124081746 +-4.095296400969 +-4.092057566845 +-4.089408359477 +-4.087349478050 +-4.085881544776 +-4.085005125470 +-4.084720981178 +-4.085033327463 +-4.085987499021 +-4.087933695347 +-4.089542667304 +-4.083601893331 +-4.069371128986 +-4.047173764699 +-4.017551067753 +-3.981433540356 +-3.940120667553 +-3.895214066564 +-3.848533843215 +-3.802027208425 +-3.757675323628 +-3.717403596292 +-3.683001546724 +-3.655836777792 +-3.636160980248 +-3.625748070432 +-3.626042663034 +-3.632795747685 +-3.640044775966 +-3.647592772133 +-3.655898364332 +-3.665141351398 +-3.675395584681 +-3.686707376239 +-3.699116198508 +-3.712659576909 +-3.726985709089 +-3.741806085215 +-3.757108032768 +-3.772879336811 +-3.789108192266 +-3.805783157925 +-3.822893114172 +-3.840427224546 +-3.858374900826 +-3.876725771273 +-3.895469651663 +-3.914596518794 +-3.934096486183 +-3.953959781699 +-3.974176726927 +-3.994737718060 +-4.015633208159 +-4.036853690632 +-4.058389683801 +-4.080231716442 +-4.102370314201 +-4.124795986789 +-4.147499215884 +-4.170470443669 +-4.193700061942 +-4.217178401742 +-4.240895723450 +-4.264842207331 +-4.289007944470 +-4.313382928128 +-4.337957045577 +-4.362720070763 +-4.387661659140 +-4.412771349903 +-4.438038597036 +-4.463452920245 +-4.489004577897 +-4.514687585665 +-4.540513412106 +-4.566572057929 +-4.593276191302 +-4.621884674645 +-4.650665831862 +-4.660994022003 +-4.643116522393 +-4.599896360561 +-4.534830072068 +-4.451581628754 +-4.354257033281 +-4.247344325774 +-4.135546088897 +-4.023588564242 +-3.916033021731 +-3.817100445482 +-3.730261485274 +-3.650649243763 +-3.581770624649 +-3.526954009482 +-3.489564101247 +-3.471772674208 +-3.466461894000 +-3.461683710184 +-3.455528642018 +-3.448886264721 +-3.442194218503 +-3.435582836501 +-3.429086536752 +-3.422715096643 +-3.416472493651 +-3.410361391171 +-3.404384142086 +-3.398543003016 +-3.392840177636 +-3.387277824220 +-3.381858055893 +-3.376582939440 +-3.371454493824 +-3.366474688663 +-3.361645442696 +-3.356968622251 +-3.352446039731 +-3.348079452103 +-3.343870559401 +-3.339821003245 +-3.335932365378 +-3.332206166210 +-3.328643863391 +-3.325246850400 +-3.322016455149 +-3.318953938619 +-3.316060493508 +-3.313337242907 +-3.310785239003 +-3.308405461800 +-3.306198817872 +-3.304166139136 +-3.302308181657 +-3.300625624479 +-3.299119068477 +-3.297789035248 +-3.296635966026 +-3.295660220619 +-3.294862076388 +-3.294241727251 +-3.293799282710 +-3.293534766923 +-3.293448117797 +-3.293539186119 +-3.293807734718 +-3.294253437658 +-3.294875879475 +-3.295674554435 +-3.296648865845 +-3.297798125384 +-3.299121552491 +-3.300618273775 +-3.302287322482 +-3.304127637991 +-3.306138065364 +-3.308317354936 +-3.310664161957 +-3.313177046282 +-3.315854472105 +-3.318694807765 +-3.321696325583 +-3.324857201783 +-3.328175516454 +-3.331649253583 +-3.335276301160 +-3.339054451338 +-3.342981400682 +-3.347054750475 +-3.351272007119 +-3.355630582606 +-3.360127795079 +-3.364760869478 +-3.369526938278 +-3.374423042319 +-3.379446131547 +-3.384593052245 +-3.389859496526 +-0.000000000000 +-0.000025870674 +-0.000073675492 +-0.000140896056 +-0.000225914315 +-0.000327692490 +-0.000445567111 +-0.000579116302 +-0.000728074027 +-0.000892274311 +-0.001071614446 +-0.001266029943 +-0.001475476389 +-0.001699914788 +-0.001939297736 +-0.002193554107 +-0.002462569891 +-0.002746162642 +-0.003044047229 +-0.003355792855 +-0.003680780185 +-0.004018190510 +-0.004367089570 +-0.004726636020 +-0.005096284922 +-0.005475809507 +-0.005865179958 +-0.006264440457 +-0.006673640550 +-0.007092809585 +-0.007521952599 +-0.007961054043 +-0.008410083087 +-0.008868998307 +-0.009337751188 +-0.009816288576 +-0.010304554300 +-0.010802490230 +-0.011310036926 +-0.011827134045 +-0.012353720561 +-0.012889734888 +-0.013435114919 +-0.013989798024 +-0.014553721014 +-0.015126820083 +-0.015709030734 +-0.016300287698 +-0.016900524845 +-0.017509675079 +-0.018127670242 +-0.018754440999 +-0.019389916728 +-0.020034025402 +-0.020686693459 +-0.021347845678 +-0.022017405043 +-0.022695292598 +-0.023381427304 +-0.024075725881 +-0.024778102646 +-0.025488469346 +-0.026206734973 +-0.026932805585 +-0.027666584100 +-0.028407970094 +-0.029156859578 +-0.029913144773 +-0.030676713859 +-0.031447450723 +-0.032225234687 +-0.033009940221 +-0.033801436641 +-0.034599587788 +-0.035404251691 +-0.036215280208 +-0.037032518651 +-0.037855805384 +-0.038684971403 +-0.039519839888 +-0.040360225733 +-0.041205935049 +-0.042056764634 +-0.042912501427 +-0.043772921911 +-0.044637791508 +-0.045506863922 +-0.046379880454 +-0.047256569289 +-0.048136644731 +-0.049019806414 +-0.049905738465 +-0.050794108635 +-0.051684567379 +-0.052576746905 +-0.053470260175 +-0.054364699864 +-0.055259637286 +-0.056154621263 +-0.057049176970 +-0.057942804730 +-0.058834978774 +-0.059725145974 +-0.060612724529 +-0.061497102639 +-0.062377637148 +-0.063253652165 +-0.064124437686 +-0.064989248201 +-0.065847301313 +-0.066697776369 +-0.067539813121 +-0.068372510423 +-0.069194924981 +-0.070006070175 +-0.070804914964 +-0.071590382893 +-0.072361351223 +-0.073116650199 +-0.073855062487 +-0.074575322782 +-0.075276259908 +-0.075956662741 +-0.076615264120 +-0.077250744266 +-0.077861732621 +-0.078446808682 +-0.079004502190 +-0.079533292898 +-0.080031610081 +-0.080497831891 +-0.080930284603 +-0.081327241821 +-0.081686923649 +-0.082007495859 +-0.082287069065 +-0.082523697912 +-0.082715380286 +-0.082860056551 +-0.082955608816 +-0.082999860228 +-0.082990574316 +-0.082925454358 +-0.082802142796 +-0.082618789111 +-0.082373635008 +-0.082064885202 +-0.081690728073 +-0.081249349675 +-0.080738943390 +-0.080157716717 +-0.079503896156 +-0.078775730825 +-0.077971495211 +-0.077089491363 +-0.076128050669 +-0.075085535393 +-0.073960340027 +-0.072750892549 +-0.071455655619 +-0.070073127766 +-0.068601844587 +-0.067040379987 +-0.065387347477 +-0.063641401557 +-0.061801239180 +-0.059865601327 +-0.057833274696 +-0.055703093506 +-0.053473941442 +-0.051144753720 +-0.048714519302 +-0.046182283249 +-0.043547149223 +-0.040808282129 +-0.037964910914 +-0.035016331510 +-0.031961909936 +-0.028801085537 +-0.025533374392 +-0.022158372868 +-0.018675761326 +-0.015085307994 +-0.011386872998 +-0.007580412562 +-0.003665983386 +0.000356252784 +0.004486024393 +0.008722945083 +0.013066508460 +0.017516082589 +0.022070904180 +0.026730072437 +0.031492542505 +0.036357118467 +0.041322445655 +0.046387000734 +0.051549067181 +0.056806600289 +0.062156295773 +0.067587439422 +0.073046243667 +0.078278060006 +0.082650772104 +0.088504924776 +0.105510743614 +0.137032697099 +0.181581068786 +0.237342694758 +0.302395518412 +0.374586460763 +0.451526553949 +0.530629791240 +0.609169336653 +0.684344086169 +0.753350131402 +0.813441355543 +0.861933541847 +0.896107201075 +0.913768836226 +0.918315996627 +0.920395728529 +0.924066613972 +0.928615307387 +0.933408673608 +0.938202670452 +0.942899361314 +0.947471212336 +0.951905386062 +0.956192001377 +0.960322109479 +0.964287324072 +0.968079758114 +0.971692017422 +0.975117206529 +0.978348965744 +0.981381887524 +0.984215599913 +0.986856214031 +0.989288923164 +0.991506536307 +0.993505337501 +0.995282195362 +0.996834465372 +0.998159979644 +0.999257036613 +1.000124389252 +1.000761231898 +1.001167185794 +1.001342283445 +1.001286951898 +1.001001995078 +1.000488575281 +0.999748193975 +0.998782672019 +0.997594129439 +0.996184964894 +0.994557834963 +0.992715633379 +0.990661470335 +0.988398651982 +0.985930660236 +0.983261132986 +0.980393844814 +0.977332688302 +0.974081656002 +0.970644823141 +0.967026331101 +0.963230371737 +0.959261172535 +0.955122982663 +0.950820059909 +0.946356658504 +0.941737017848 +0.936965352100 +0.932045840632 +0.926982619318 +0.921779772622 +0.916441326462 +0.910971241812 +0.905373409004 +0.899651642680 +0.893809677380 +0.887851163693 +0.881779664954 +0.875598654435 +0.869311512994 +0.862921527139 +0.856431887476 +0.849845687499 +0.843165922687 +0.836395489877 +0.829537186877 +0.822593712301 +0.815567665574 +0.808461547103 +0.801277758577 +0.794018603374 +0.786686287048 +0.779282917884 +0.771810507494 +0.764270971435 +0.756666129285 +0.748995923563 +0.741263543036 +0.733470685203 +0.725618813688 +0.717709311484 +0.709743481376 +0.701722546225 +0.693647649195 +0.685519853920 +0.677340144597 +0.669109426002 +0.660828523418 +0.652498182478 +0.644119068902 +0.635691768134 +0.627216784870 +0.618694542468 +0.610125382233 +0.601509562589 +0.592847258103 +0.584138558392 +0.575383466872 +0.566581899374 +0.557733682443 +0.548838549659 +0.539896115240 +0.530905568539 +0.521861939349 +0.512711788586 +0.502884086095 +0.488308305057 +0.484339993761 +0.564343430314 +0.725539370006 +0.955852072101 +1.243262227440 +1.574232366872 +1.934037051004 +2.307414401214 +2.679264802300 +3.035332803481 +3.362830308731 +3.650962225517 +3.891315919479 +4.078034774390 +4.207520069477 +4.277371907968 +4.288350251813 +4.268927444021 +4.251592165305 +4.237642288019 +4.224829753007 +4.212429387679 +4.200267245609 +4.188304266106 +4.176531892211 +4.164948560171 +4.153554241137 +4.142349330426 +4.131334552735 +4.120510880324 +4.109879500245 +4.099441794479 +4.089199324159 +4.079153815578 +4.069307147360 +4.059661338554 +4.050218537556 +4.040981011806 +4.031951138204 +4.023131394196 +4.014524349500 +4.006132658425 +3.997959052745 +3.990006335102 +3.982277372883 +3.974775092563 +3.967502474464 +3.960462547898 +3.953658386675 +3.947093104930 +3.940769853254 +3.934691815085 +3.928862203337 +3.923284257241 +3.917961239361 +3.912896432768 +3.908093138380 +3.903554672540 +3.899284365326 +3.895285561751 +3.891561635752 +3.888116063375 +3.884952778818 +3.882077914404 +3.879508362680 +3.877313055306 +3.875791748094 +3.875914940684 +3.876550199270 +3.862530126184 +3.823625286303 +3.759737702394 +3.671855623108 +3.561700793600 +3.432035387213 +3.286654970363 +3.130234865414 +2.968104450601 +2.805980872760 +2.649684438532 +2.504862398699 +2.376909767474 +2.270789537341 +2.191025637142 +2.141992211893 +2.126126902764 +2.131580643197 +2.138219388690 +2.142248848672 +2.145254575113 +2.148075812907 +2.150967279620 +2.153994027321 +2.157171063729 +2.160501370042 +2.163985184771 +2.167622131895 +2.171411687779 +2.175353280048 +2.179446307707 +2.183690144859 +2.188084141067 +2.192627621043 +2.197319884182 +2.202160204048 +2.207147827842 +2.212281975840 +2.217561840811 +2.222986587411 +2.228555351559 +2.234267239782 +2.240121328540 +2.246116663530 +2.252252258962 +2.258527096817 +2.264940126076 +2.271490261933 +2.278176384982 +2.284997340385 +2.291951937019 +2.299038946601 +2.306257102804 +2.313605100341 +2.321081594047 +2.328685197940 +2.336414484268 +2.344267982548 +2.352244178593 +2.360341513534 +2.368558382835 +2.376893135302 +2.385344072098 +2.393909445750 +2.402587459169 +2.411376264670 +2.420273963006 +2.429278602414 +2.438388177671 +2.447600629179 +2.456913842064 +2.466325645304 +2.475833810887 +2.485436053002 +2.495130027267 +2.504913329996 +2.514783497517 +2.524738005534 +2.534774268545 +2.544889639319 +2.555081408435 +2.565346803885 +2.575682990759 +2.586087070991 +2.596556083200 +2.607087002612 +2.617676741066 +2.628322147127 +2.639020006287 +2.649767041280 +2.660559912498 +2.671395218523 +2.682269496775 +2.693179224285 +2.704120818585 +2.715090638735 +2.726084986453 +2.737100105722 +0.000000000000 +-24.999962100348 +-24.999969567613 +-24.999976571529 +-24.999983425768 +-24.999989995568 +-24.999995825537 +-24.999999743637 +-24.999999017684 +-24.999987569065 +-24.999952199282 +-24.999864633812 +-24.999664788229 +-24.999225720887 +-24.998280793677 +-24.996274421389 +-24.992064249091 +-24.983356599149 +-24.965744869573 +-24.931452745850 +-24.868949296749 +-24.767054123331 +-24.627542207970 +-24.476901899690 +-24.351711934442 +-24.268044777182 +-24.218432663054 +-24.189097679850 +-24.169931737317 +-24.155392124179 +-24.142825713330 +-24.131052646294 +-24.119571292009 +-24.108173858012 +-24.096774206728 +-24.085334497864 +-24.073835165527 +-24.062263065752 +-24.050606948774 +-24.038855774258 +-24.026998088594 +-24.015021783233 +-24.002913983410 +-23.990660978454 +-23.978248163342 +-23.965659981466 +-23.952879865330 +-23.939890174045 +-23.926672127153 +-23.913205734462 +-23.899469721649 +-23.885441451345 +-23.871096839435 +-23.856410266259 +-23.841354482381 +-23.825900508589 +-23.810017529719 +-23.793672781920 +-23.776831432896 +-23.759456454668 +-23.741508488336 +-23.722945700304 +-23.703723629397 +-23.683795024229 +-23.663109670187 +-23.641614205325 +-23.619251924432 +-23.595962570498 +-23.571682112768 +-23.546342510522 +-23.519871461714 +-23.492192135529 +-23.463222887939 +-23.432876959282 +-23.401062152887 +-23.367680493779 +-23.332627866490 +-23.295793631025 +-23.257060216091 +-23.216302688745 +-23.173388299704 +-23.128176003673 +-23.080515954217 +-23.030248972864 +-22.977205992382 +-22.921207474453 +-22.862062802336 +-22.799569649501 +-22.733513325772 +-22.663666103059 +-22.589786523525 +-22.511618693805 +-22.428891569895 +-22.341318238424 +-22.248595201290 +-22.150401672134 +-22.046398894735 +-21.936229495346 +-21.819516883024 +-21.695864714401 +-21.564856441879 +-21.426054967070 +-21.279002424320 +-21.123220122410 +-20.958208675914 +-20.783448361182 +-20.598399735413 +-20.402504560693 +-20.195187077979 +-19.975855678727 +-19.743905023848 +-19.498718660749 +-19.239672188962 +-18.966137023016 +-18.677484797249 +-18.373092450860 +-18.052348022165 +-17.714657168369 +-17.359450410797 +-16.986191085003 +-16.594383929167 +-16.092458683555 +-15.571023798921 +-15.042353207526 +-14.506216018432 +-13.962386440443 +-13.410644121308 +-12.850774475994 +-12.282569005252 +-11.705825605409 +-11.120348870462 +-10.525950387758 +-9.922449028738 +-9.309671236429 +-8.687451311561 +-8.055631699371 +-7.414063279355 +-6.762605660372 +-6.101127483708 +-5.429506736812 +-4.747631080583 +-4.055398193151 +-3.352716133179 +-2.639503724411 +-1.903083113706 +-1.163125849966 +-0.425315690119 +0.308826038039 +1.037853097367 +1.760405915044 +2.475220937152 +3.181137710090 +3.877103713935 +4.562177042353 +5.235527080948 +5.896433379903 +6.544282947031 +7.178566204543 +7.798871858328 +8.404880923908 +8.996360140590 +9.573154986649 +10.135182485594 +10.682423968478 +11.214917931268 +11.732753100745 +12.236061798142 +12.725013667399 +13.199809814937 +13.660677390407 +14.107864622966 +14.541636315253 +14.962269787102 +15.370051252949 +15.765272610658 +16.148228614663 +16.519214402821 +16.878523343836 +17.226445170328 +17.563264361529 +17.889258738972 +18.204698238443 +18.509843821914 +18.804946494289 +19.090246391752 +19.365971911652 +19.632338858376 +19.889549585959 +20.137792126403 +20.377239302919 +20.608047839454 +20.830357491230 +21.044290234892 +21.249949569534 +21.447419989635 +21.636766695409 +21.818035602553 +21.991253697908 +22.156429744898 +22.313555175789 +22.462604079415 +22.603525731117 +22.736194172879 +22.860158044732 +22.973816457498 +23.075318954540 +23.178676956578 +23.293667557570 +23.417542049535 +23.547056887363 +23.679379824509 +23.811803233299 +23.941689792499 +24.066516035976 +24.183951473033 +24.291949430544 +24.388832499347 +24.473351639618 +24.544686947443 +24.602336241991 +24.645910942361 +24.676104530746 +24.699220834431 +24.721092753192 +24.741803218140 +24.751737285496 +24.431743023028 +24.350831307641 +24.357555519965 +24.371579511124 +24.384398743074 +24.394893109373 +24.402832394270 +24.408111853522 +24.410578963212 +24.409695712948 +24.402053995267 +24.353950849363 +23.925157213427 +22.642292706572 +22.346460691108 +22.289478244746 +22.235926119082 +22.178305889609 +22.116585790595 +22.050885238951 +21.981349531413 +21.908149050151 +21.831479361926 +21.751560868640 +21.668637977084 +21.582977780150 +21.494868259120 +21.404616034169 +21.312543707135 +21.218986855799 +21.124290751637 +21.028806882464 +20.932889367189 +20.836891351751 +20.741161473326 +20.646040474343 +20.551858039230 +20.458929915787 +20.367555370417 +20.278015012904 +20.190569012728 +20.105455715756 +20.022890658094 +19.943065963254 +19.866150100013 +19.792287971384 +19.721601300121 +19.654189272994 +19.590129404523 +19.529478580827 +19.472274245335 +19.418535690222 +19.368265420198 +19.321450558574 +19.278064269040 +19.238067170286 +19.201408724155 +19.168028581520 +19.137857873314 +19.110820437093 +19.086833972184 +19.065811118779 +19.047660458370 +19.032287434601 +19.019595195010 +19.009485355292 +19.001858688587 +18.996615742993 +18.993657390982 +18.992885314765 +18.994202431809 +18.997513264856 +19.002724260746 +19.009744062328 +19.018483737574 +19.028856969916 +19.040780396646 +19.055255533487 +21.335845507929 +21.394172525616 +21.413682887563 +21.433901708354 +21.454807246310 +21.476355407114 +21.498503447050 +21.521209992313 +21.544435038669 +21.568139945348 +21.592287423840 +21.616841522216 +21.641767605552 +21.667032332955 +21.692603631685 +21.718450668794 +21.744543820659 +21.770854640786 +21.797355826172 +21.824021182533 +21.850825588633 +21.877744959952 +21.904756211886 +21.931837222653 +21.958966795959 +21.986124622345 +22.013291224454 +22.040447705930 +22.067573228531 +22.094620402250 +22.121366427998 +22.146857826535 +22.181033759536 +22.228324155562 +22.286906490000 +22.355959107071 +22.435087525801 +22.524231005613 +22.623650730420 +22.733867055657 +22.855452922916 +22.988539070659 +23.131824429918 +22.830995089425 +20.253937831872 +18.339412445967 +17.213912061488 +17.015519790720 +17.711856413939 +18.558056928354 +19.329093235287 +20.078398984993 +20.830181110008 +21.590715696011 +22.361465583156 +23.142767194775 +23.473991270330 +23.470624987413 +23.469865368319 +23.471579019258 +23.475639333677 +23.481925980256 +23.490324420637 +23.500725450630 +23.513024765036 +23.527122546943 +23.542923081939 +23.560334397140 +23.579267924553 +23.599638188041 +23.621362512955 +23.644360757417 +23.668555064219 +23.693869632253 +23.720230506462 +23.747565385315 +23.775803444855 +23.804875178460 +23.834712251484 +23.865247370025 +23.896414163140 +23.928147077852 +23.960381286397 +23.993052605171 +24.026097424922 +24.059452651756 +24.093055658582 +24.126844246664 +24.160756616992 +24.194731351251 +24.228707402360 +24.262624095214 +24.296421141211 +24.330038683396 +24.363417449844 +24.396499363079 +24.429229994117 +24.461565849605 +24.493466218372 +24.524806863135 +24.555192815217 +24.583927300998 +24.610759839680 +24.635529164706 +24.658052330475 +24.678097354462 +24.695326858901 +24.709192273225 +24.718728196060 +24.722111065819 +24.521051326733 +18.179124997375 +12.345860439518 +7.261009192785 +3.149646013370 +0.229181088512 +-1.277579007079 +-1.405761479605 +-1.130106252414 +-0.991669844811 +-0.936034315232 +-0.905559397282 +-0.881358172169 +-0.858548726346 +-0.836005468774 +-0.813498659735 +-0.790998269480 +-0.768516569541 +-0.746074217106 +-0.723693197871 +-0.701395392509 +-0.679202286211 +-0.657134905004 +-0.635213796180 +-0.613459017188 +-0.591890126153 +-0.570526172687 +-0.549385688745 +-0.528486679447 +-0.507846613822 +-0.487482415453 +-0.467410452999 +-0.447646530563 +-0.428205877886 +-0.409103140354 +-0.390352368791 +-0.371967009026 +-0.353959891219 +-0.336343218937 +-0.319128557967 +-0.302326824865 +-0.285948275230 +-0.270002491709 +-0.254498371727 +-0.239444114961 +-0.224847210545 +-0.210714424034 +-0.197051784139 +-0.183864569237 +-0.171157293704 +-0.158933694064 +-0.147196715011 +-0.135948495315 +-0.125190353668 +-0.114922774488 +-0.105145393752 +-0.095856984880 +-0.087055444740 +-0.078737779831 +-0.070900092694 +-0.063537568625 +-0.056644462758 +-0.050214087595 +-0.044238801056 +-0.038709995129 +-0.033618085224 +-0.028952500295 +-0.024701673850 +-0.020853035928 +-0.017393006164 +-0.014306988022 +-0.011579364333 +-0.009193494231 +-0.007131711606 +-0.005375325195 +-0.003904620423 +-0.002698863127 +-0.001736305263 +-0.000994192747 +-0.000448775527 +-0.000075320035 +0.000151875988 +0.000259465564 +0.000275033348 +0.000227071677 +0.000144957558 +0.000058936683 +0.000000000000 +-0.043674709222 +-0.039167812090 +-0.034408168367 +-0.029003626664 +-0.022643333870 +-0.014873539875 +-0.005031618954 +0.007849510274 +0.025180262175 +0.049015636393 +0.082345552841 +0.129510521412 +0.196788859158 +0.293206172170 +0.431598829384 +0.629870675811 +0.912088558558 +1.308279636119 +1.850047696775 +2.556437633622 +3.404855731284 +4.299322887793 +5.087365319282 +5.656336125162 +6.005165708916 +6.202219912578 +6.315660371925 +6.388615836957 +6.443372085014 +6.490298843239 +6.533935313466 +6.576191389278 +6.617852048103 +6.659240596994 +6.700498087806 +6.741696590747 +6.782883505795 +6.824098320967 +6.865378763260 +6.906763015281 +6.948290527128 +6.990002346462 +7.031941290667 +7.074152070436 +7.116681400147 +7.159578105972 +7.202893234879 +7.246680165296 +7.290994719488 +7.335895277488 +7.381442892324 +7.427701406259 +7.474737567711 +7.522621148483 +7.571425060909 +7.621225474461 +7.672101931347 +7.724137460561 +7.777418689815 +7.832035954732 +7.888083404623 +7.945659104126 +8.004865129912 +8.065807661632 +8.128597066177 +8.193347974292 +8.260179348489 +8.329214541126 +8.400581341466 +8.474412010388 +8.550843301376 +8.630016466270 +8.712077244165 +8.797175831697 +8.885466832846 +8.977109186189 +9.072266067389 +9.171104764521 +9.273796523600 +9.380516361460 +9.491442842871 +9.606757818502 +9.726646120014 +9.851295208225 +9.980894769953 +10.115636258669 +10.255712373746 +10.401316472555 +10.552641909216 +10.709881293294 +10.873225661201 +11.042863552553 +11.218979983209 +11.401755306224 +11.591363951525 +11.787973034727 +11.991740825266 +12.202815063905 +12.421331119748 +12.647409977250 +12.881156044355 +13.122654773944 +13.371970092318 +13.629141630553 +13.894181757340 +14.167072415534 +14.447761769095 +14.736160672631 +15.032138982364 +15.335521735161 +15.646085231352 +15.963553067404 +16.287592176087 +16.617808944420 +16.953745493223 +17.294876216141 +17.640604690106 +17.990261082657 +18.343100193349 +18.698300251641 +18.947678393376 +19.187404641107 +19.431387381427 +19.679428112339 +19.931317154344 +20.186833803096 +20.445746482288 +20.707812895797 +20.972780177597 +21.240385037907 +21.510353904144 +21.782403055329 +22.056238748703 +22.331557337468 +22.608045378712 +22.885379730738 +23.163227639252 +23.441246812069 +23.719085482216 +23.996382459627 +24.272767171849 +24.547859694260 +24.821270757946 +24.927460498630 +24.972928355522 +24.996382118173 +24.998092705875 +24.978448178634 +24.937942647418 +24.877164102625 +24.796781552245 +24.697531845804 +24.580206531263 +24.445639052226 +24.294692545593 +24.128248448632 +23.947196072561 +23.752423249616 +23.544808114469 +23.325212040058 +23.094473713316 +22.853404308278 +22.602783692546 +22.343357587651 +22.075835593971 +21.800889985673 +21.519155179982 +21.231227787044 +20.937667151125 +20.638996300120 +20.335703227855 +20.028242441978 +19.717036719004 +19.402479017089 +19.084934506193 +18.764742684376 +18.442219558093 +18.117659873480 +17.791339394901 +17.463517236448 +17.134438261727 +16.804335577051 +16.473433152952 +16.141948618432 +15.810096281019 +15.478090432865 +15.146149007776 +14.814497655065 +14.483374292262 +14.153034188647 +13.823755614371 +13.495846064917 +13.169649038247 +12.845551303334 +12.523990556802 +12.205463323617 +11.890532927195 +11.579837367506 +11.274097210666 +10.974125499100 +10.680853759008 +10.395455114219 +10.119940052613 +9.859197222685 +9.619234254602 +9.367440794649 +9.077723515071 +8.753212944796 +8.398578715588 +8.017916414212 +7.615644377022 +7.196909223992 +6.767777950606 +6.335337690176 +5.907724211779 +5.494075155775 +5.104416913035 +4.749563680008 +4.441290795979 +4.192742100300 +4.011218977578 +3.866329353575 +3.723920727725 +3.583739110637 +3.514472058222 +5.299994844803 +5.660126069709 +5.631119035320 +5.570109929891 +5.513720199360 +5.467101853839 +5.431554440037 +5.407780343530 +5.396632948297 +5.400626602446 +5.435050442250 +5.646688456475 +7.251680137077 +10.598424103981 +11.208733518053 +11.321624091751 +11.426443109061 +11.537883703903 +11.655755894194 +11.779578628983 +11.908832238117 +12.042965485879 +12.181400632418 +12.323538950946 +12.468766607637 +12.616460781026 +12.765995888323 +12.916749781868 +13.068109780264 +13.219478405405 +13.370278708308 +13.519959082688 +13.667997484582 +13.813904997966 +13.957228708986 +14.097553873964 +14.234505387714 +14.367748577925 +14.496989367815 +14.621973862443 +14.742487423763 +14.858353305778 +14.969430924106 +15.075613834364 +15.176827491322 +15.273026856372 +15.364193914966 +15.450335158791 +15.531479079975 +15.607673717077 +15.678984285093 +15.745490914714 +15.807286519530 +15.864474804114 +15.917168420815 +15.965487278795 +16.009557005295 +16.049507556181 +16.085471970655 +16.117585263279 +16.145983445309 +16.170802666565 +16.192178468650 +16.210245140180 +16.225135164798 +16.236978752988 +16.245903449085 +16.252033805378 +16.255491115683 +16.256393201392 +16.254854243504 +16.250984654776 +16.244890986652 +16.236675866166 +16.226437958523 +16.214271951484 +16.200268342991 +16.183239757593 +13.030031042192 +12.934040143858 +12.901712975014 +12.868095043765 +12.833209205902 +12.797115726838 +12.759873119899 +12.721538152501 +12.682165878246 +12.641809672537 +12.600521271165 +12.558350811399 +12.515346875180 +12.471556534030 +12.427025395380 +12.381797650018 +12.335916120429 +12.289422309799 +12.242356451520 +12.194757559016 +12.146663475785 +12.098110925518 +12.049135562217 +11.999772020246 +11.950053964430 +11.900014142410 +11.849684466947 +11.799096466297 +11.748286015512 +11.697339944592 +11.646680207557 +11.598133509756 +11.532638633773 +11.441224485783 +11.326685817340 +11.189776803029 +11.030270178383 +10.847074725659 +10.638159621187 +10.400543312396 +10.130561888890 +9.824819789230 +9.482547707747 +8.934298820493 +7.547737768246 +6.529997403540 +5.932254815700 +5.809778552827 +6.131580287327 +6.520325940901 +6.865336667849 +7.192918385479 +7.514551537456 +7.832911097836 +8.148340131526 +8.460641012294 +8.600682894722 +8.609864991354 +8.611935442987 +8.607263841039 +8.596183476672 +8.578995555963 +8.555972832239 +8.527362768632 +8.493390306193 +8.454260296221 +8.410159644945 +8.361259210844 +8.307715488536 +8.249672108038 +8.187261173825 +8.120604464581 +8.049814511483 +7.974995570359 +7.896244500892 +7.813651564275 +7.727301149136 +7.637272434308 +7.543639995850 +7.446474364799 +7.345842541320 +7.241808470192 +7.134433481982 +7.023776703733 +6.909895442524 +6.792845544868 +6.672681734584 +6.549457931451 +6.423227552653 +6.294043798664 +6.161959924372 +6.027029493302 +5.889306599911 +5.748845985354 +5.605702691326 +5.459929608170 +5.311566096120 +5.160601581639 +5.007007600198 +4.851171077683 +4.694946038726 +4.542084428790 +4.394372834958 +4.253318148678 +4.120736313622 +3.998940292423 +3.891123723353 +3.802082285098 +3.739584049886 +3.717154414719 +3.730698736890 +2.887936181702 +2.171510478766 +1.595584891485 +1.168187592530 +0.892399106012 +0.767674365082 +0.768468371233 +0.799910298663 +0.818005351182 +0.828424837713 +0.835912657771 +0.841913462975 +0.846786834594 +0.850622630382 +0.853451317488 +0.855291558751 +0.856160214446 +0.856074333821 +0.855051527357 +0.853110024525 +0.850268672632 +0.846546925221 +0.841964828943 +0.836543010488 +0.830302663844 +0.823265537899 +0.815453924378 +0.806890646072 +0.797599045345 +0.787602972866 +0.776926776555 +0.765595290688 +0.753633825127 +0.741068154645 +0.727924508287 +0.714229558749 +0.700010411699 +0.685294595026 +0.670110047944 +0.654485109926 +0.638448509394 +0.622029352136 +0.605257109387 +0.588161605520 +0.570773005304 +0.553121800667 +0.535238796910 +0.517155098317 +0.498902093121 +0.480511437739 +0.462015040262 +0.443445043106 +0.424833804807 +0.406213880875 +0.387618003677 +0.369079061291 +0.350630075280 +0.332304177343 +0.314134584791 +0.296154574814 +0.278397457490 +0.260896547506 +0.243685134550 +0.226796452345 +0.210263646306 +0.194119739780 +0.178397598870 +0.163129895820 +0.148349070945 +0.134087293131 +0.120376418868 +0.107247949871 +0.094732989270 +0.082862196413 +0.071665740308 +0.061173251750 +0.051413774177 +0.042415713326 +0.034206785765 +0.026813966421 +0.020263435226 +0.014580523330 +0.009789659901 +0.005914322153 +0.002977010395 +0.000999421855 diff --git a/examples-gallery/beginner/plot_disc_pushing_disc.py b/examples-gallery/beginner/plot_disc_pushing_disc.py new file mode 100644 index 00000000..3b6285e5 --- /dev/null +++ b/examples-gallery/beginner/plot_disc_pushing_disc.py @@ -0,0 +1,562 @@ +# %% +r""" +Disc Pushing Disc +================= + +Description +----------- + +A homogenious disc (:math:`\textrm{disc}_2`) of mass :math:`m_2` and radius +:math:`r_2` is at rest at point A. Another disc (:math:`\textrm{disc}_1`) +of mass :math:`m_1` and radius :math:`r_1` is at rest at point B. A control +force +:math:`\vec{F} = \begin{pmatrix} f_x \\ f_y \end{pmatrix}` can be applied to +:math:`\textrm{disc}_1`. +The goal is to push :math:`\textrm{disc}_2` to a target point C, using +:math:`\textrm{disc}_1` with minimal +:math:`\int_0^{t_f} \lvert \vec{F} \rvert \,dt`. +The motion is in the horizontal Y/Y plane. A Coulomb friction force with +coefficient :math:`\mu_c` acts on the discs. +The collision between the discs is modeled as a spring force proportional to +the penetration, with proportionality constant :math:`k_{\textrm{spring}}`. +A friction force proportional to the difference of the tangential speeds at +the contact points, with coefficient :math:`\mu_s` also acts on the discs. +A particle of mass :math:`m_p` is fixed on the rim of each disc. + +Notes +----- + +- If point B is too far from the line AC one needs to iterate from a point b + close to the line to the desired point B. This iteration may take a long + time. In the simulation, a solution from an earlier iteration is used to + minimize running time. +- In order to bound the control force :math:`\vec{F}`, + :math:`\lvert \vec{F} \rvert = \sqrt{f_x^2 + f_y^2}` is added as an + additional equation to the equations ofmotion, and bounded with + ``eom_bounds``. +- Bounding the distance between the discs also seems to help convergence. + +**States** + +- :math:`x_1, y_1`: coordinates of the center of mass of + :math:`\textrm{disc}_1` +- :math:`x_2, y_2`: coordinates of the center of mass of + :math:`\textrm{disc}_2` +- :math:`q_1, q_2`: angles of the discs +- :math:`u_{x1}, u_{y1}`: speeds of the center of mass of + :math:`\textrm{disc}_1` +- :math:`u_{x2}, u_{y2}`: speeds of the center of mass of + :math:`\textrm{disc}_2` +- :math:`u_1, u_2`: angular speeds of the discs + +**Control** + +- :math:`f_x, f_y`: components of the control force applied to + :math:`\textrm{disc}_1` + +**Parameters** + +- :math:`m_1, m_2`: masses of the discs +- :math:`m_p`: mass of the particles fixed on the rim of the discs +- :math:`r_1, r_2`: radii of the discs +- :math:`k_{\textrm{spring}}`: spring constant for the collision between the + discs +- :math:`g`: gravitational acceleration +- :math:`\mu_c, \mu_s`: Coulomb and speed dependent friction coefficients + +""" +import os +import sympy as sm +import sympy.physics.mechanics as me +import numpy as np +import matplotlib.pyplot as plt + +from opty import Problem +from scipy.interpolate import interp1d +from matplotlib.animation import FuncAnimation +from matplotlib.patches import Circle, FancyArrowPatch + +# %% +# Kane's Equations of Motion +# -------------------------- + +N, A1, A2 = sm.symbols('N A1 A2', cls=me.ReferenceFrame) +O, Dmc1, Dmc2 = sm.symbols('O Dmc1 Dmc2', cls=me.Point) +c1, c2, P1, P2 = sm.symbols('c1 c2 P1 P2', cls=me.Point) +t = me.dynamicsymbols._t +O.set_vel(N, 0) + +# %% +# Angular coordinates and speeds of the discs. +q1, q2, u1, u2 = me.dynamicsymbols('q1 q2 u1 u2') + +# %% +# Locations and speeds of the centers of mass of the discs. +x1, y1, x2, y2, ux1, uy1, ux2, uy2 = me.dynamicsymbols( + 'x1 y1 x2 y2 ux1 uy1 ux2 uy2') + +# %% +# Control forces acting on Dmc1. +fx, fy = me.dynamicsymbols('fx fy') + +# %% +# Masses and radii of the discs, spring constant. + +m1, m2, mp, r1, r2, k_spring, g = sm.symbols('m1 m2 mp r1 r2 k_spring g') + +# %% +# Coulomb and speed dependent friction coefficients. +mu_c, mu_s = sm.symbols('mu_c mu_s') + +# %% +# Define the reference frames for the two discs. +A1.orient_axis(N, q1, N.z) +A1.set_ang_vel(N, u1 * N.z) +A2.orient_axis(N, q2, N.z) +A2.set_ang_vel(N, u2 * N.z) + +# %% +# Define the positions of the centers of mass of the discs. +Dmc1.set_pos(O, x1 * N.x + y1 * N.y) +Dmc2.set_pos(O, x2 * N.x + y2 * N.y) +Dmc1.set_vel(N, ux1 * N.x + uy1 * N.y) +Dmc2.set_vel(N, ux2 * N.x + uy2 * N.y) + +P1.set_pos(Dmc1, r1 * A1.y) +P2.set_pos(Dmc2, r2 * A2.y) +P1.v2pt_theory(Dmc1, N, A1) +_ = P2.v2pt_theory(Dmc2, N, A2) + +# %% +# Define the contact points. +vec_Dmc1_to_Dmc2 = Dmc2.pos_from(Dmc1).normalize() +c1.set_pos(Dmc1, r1 * vec_Dmc1_to_Dmc2) +c2.set_pos(Dmc2, -r2 * vec_Dmc1_to_Dmc2) + +# %% +# Note: c1.pos_from(O).diff(t, N) does not give the correct speed: It cannot +# know, that c1 is a point fixed on the disc. +# So, ``v2pt_theory`` needs to be used, which assumes that c1 is fixed in A1. +c1.v2pt_theory(Dmc1, N, A1) +_ = c2.v2pt_theory(Dmc2, N, A2) + + +# %% +# Define some smooth functions needed. + +steep = 50 + + +def coulomb_direction(xx, steep=steep): + """returns 1 if xx > 0, -1 if xx < 0""" + return sm.tanh(steep * xx) + + +def smooth_step(xx, steep=steep): + """returns 0 if xx < 0, 1 if xx > 0""" + return 0.5 * (1 + sm.tanh(steep * xx)) + + +def distance_c1_c2(Dmc1, Dmc2): + """returns the distance between the contact points + negative if the discs are overlapping""" + return (Dmc2.pos_from(Dmc1)).magnitude() - r1 - r2 + + +# %% +# Coulomb friction on the discs, acting at the centers of mass. +FL1 = [ + (Dmc1, -mu_c * m1 * g * coulomb_direction(ux1) * N.x + + -mu_c * m1 * g * coulomb_direction(uy1) * N.y), + (Dmc2, -mu_c * m2 * g * coulomb_direction(ux2) * N.x + + -mu_c * m2 * g * coulomb_direction(uy2) * N.y) +] + +# %% +# Forces at the contact points. +vecDmc1Dmc2 = Dmc2.pos_from(Dmc1).normalize() +vectangent = vecDmc1Dmc2.cross(N.z) + +abstand = distance_c1_c2(Dmc1, Dmc2) +FL2 = [ + (c1, k_spring * abstand * (1 - smooth_step(abstand)) * vecDmc1Dmc2), + (c2, -k_spring * abstand * (1 - smooth_step(abstand)) * vecDmc1Dmc2) +] + +speed_delta = c1.vel(N) - c2.vel(N) +FL3 = [ + (c1, -mu_s * speed_delta.dot(vectangent) * vectangent), + (c2, mu_s * speed_delta.dot(vectangent) * vectangent) +] + +# %% +# Control forces on Dmc1. +FL4 = [(Dmc1, fx * N.x + fy * N.y)] + +FL = FL1 + FL2 + FL3 + FL4 + +# %% +# Define the bodies. +iZZ1 = 0.5 * m1 * r1**2 +iZZ2 = 0.5 * m2 * r2**2 + +inert1 = me.inertia(A1, 0, 0, iZZ1) +inert2 = me.inertia(A2, 0, 0, iZZ2) + +disc1 = me.RigidBody('Disc1', Dmc1, A1, m1, (inert1, Dmc1)) +disc2 = me.RigidBody('Disc2', Dmc2, A2, m2, (inert2, Dmc2)) +P1a = me.Particle('P1a', P1, mp) +P2a = me.Particle('P2a', P2, mp) + +bodies = [disc1, disc2, P1a, P2a] + +# %% +# Kinematic differential equations. +kd = sm.Matrix([ + ux1 - x1.diff(t), + uy1 - y1.diff(t), + ux2 - x2.diff(t), + uy2 - y2.diff(t), + u1 - q1.diff(t), + u2 - q2.diff(t) +]) + +# %% +# Form the equations of motion using Kane's method. +q_ind = [x1, y1, x2, y2, q1, q2] +u_ind = [ux1, uy1, ux2, uy2, u1, u2] + +kane = me.KanesMethod(N, q_ind, u_ind, kd_eqs=kd) +fr, frstar = kane.kanes_equations(bodies, FL) + +eom = kd.col_join(fr + frstar) + +# %% +# The magnitude of the force is limited. +# Bounding abstand seems to help convergence. +eom = eom.col_join(sm.Matrix([sm.sqrt(fx**2 + fy**2), abstand])) + +print(f"eom contains {sm.count_ops(eom)} operations, " + f"and has shape {eom.shape}") + +# %% +# Set Up the Optimization +# ----------------------- + +state_symbols = [x1, y1, x2, y2, q1, q2, ux1, uy1, ux2, uy2, u1, u2] +num_nodes = 501 +t0, tf = 0.0, 3.0 +interval_value = (tf - t0) / (num_nodes - 1) + +# %% +# Set the known parameters. +par_map = { + m1: 1.56, + m2: 1.0, + mp: 1.0, + r1: 1.25, + r2: 1.0, + k_spring: 1000.0, + g: 9.81, + mu_c: 0.25, + mu_s: 0.25, +} + +# %% +# Define the objective function and its gradient. + + +def obj(free): + """minimize the force needed.""" + summe = (np.sum([free[12*num_nodes + i]**2 + free[13*num_nodes + i]**2 + for i in range(num_nodes)]) * interval_value) + return summe + + +def obj_grad(free): + """gradient of the objective function.""" + grad = np.zeros_like(free) + for i in range(num_nodes): + grad[12*num_nodes + i] = 2 * free[12*num_nodes + i] * interval_value + grad[13*num_nodes + i] = 2 * free[13*num_nodes + i] * interval_value + return grad + + +# %% +# Define the instance constraints. +instance_constraints = [ + x1.func(t0) - 8.75, + y1.func(t0) - 0.0, + x2.func(t0) - 5.0, + y2.func(t0) - 5.0, + ux1.func(t0) - 0.0, + uy1.func(t0) - 0.0, + ux2.func(t0) - 0.0, + uy2.func(t0) - 0.0, + q1.func(t0) - 0.0, + q2.func(t0) - 0.0, + u1.func(t0) - 0.0, + u2.func(t0) - 0.0, + x2.func(tf) - 10.0, + y2.func(tf) - 10.0, +] + +# %% +# Bound the control forces. +eom_bounds = { + # This limits |force| that can be applied. + 12: (0.0, 25.0), + # Limits the distance between the discs. May help convergence. + 13: (-15.0, 15.0) +} + +# %% +# Find a solution. +# +# Use a given initial guess if available, else iterate to a solution with +# an initial guess which gives a plausible first guess for the movement of +# disc1 and disc2. +# This iteration may take a long time. + +fname = f"disc_pushing_disc_{num_nodes}_nodes_solution.csv" +if os.path.exists(fname): + + prob = Problem( + obj, + obj_grad, + eom, + state_symbols, + num_nodes, + interval_value, + known_parameter_map=par_map, + instance_constraints=instance_constraints, + eom_bounds=eom_bounds, + time_symbol=t, + backend='numpy' + ) + + initial_guess = np.loadtxt(fname) + solution, info = prob.solve(initial_guess) + print(info['status_msg']) + +else: + + for i in range(12): + instance_constraints[0] = x1.func(t0) - 6.0 - 0.25 * i + + prob = Problem( + obj, + obj_grad, + eom, + state_symbols, + num_nodes, + interval_value, + known_parameter_map=par_map, + instance_constraints=instance_constraints, + eom_bounds=eom_bounds, + time_symbol=t, + ) + if i == 0: + initial_guess = np.ones(prob.num_free) * 0.5 + half = num_nodes // 2 + rest = num_nodes - half + # x1 + initial_guess[0: half] = np.linspace(6.0, 5.1, half) + initial_guess[half: num_nodes] = np.linspace(5.0, 10.1, rest) + # y1 + initial_guess[num_nodes: num_nodes + half] = \ + np.linspace(0.0, 5.1, half) + initial_guess[num_nodes + half: 2*num_nodes] = \ + np.linspace(5.1, 10.1, rest) + # x2 + initial_guess[2*num_nodes: 3*num_nodes] = \ + np.linspace(5.0, 10.0, num_nodes) + # y2 + initial_guess[3*num_nodes: 4*num_nodes] = \ + np.linspace(5.0, 10.0, num_nodes) + else: + initial_guess = solution + + prob.add_option('max_iter', 60000) + solution, info = prob.solve(initial_guess) + initial_guess = solution + print(info['status_msg']) + + #np.savetxt(fname, solution, fmt='%.12f') + +# %% +# Plot the trajectories + +_ = prob.plot_trajectories(solution) + +# %% +# Plot errors. + +_ = prob.plot_constraint_violations(solution, subplots=True, show_bounds=True) + +# %% +# Plot the objective value. + +_ = prob.plot_objective_value() + +# %% +# Animation +# --------- + +# %% + + +def animateur(resultat, inputs, t0, tf, schritte): + """ + returns the animation. + """ + + fps = 15 + + t_arr = np.linspace(t0, tf, schritte) + state_sol = interp1d(t_arr, resultat, kind='cubic', axis=0) + input_sol = interp1d(t_arr, inputs, kind='cubic', axis=0) + + # Define point of the arrow + arrow_head = me.Point('arrow_head') + arrow_head.set_pos(Dmc1, fx/5 * N.x + fy/5 * N.y) + + coords = Dmc1.pos_from(O).to_matrix(N) + for point in (Dmc2, c1, c2, P1, P2, arrow_head): + coords = coords.row_join(point.pos_from(O).to_matrix(N)) + + pL = [key for key in par_map.keys()] + pL_vals = [par_map[key] for key in par_map.keys()] + + qL = [x1, y1, x2, y2, q1, q2, ux1, uy1, ux2, uy2, u1, u2] + coords_lam = sm.lambdify(qL + [fx, fy] + pL, coords, cse=True) + coords_vals = coords_lam(*resultat[0, 0: 12], *inputs[0, 0:2], *pL_vals) + + fig, ax = plt.subplots(figsize=(7, 7)) + + arrow = FancyArrowPatch([0.0, 0.0], [0.0, 0.0], + arrowstyle='-|>', # nicer arrow head + mutation_scale=20, # makes head bigger + linewidth=1, + color='green') + ax.add_patch(arrow) + + disc1 = Circle( + (coords_vals[0, 1], coords_vals[1, 1]), # center + radius=par_map[r1], # full width = 2a + facecolor='red', + edgecolor='red', + alpha=0.25, + ) + + disc2 = Circle( + (coords_vals[0, 2], coords_vals[1, 2]), # center + radius=par_map[r2], # full width = 2a + facecolor='blue', + edgecolor='blue', + alpha=0.25, + ) + + # centers of discs + line1 = ax.scatter(coords_vals[0, 0], coords_vals[1, 0], color='red', s=25, + edgecolor='black') + line2 = ax.scatter(coords_vals[0, 1], coords_vals[1, 1], color='green', + s=25, edgecolor='black') + # contact points + line3 = ax.scatter(coords_vals[0, 2], coords_vals[1, 2], color='red', s=15, + edgecolor='black') + line4 = ax.scatter(coords_vals[0, 3], coords_vals[1, 3], color='green', + s=15, edgecolor='black') + + # Particles + line5 = ax.scatter(coords_vals[0, 4], coords_vals[1, 4], color='black', + s=25) + line6 = ax.scatter(coords_vals[0, 5], coords_vals[1, 5], color='black', + s=25) + + # the line between contact points + line7, = ax.plot([coords_vals[0, 2], coords_vals[0, 3]], + [coords_vals[1, 2], coords_vals[1, 3]], color='black', + linestyle='-', lw=0.5) + + ax.add_patch(disc1) + ax.add_patch(disc2) + + # Trace of the center of disc 1 + trace, = ax.plot([], [], color='red', linestyle='-', lw=0.5) + + # Set limits + x_max = (np.max((np.concatenate((resultat[:, 0], resultat[:, 2])))) + + np.max((par_map[r1], par_map[r2])) + 1.0) + x_min = (np.min(np.concatenate((resultat[:, 0], resultat[:, 2]))) + + min(-1.0, -np.max((par_map[r1], par_map[r2])) - 1.0)) + y_max = (np.max(np.concatenate((resultat[:, 1], resultat[:, 3]))) + + np.max((par_map[r1], par_map[r2])) + 1.0) + y_min = (np.min(np.concatenate((resultat[:, 1], resultat[:, 3]))) + + min(-1.0, -np.max((par_map[r1], par_map[r2])) - 1.0)) + + ax.set_xlim(x_min, x_max) + ax.set_ylim(y_min, y_max) + ax.set_aspect('equal') + ax.set_xlabel('x [m]', fontsize=15) + ax.set_ylabel('y [m]', fontsize=15) + ax.scatter(10.0, 10.0, color='green', s=50, edgecolor='black') + + # Animation update function + + def update(frame): + + t = frame + + ax.set_title(f"Running time: {t:.2f} s (shown slightly slow motion)\n " + "Control force is the green arrow with magnitude: " + f"{np.linalg.norm(input_sol(t)):.2f} N \n " + "The black dots are the particles.") + coords_vals = coords_lam(*state_sol(t)[0: 12], *input_sol(t)[0:2], + *pL_vals) + # Update disc position + disc1.set_center((coords_vals[0, 0], coords_vals[1, 0])) + disc2.set_center((coords_vals[0, 1], coords_vals[1, 1])) + + arrow.set_positions(np.array([coords_vals[0, 0], coords_vals[1, 0]]), + np.array([coords_vals[0, 6], coords_vals[1, 6]])) + + line1.set_offsets((coords_vals[0, 0], coords_vals[1, 0])) + line2.set_offsets((coords_vals[0, 1], coords_vals[1, 1])) + line3.set_offsets((coords_vals[0, 2], coords_vals[1, 2])) + line4.set_offsets((coords_vals[0, 3], coords_vals[1, 3])) + line5.set_offsets((coords_vals[0, 4], coords_vals[1, 4])) + line6.set_offsets((coords_vals[0, 5], coords_vals[1, 5])) + line7.set_data([coords_vals[0, 2], coords_vals[0, 3]], + [coords_vals[1, 2], coords_vals[1, 3]]) + + # This 'complete calculation' is needed to avoid that the trace remains + # in the plot. + xdata, ydata = [], [] + for zeit in np.arange(t0, t, 1.0/fps): + coords_temp = coords_lam(*state_sol(zeit)[0: 12], + *input_sol(zeit)[0:2], + *pL_vals) + + xdata.append(coords_temp[0, 0]) + ydata.append(coords_temp[1, 0]) + trace.set_data(xdata, ydata) + + return (disc1, disc2, line1, line2, line3, line4, line5, line6, line7, + arrow, trace) + + # Create animation + + ani = FuncAnimation(fig, update, + frames=np.concatenate((np.arange(0, tf, 1.0/fps), + np.array([tf]))), + interval=1500/fps, blit=False) + + return ani + + +resultat, inputs, *_ = prob.parse_free(solution) +resultat = resultat.T +inputs = inputs.T +ani = animateur(resultat, inputs, t0=0.0, tf=tf, schritte=num_nodes) +plt.show()