1: #!perl -w
2:
3: # BinomialExpansion.pl
4:
5: # usage perl BinomialExpansion.pl n, where n is an integer > 0
6:
7: # ** the memory goes crazy after the 170th power
8: # the expansion of (x+y)^170 peaks at 9.14484184513157e+049 * x^85 * y^85
9: # so you can imagine what happens if you put int n>170
10:
11: my $n = ($_=shift) > 0 ? int $_ :
12: die "'usage perl BinomialExpansion.pl 9, where n > 0'";
13:
14: print _titled_hr(' Binomial Expansion For (x+y)^',$n,' ');
15:
16: for my $j (0 .. $n)
17: {
18: my $coefficient = nCr($n,$j);
19: my $nj=$n-$j;
20: print $coefficient;
21: print $_ = ($nj!=0)?( ($nj>1)?(' * x^'.$nj):(' * x') ):'';
22: print $_ = ($j!=0)?( ($j==1)?(' * y'):(' * y^'.$j) ):'';
23: print $_ = ($j!=$n)?(" +\n"):("\n");
24: }
25:
26: print ' 'x 25,' = (x + y)^',$n, "\n"x 3;
27:
28: # returns n!/r!(n-r)!
29: sub nCr
30: {
31: my $n=shift;
32: my $r=shift;
33:
34: return int nFactorial($n) / int nFactorial($r) * int nFactorial($n-$r);
35: }
36:
37: # like the name says, n!
38: sub nFactorial
39: {
40: my $n=shift;
41: my $product = 1;
42:
43: while($n>0)
44: {
45: $product *= $n--;
46: }
47:
48: return $product;
49: }
50:
51: # neat little titled hr, that does a < 80 chars since int rounds down
52: # i really, really, like it
53: sub _titled_hr
54: {
55: my $string = join('', @_);
56: my $oy = int (80 -(length $string) )/ 2;
57: return "\n","-" x $oy, $string, "-" x $oy,"\n";
58: }
59:
60: __END__
61: # some random things i say
62: #1
63: "--. .-. . . - --.. -.-- .----. .- .-.. .-.."
64:
65: #2
66: "...- .-. --- --- -- --..-- ...- .-. --- --- -- .----."
67:
68: #3
69: --- ..-. .- .-.. .-.. - .... . - .... .. -. --. ... .. .-.. --- ... -
70: --..--
71: .. -- .. ... ... -- -.-- -- .. -. -.. - .... . -- --- ... - .-.-.-
72: -....- -....- --- --.. --.. .. . --- ... -... --- ..- .-. -. .
73:
74: # a lil sample from my machine
75:
76: F:\>perl BinomialExpansion.pl 9
77: 1 * x^9 +
78: 9 * x^8 * y +
79: 36 * x^7 * y^2 +
80: 84 * x^6 * y^3 +
81: 126 * x^5 * y^4 +
82: 126 * x^4 * y^5 +
83: 84 * x^3 * y^6 +
84: 36 * x^2 * y^7 +
85: 9 * x * y^8 +
86: 1 * * y^9
87: = (x + y)^9
88: F:\>
89:
90: # Notice a pattern? Fleet attack!
91: # >
92: # >
93: # >
94: # >
95: # >
96: # >
97: # >
98: # >
99: # >
100: # >
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Sierpinskij (Re: Binomial Expansion)
by larsen (Parson) on Mar 29, 2001 at 13:48 UTC | |
by tye (Sage) on Mar 29, 2001 at 21:13 UTC | |
by rpc (Monk) on Mar 29, 2001 at 23:10 UTC | |
by oha (Friar) on Dec 19, 2003 at 20:05 UTC | |
|
Re: Binomial Expansion
by ariels (Curate) on Mar 29, 2001 at 14:41 UTC | |
by japhy (Canon) on Mar 29, 2001 at 21:39 UTC | |
by crazyinsomniac (Prior) on Mar 31, 2001 at 04:41 UTC | |
by tye (Sage) on Mar 31, 2001 at 12:26 UTC | |
by tilly (Archbishop) on Mar 31, 2001 at 23:32 UTC | |
by tilly (Archbishop) on Apr 01, 2001 at 05:26 UTC | |
by tye (Sage) on Apr 01, 2001 at 08:09 UTC | |
| |
by ariels (Curate) on Apr 11, 2001 at 10:55 UTC |