Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
35
Task/Gamma-function/Tcl/gamma-function.tcl
Normal file
35
Task/Gamma-function/Tcl/gamma-function.tcl
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
package require math
|
||||
package require math::calculus
|
||||
|
||||
# gamma(1) and gamma(1.5)
|
||||
|
||||
set f 1.0
|
||||
set f2 [expr {sqrt(acos(-1.))/2.}]
|
||||
|
||||
for {set x 1.0} {$x <= 10.0} {set x [expr {$x + 0.5}]} {
|
||||
|
||||
# method 1 - numerical integration, Romberg's method, special
|
||||
# case for an improper integral
|
||||
|
||||
set g1 [math::calculus::romberg \
|
||||
[list apply {{x t} {expr {$t ** ($x-1) * exp(-$t)}}} $x] \
|
||||
0 1 -relerror 1e-8]
|
||||
set g2 [math::calculus::romberg_infinity \
|
||||
[list apply {{x t} {expr {$t ** ($x-1) * exp(-$t)}}} $x] \
|
||||
1 Inf -relerror 1e-8]
|
||||
set gamma [expr {[lindex $g1 0] + [lindex $g2 0]}]
|
||||
|
||||
# method 2 - library function
|
||||
|
||||
set libgamma [expr {exp([math::ln_Gamma $x])}]
|
||||
|
||||
# method 3 - special forms for integer and half-integer arguments
|
||||
|
||||
if {$x == entier($x)} {
|
||||
puts [format {%4.1f %13.6f %13.6f %13.6f} $x $gamma $libgamma $f]
|
||||
set f [expr $f * $x]
|
||||
} else {
|
||||
puts [format {%4.1f %13.6f %13.6f %13.6f} $x $gamma $libgamma $f2]
|
||||
set f2 [expr $f2 * $x]
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue