Diophantine ekvationer har förtrollat matematiker sedan Diofantos av Alexandria först föreslog att lösa en ekvation av formen ax + bx = c . I denna form kan ekvationen känd som en linjär Diofantisk ekvation . Denna ekvation har bara en lösning när c är den största gemensamma delaren av a och b eller när c är en multipel av den största gemensamma nämnaren av a och b . Annars finns det inga lösningar för denna ekvation . Utvecklats av professor Jim Carlson vid University of Illinois at Urbana /Champagne , visar det korta programmet nedan kraften i Python för matematiska uppgifter . Saker du behöver
Python 2.6 eller högre
Visa fler instruktioner
1
Öppna en terminal session och åberopa Pythontolk med följande kommando :
Min - iMac : ~ me $ python - v
Detta kommer att returnera en lång lista på alla python- moduler som finns tillgängliga i din installation och i slutet det kommer att berätta vilken version av python är installerad på din dator .
2
Skapa en ny definition av en funktion i Python genom att skriva in följande kod i Python -prompten . Efter professor Carlson , kommer vi att kalla detta " isolve " :
>>> def isolve ( a , b , c ) :
kolon kommer att berätta Python inte omedelbart tolka när du trycker på retur -tangenten så att du har mer utrymme för ditt program .
3
Skapa två variabler , Q och R , som kommer att stå för kvoten och resten ekvationen variablerna a och b , och sedan anropa Python funktion divmod , som kommer att hitta och dela två tal och visa sin divisor och resten , om någon . Koden ska se ut så här :
... q , r = divmod ( a , b )
4
Skapa en if-sats som snabbt kommer ut en lösning till ekvationen när deras är ingen rest . Skriv följande :
... om r == 0 :
... tillbaka ( [ 0 , c /b ] )
5
Skapa ett annat uttalande för det fall där det finns en rest :
... annanstans :
... sol = isolve (b, r, c ) katalog
... u = sol [ 0 ]
... v = sol [ 1 ]
... tillbaka ( [ v , u - q * v ] ) katalog
Detta kommer att sätta B och R i divmod operatören , tillbaka sina värden som variablerna u och v och sedan returnera dem som lösningen set [ v , och produkten av q och v subtraheras från u ] . Den fullständiga koden för det här programmet följer :
>>> def isolve ( a , b , c ) :
... q, r = divmod ( a, b ) katalog
... om r == 0 :
... tillbaka ( [ 0 , c /b ] ) katalog
... annanstans :
... sol = isolve (b, r, c ) katalog
... u = sol [ 0 ]
... v = sol [ 1 ]
... tillbaka ( [ v , u - q * v ] ) katalog
uppmärksam på indraget efter om och else uttalanden . Python kommer inte köra denna kod utan ordentlig fördjupning .
6
Tryck på knappen RETURN en gång till för att få tillbaka Python -prompten . Ange isolve funktion och tre värden för z , y och c och tryck på " Retur ". Du bör se det här :
>>> isolve ( 5 , 17 , 103 ) katalog
[ 721 , -206 ]