Updated 2012-11-06 07:25:02 by arjen

GS (20121104) A Pythagorean triple is a triple of positive integers (a,b,c) such that a right triangle exists with legs a,b and hypotenuse c satisfying : a**2 + b**2 = c**2

For instance the most obvious solution is (3,4,5).

A scatter plot of the legs (a,b) and their symetries show parabolic patterns.

``` # pytriplet.tcl
# Author:      Gerard Sookahet
# Date:        04 Nov 2012
# Description: Plot pythagorean triplet

package require Tk
bind all <Escape> {exit}

proc Pytriplet {H N} {
.c delete all
set pix [image create photo]
.c create image 0 0 -anchor nw -image \$pix

set HN [expr {double(\$H)/(2*\$N)}]
set mid [expr {\$H/2}]

for {set a 1} {\$a <= \$N} {incr a} {
for {set b \$a} {\$b <= \$N} {incr b} {
set c [expr {sqrt(\$a*\$a + \$b*\$b)}]
if {\$c == round(\$c)} then {
if [Prime \$a \$b] {
set ahn [expr {\$a*\$HN}]
set bhn [expr {\$b*\$HN}]
set mpahn [expr {int(\$mid + \$ahn)}]
set mpbhn [expr {int(\$mid + \$bhn)}]
set x(1) \$mpahn
set y(1) \$mpbhn
set x(2) [expr {int(\$mid - \$ahn)}]
set y(2) [expr {int(\$mid - \$bhn)}]
set x(3) \$mpahn
set y(3) [expr {int(\$mid - \$bhn)}]
set x(4) [expr {int(\$mid - \$ahn)}]
set y(4) \$mpbhn
foreach i {1 2 3 4} {\$pix put #00FF00 -to \$x(\$i) \$y(\$i)}
foreach i {1 2 3 4} {\$pix put #00FF00 -to \$y(\$i) \$x(\$i)}
}
}
}
}
}

proc Prime {a b} {
for {set i 2} {\$i <= \$a} {incr i} {
set ai [expr {double(\$a)/\$i}]
set bi [expr {double(\$b)/\$i}]
if {\$ai == round(\$ai) && \$bi == round(\$bi)} {return 0}
}
return 1
}

proc Main {H N} {
wm title . "Pythagorean"
pack [canvas .c -width \$H -height \$H -bg black]

set f1 [frame .f1 -relief sunken -borderwidth 2]
pack \$f1 -fill x
button \$f1.bu -text Run -width 12 -bg blue -fg white \
-command "Pytriplet \$H \$N"
button \$f1.bq -text Quit -width 5 -bg blue -fg white -command exit
eval pack [winfo children \$f1] -side left
}

Main 600 6000```

For more mathematical details, see : Manuel Benito and Juan L. Varona, Pythagorean triangles with legs less than n, Journal of Computational and Applied Mathematics 143 (2002) pp117–126 [1]

arjen - 2012-11-06 07:25:02

You know of course that there is an analytical (parametric) solution for them:
```    a = 2uv
b = u**2 - v**2
c = u**2 + v**2```

(u and v positive integers), u > v. For the well-known (a,b,c) = (3,4,5) solution, (u,v) = (2,1)).

Having such a solution does not lessen the magic of these triples, though.