Lesson 30: Fibonacci numbers restart; Fourier series againLast time I said I didn't know a nice formula for these integrals, which were coefficients in the Fourier series of LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkmbWZyYWNHRiQ2KC1JI21uR0YkNiRRIjFGJy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRictRiM2KC1GLzYkUSIyRidGMi1JI21vR0YkNi1RIitGJ0YyLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZALyUpc3RyZXRjaHlHRkAvJSpzeW1tZXRyaWNHRkAvJShsYXJnZW9wR0ZALyUubW92YWJsZWxpbWl0c0dGQC8lJ2FjY2VudEdGQC8lJ2xzcGFjZUdRLDAuMjIyMjIyMmVtRicvJSdyc3BhY2VHRk8tSSNtaUdGJDYlUSRjb3NGJy8lJ2l0YWxpY0dGQEYyLUkobWZlbmNlZEdGJDYkLUYjNiUtRlM2JVEieEYnL0ZXUSV0cnVlRicvRjNRJ2l0YWxpY0YnRmpuRlxvRjJGam5GXG8vJS5saW5ldGhpY2tuZXNzR0YxLyUrZGVub21hbGlnbkdRJ2NlbnRlckYnLyUpbnVtYWxpZ25HRmJvLyUpYmV2ZWxsZWRHRkAtRjs2LVEiLkYnRjJGPkZBRkNGRUZHRklGSy9GTlEmMC4wZW1GJy9GUUZbcEYyJ:= 1/Pi * int(cos(k*t)/(2+cos(t)),t=0..2*Pi) assuming k::posint;Well, now I do (and I should have remembered it, because it's a standard Math 300 calculation). The answer should be LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkmbWZyYWNHRiQ2KC1GIzYmLUkjbW5HRiQ2JFEiMkYnLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy1JI21vR0YkNi1RIn5GJ0Y0LyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHRkwtSSVtc3VwR0YkNiUtSShtZmVuY2VkR0YkNiQtRiM2Ji1JJm1zcXJ0R0YkNiMtRjE2JFEiM0YnRjQtRjg2LVEoJm1pbnVzO0YnRjRGO0Y+RkBGQkZERkZGSC9GS1EsMC4yMjIyMjIyZW1GJy9GTkZbb0YwRjRGNC1GIzYlLUkjbWlHRiQ2JVEia0YnLyUnaXRhbGljR1EldHJ1ZUYnL0Y1USdpdGFsaWNGJ0Zjb0Zmby8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRidGNC1GIzYmRlctRmBvNiNRIUYnRmNvRmZvLyUubGluZXRoaWNrbmVzc0dRIjFGJy8lK2Rlbm9tYWxpZ25HUSdjZW50ZXJGJy8lKW51bWFsaWduR0ZlcC8lKWJldmVsbGVkR0Y9RjdGNA==for any positive integer LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= (that's why I assumed k is a posint, short for positive integer, rather than just integer: that formula wouldn't work for negative k).seq(simplify(J-2/sqrt(3)*(sqrt(3)-2)^k),k=0..10);It's interesting that Maple can do the calculation for any particular LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic= but can't do it in general.Efficient matrix powersLast time we saw a way to calculate Fibonacci numbers using linear algebra.M := <<0,1>|<1,1>>;
fib3:= proc(n) option remember;
(M^(n-1))[2,2]
end proc;Doing it this way hides the details of the calculation in the inner workings of Maple's linear algebra machinery (which may be a good thing, because that machinery is usually quite efficient and fast). Still, it's worthwhile seeing what we can learn from thinking about how these things could be done.What's an efficient way to calculate the LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy9GM1Enbm9ybWFsRic='th power of a matrix?
The most straightforward way is to multiply that many copies of the matrix together, but that's far from efficient: to get LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUklbXN1cEdGJDYlLUkjbWlHRiQ2JVEiTUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYlLUYvNiVRIm5GJ0YyRjVGMkY1LyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJy9GNlEnbm9ybWFsRic= you would need LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RKCZtaW51cztGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUnbHNwYWNlR1EsMC4yMjIyMjIyZW1GJy8lJ3JzcGFjZUdGTC1JI21uR0YkNiRRIjFGJ0Y5Rjk= matrix multiplications. A better idea is called "repeated squaring". Thus to calculate LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2JC1JJW1zdXBHRiQ2JS1GLDYlUSJNRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW5HRiQ2JFEjNjRGJy9GO1Enbm9ybWFsRicvJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnRkFGK0ZB, we would first calculate LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2JC1JJW1zdXBHRiQ2JS1GLDYlUSJNRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW5HRiQ2JFEiMkYnL0Y7USdub3JtYWxGJy8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRidGQUYrRkE=, then square that to get LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2JC1JJW1zdXBHRiQ2JS1GLDYlUSJNRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW5HRiQ2JFEiNEYnL0Y7USdub3JtYWxGJy8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRidGQUYrRkE=, then square that to get LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2JC1JJW1zdXBHRiQ2JS1GLDYlUSJNRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW5HRiQ2JFEiOEYnL0Y7USdub3JtYWxGJy8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRidGQUYrRkE=, then LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2JC1JJW1zdXBHRiQ2JS1GLDYlUSJNRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW5HRiQ2JFEjMTZGJy9GO1Enbm9ybWFsRicvJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnRkFGK0ZB, LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2JC1JJW1zdXBHRiQ2JS1GLDYlUSJNRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW5HRiQ2JFEjMzJGJy9GO1Enbm9ybWFsRicvJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnRkFGK0ZB, and LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2JC1JJW1zdXBHRiQ2JS1GLDYlUSJNRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW5HRiQ2JFEjNjRGJy9GO1Enbm9ybWFsRicvJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnRkFGK0ZB. It only required 6 squarings. To calculate LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2JC1JJW1zdXBHRiQ2JS1GLDYlUSJNRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW5HRiQ2JFEkMTk5RicvRjtRJ25vcm1hbEYnLyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJ0ZBRitGQQ==, we write 199 as a sum of powers of 2 (this is the base-2 representation of 199): 199 = 1 + 2 + 4 + 64 + 128 so LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2KEYrLUYjNiQtSSVtc3VwR0YkNiUtRiw2JVEiTUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21uR0YkNiRRJDE5OUYnL0Y9USdub3JtYWxGJy8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRidGQy1JI21vR0YkNi1RIj1GJ0ZDLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZOLyUpc3RyZXRjaHlHRk4vJSpzeW1tZXRyaWNHRk4vJShsYXJnZW9wR0ZOLyUubW92YWJsZWxpbWl0c0dGTi8lJ2FjY2VudEdGTi8lJ2xzcGFjZUdRLDAuMjc3Nzc3OGVtRicvJSdyc3BhY2VHRmduLUYjNixGNi1GSTYtUTEmSW52aXNpYmxlVGltZXM7RidGQ0ZMRk9GUUZTRlVGV0ZZL0ZmblEmMC4wZW1GJy9GaW5GYG8tRiM2JC1GNDYlRjYtRkA2JFEiMkYnRkNGRUZDRlxvLUY0NiVGNi1GQDYkUSI0RidGQ0ZFRlxvLUY0NiVGNi1GQDYkUSM2NEYnRkNGRUZcby1GNDYlRjYtRkA2JFEkMTI4RidGQ0ZFRkNGK0ZDRitGQw==. To calculate LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUklbXN1cEdGJDYlLUkjbWlHRiQ2JVEiTUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYlLUYvNiVRIm5GJ0YyRjVGMkY1LyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJy9GNlEnbm9ybWFsRic= this way needs at most LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbW5HRiQ2JFEiMkYnLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy1JI21vR0YkNi1RIn5GJ0YvLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y4LyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHRkctSSVtc3ViR0YkNiUtSSNtaUdGJDYlUSRsb2dGJy8lJ2l0YWxpY0dGOEYvLUYjNiVGKy9GUlEldHJ1ZUYnL0YwUSdpdGFsaWNGJy8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnLUkobWZlbmNlZEdGJDYkLUYjNiQtRk42JVEibkYnRlVGV0YvRi9GLw== matrix multiplications.
A convenient way to program it is the following:mpow:= proc(n)
option remember;
if type(n,even)
then mpow(n/2)^2
elif type(n,odd)
then mpow((n-1)/2)^2 . M
end if;
end proc:
mpow(0) := <<1,0>|<0,1>>:
mpow(1) := M:mpow(20) = M^20;mpow(n);(the symbolic variable n is neither even nor odd, so nothing is returned).fib4:= n -> mpow(n-1)[2,2];fib4(300); fib4(300)-fib3(300);ti:= time():
fib3(10^7):
time()-ti;
fib3(10^7);ti:= time():
fib4(10^7):
time()-ti;length(fib4(10^7));Fibonacci identitiesSo far our Fibonacci functions work only for positive integers. I'd like something that works also for symbolic expressions, e.g. I'd like to be able to get LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEiRkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYmLUYvNiNRIUYnLUYjNidGOi1GIzYmLUkjbW5HRiQ2JFEiMkYnL0Y2USdub3JtYWxGJy1JI21vR0YkNi1RMSZJbnZpc2libGVUaW1lcztGJ0ZFLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZNLyUpc3RyZXRjaHlHRk0vJSpzeW1tZXRyaWNHRk0vJShsYXJnZW9wR0ZNLyUubW92YWJsZWxpbWl0c0dGTS8lJ2FjY2VudEdGTS8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHRmZuLUYvNiVRIm5GJ0YyRjVGRS1GSDYtUSIrRidGRUZLRk5GUEZSRlRGVkZYL0ZlblEsMC4yMjIyMjIyZW1GJy9GaG5GYG8tRkI2JFEiM0YnRkVGRUY6RkUvJS9zdWJzY3JpcHRzaGlmdEdRIjBGJ0ZF as an expression in terms of LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEiRkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUYvNiVRIm5GJ0YyRjUvRjZRJ25vcm1hbEYnLyUvc3Vic2NyaXB0c2hpZnRHUSIwRidGPQ== and LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEiRkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYmLUYvNiNRIUYnLUYjNiYtRi82JVEibkYnRjJGNS1JI21vR0YkNi1RKCZtaW51cztGJy9GNlEnbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkovJSlzdHJldGNoeUdGSi8lKnN5bW1ldHJpY0dGSi8lKGxhcmdlb3BHRkovJS5tb3ZhYmxlbGltaXRzR0ZKLyUnYWNjZW50R0ZKLyUnbHNwYWNlR1EsMC4yMjIyMjIyZW1GJy8lJ3JzcGFjZUdGWS1JI21uR0YkNiRRIjFGJ0ZGRkZGOkZGLyUvc3Vic2NyaXB0c2hpZnRHUSIwRidGRg==. We can get this by a change in mpow. Note that LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2Ji1JJW1zdXBHRiQ2JS1GLDYlUSJNRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUYsNiVRIm5GJ0Y3RjovJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnLUkjbW9HRiQ2LVEiPUYnL0Y7USdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGSy8lKXN0cmV0Y2h5R0ZLLyUqc3ltbWV0cmljR0ZLLyUobGFyZ2VvcEdGSy8lLm1vdmFibGVsaW1pdHNHRksvJSdhY2NlbnRHRksvJSdsc3BhY2VHUSwwLjI3Nzc3NzhlbUYnLyUncnNwYWNlR0ZaLUkobWZlbmNlZEdGJDYmLUYjNiZGKy1JJ210YWJsZUdGJDY2LUkkbXRyR0YkNictSSRtdGRHRiQ2KC1JJW1zdWJHRiQ2JS1GLDYlUSJGRidGN0Y6LUYjNiZGKy1GIzYmRj0tRkQ2LVEoJm1pbnVzO0YnRkdGSUZMRk5GUEZSRlRGVi9GWVEsMC4yMjIyMjIyZW1GJy9GZm5GY3AtSSNtbkdGJDYkUSIxRidGR0ZHRitGRy8lL3N1YnNjcmlwdHNoaWZ0R0ZCLyUpcm93YWxpZ25HRi4vJSxjb2x1bW5hbGlnbkdGLi8lK2dyb3VwYWxpZ25HRi4vJShyb3dzcGFuR0ZocC8lK2NvbHVtbnNwYW5HRmhwLUZjbzYoLUZmbzYlRmhvLUYjNiRGPUZHRmlwRltxRl1xRl9xRmFxRmNxRltxRl1xRl9xLUZgbzYnRmVxLUZjbzYoLUZmbzYlRmhvLUYjNiZGKy1GIzYmRj0tRkQ2LVEiK0YnRkdGSUZMRk5GUEZSRlRGVkZicEZkcEZlcEZHRitGR0ZpcEZbcUZdcUZfcUZhcUZjcUZbcUZdcUZfcS8lJmFsaWduR1ElYXhpc0YnL0ZccVEpYmFzZWxpbmVGJy9GXnFRJ2NlbnRlckYnL0ZgcVEnfGZybGVmdHxockYnLyUvYWxpZ25tZW50c2NvcGVHRjkvJSxjb2x1bW53aWR0aEdRJWF1dG9GJy8lJndpZHRoR0Zlcy8lK3Jvd3NwYWNpbmdHUSYxLjBleEYnLyUuY29sdW1uc3BhY2luZ0dRJjAuOGVtRicvJSlyb3dsaW5lc0dRJW5vbmVGJy8lLGNvbHVtbmxpbmVzR0ZgdC8lJmZyYW1lR0ZgdC8lLWZyYW1lc3BhY2luZ0dRLDAuNGVtfjAuNWV4RicvJSplcXVhbHJvd3NHRksvJS1lcXVhbGNvbHVtbnNHRksvJS1kaXNwbGF5c3R5bGVHRksvJSVzaWRlR1EmcmlnaHRGJy8lMG1pbmxhYmVsc3BhY2luZ0dGXXRGK0ZHRkcvJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRidGR0YrRkc=M^4;mpow := proc(n)
option remember;
if type(n, posint)
then if type(n,even)
then mpow(n/2)^2
else M . mpow((n-1)/2)^2
end if
elif type(n, negint)
then mpow(-n)^(-1)
elif type(n,`+`)
then mpow(op(1,n)) . mpow(n-op(1,n))
elif type(n,`*`)
then mpow(n/op(1,n))^op(1,n)
else <<F[n-1],F[n]>|<F[n],F[n]+F[n-1]>>
end if
end proc:
mpow(0) := <<1,0>|<0,1>>:
mpow(1) := M: To describe what this does in words: If n is a positive integer, type(n, posint) is true (posint means "positive integer") and mpow will do what the previous version did. If n is a negative integer, type(n, negint) is true (negint means "negative integer"), and mpow will use LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2Ji1JJW1zdXBHRiQ2JS1GLDYlUSJNRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUYjNiUtSSNtb0dGJDYtUSomdW1pbnVzMDtGJy9GO1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkcvJSlzdHJldGNoeUdGRy8lKnN5bW1ldHJpY0dGRy8lKGxhcmdlb3BHRkcvJS5tb3ZhYmxlbGltaXRzR0ZHLyUnYWNjZW50R0ZHLyUnbHNwYWNlR1EsMC4yMjIyMjIyZW1GJy8lJ3JzcGFjZUdGVi1GLDYlUSJuRidGN0Y6RkMvJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnLUZANi1RIj1GJ0ZDRkVGSEZKRkxGTkZQRlIvRlVRLDAuMjc3Nzc3OGVtRicvRlhGXW8tRjI2JS1JKG1mZW5jZWRHRiQ2JC1GMjYlRjRGWUZmbkZDLUYjNiVGPy1JI21uR0YkNiRRIjFGJ0ZDRkNGZm5GQ0YrRkM=. If n is a sum of terms, say LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2Ji1GLDYlUSJhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2LVEiK0YnL0Y4USdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGQi8lKXN0cmV0Y2h5R0ZCLyUqc3ltbWV0cmljR0ZCLyUobGFyZ2VvcEdGQi8lLm1vdmFibGVsaW1pdHNHRkIvJSdhY2NlbnRHRkIvJSdsc3BhY2VHUSwwLjIyMjIyMjJlbUYnLyUncnNwYWNlR0ZRLUYsNiVRImJGJ0Y0RjdGPkYrRj4=, op(1,n) will be the first one and n - op(1,n) will be the rest. Maple will use LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2Jy1JJW1zdXBHRiQ2JS1GLDYlUSJNRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUYjNiYtRiw2JVEiYUYnRjdGOi1JI21vR0YkNi1RIitGJy9GO1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkovJSlzdHJldGNoeUdGSi8lKnN5bW1ldHJpY0dGSi8lKGxhcmdlb3BHRkovJS5tb3ZhYmxlbGltaXRzR0ZKLyUnYWNjZW50R0ZKLyUnbHNwYWNlR1EsMC4yMjIyMjIyZW1GJy8lJ3JzcGFjZUdGWS1GLDYlUSJiRidGN0Y6RkYvJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnLUZDNi1RIj1GJ0ZGRkhGS0ZNRk9GUUZTRlUvRlhRLDAuMjc3Nzc3OGVtRicvRmVuRmBvLUYjNiYtRjI2JUY0Rj9GaW4tRkM2LVExJkludmlzaWJsZVRpbWVzO0YnRkZGSEZLRk1GT0ZRRlNGVS9GWFEmMC4wZW1GJy9GZW5Gam8tRjI2JUY0RmZuRmluRkZGK0ZGRitGRg==. If n is a product of terms, say LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2Ji1GLDYlUSJhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2LVExJkludmlzaWJsZVRpbWVzO0YnL0Y4USdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGQi8lKXN0cmV0Y2h5R0ZCLyUqc3ltbWV0cmljR0ZCLyUobGFyZ2VvcEdGQi8lLm1vdmFibGVsaW1pdHNHRkIvJSdhY2NlbnRHRkIvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZRLUYsNiVRImJGJ0Y0RjdGPkYrRj4=, op(1,n) will be the first one and n/op(1,n) will be the rest. Maple will use LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2Ji1JJW1zdXBHRiQ2JS1GLDYlUSJNRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUYjNiYtRiw2JVEiYUYnRjdGOi1JI21vR0YkNi1RMSZJbnZpc2libGVUaW1lcztGJy9GO1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkovJSlzdHJldGNoeUdGSi8lKnN5bW1ldHJpY0dGSi8lKGxhcmdlb3BHRkovJS5tb3ZhYmxlbGltaXRzR0ZKLyUnYWNjZW50R0ZKLyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdGWS1GLDYlUSJiRidGN0Y6RkYvJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnLUZDNi1RIj1GJ0ZGRkhGS0ZNRk9GUUZTRlUvRlhRLDAuMjc3Nzc3OGVtRicvRmVuRmBvLUYyNiUtSShtZmVuY2VkR0YkNiQtRjI2JUY0RmZuRmluRkZGP0ZpbkZGRitGRg==. I'll do it this way instead of LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUklbXN1cEdGJDYlLUkobWZlbmNlZEdGJDYkLUYsNiUtSSNtaUdGJDYlUSJNRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUY0NiVRImFGJ0Y3RjovJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnL0Y7USdub3JtYWxGJy1GNDYlUSJiRidGN0Y6RkBGQw== because integers usually come first in a product, and I'd rather doLUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2JC1JJW1zdXBHRiQ2JS1JKG1mZW5jZWRHRiQ2JC1GMjYlLUYsNiVRIk1GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictRiw2JVEibkYnRjxGPy8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRicvRkBRJ25vcm1hbEYnLUkjbW5HRiQ2JFEiMkYnRkhGRUZIRitGSA== than LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUklbXN1cEdGJDYlLUkobWZlbmNlZEdGJDYkLUYjNiQtRiw2JS1JI21pR0YkNiVRIk1GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtbkdGJDYkUSIyRicvRj1RJ25vcm1hbEYnLyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJ0ZDRkMtRjY2JVEibkYnRjlGPEZFRkM=. If n is none of those (e.g. if it is a name), Maple will return the matrix LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkobWZlbmNlZEdGJDYmLUYjNiYtSSNtaUdGJDYjUSFGJy1JJ210YWJsZUdGJDY2LUkkbXRyR0YkNictSSRtdGRHRiQ2KC1JJW1zdWJHRiQ2JS1GMTYlUSJGRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUYjNiZGMC1GIzYmLUYxNiVRIm5GJ0ZDRkYtSSNtb0dGJDYtUSgmbWludXM7RicvRkdRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZYLyUpc3RyZXRjaHlHRlgvJSpzeW1tZXRyaWNHRlgvJShsYXJnZW9wR0ZYLyUubW92YWJsZWxpbWl0c0dGWC8lJ2FjY2VudEdGWC8lJ2xzcGFjZUdRLDAuMjIyMjIyMmVtRicvJSdyc3BhY2VHRmFvLUkjbW5HRiQ2JFEiMUYnRlRGVEYwRlQvJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy8lKXJvd2FsaWduR0YzLyUsY29sdW1uYWxpZ25HRjMvJStncm91cGFsaWduR0YzLyUocm93c3BhbkdGZ28vJStjb2x1bW5zcGFuR0Znby1GOzYoLUY+NiVGQC1GIzYkRk1GVEZob0ZbcEZdcEZfcEZhcEZjcEZbcEZdcEZfcC1GODYnRmVwLUY7NigtRiM2JkY9LUZRNi1RIitGJ0ZURlZGWUZlbkZnbkZpbkZbb0Zdb0Zfb0Zib0ZncEZURltwRl1wRl9wRmFwRmNwRltwRl1wRl9wLyUmYWxpZ25HUSVheGlzRicvRlxwUSliYXNlbGluZUYnL0ZecFEnY2VudGVyRicvRmBwUSd8ZnJsZWZ0fGhyRicvJS9hbGlnbm1lbnRzY29wZUdGRS8lLGNvbHVtbndpZHRoR1ElYXV0b0YnLyUmd2lkdGhHRmFyLyUrcm93c3BhY2luZ0dRJjEuMGV4RicvJS5jb2x1bW5zcGFjaW5nR1EmMC44ZW1GJy8lKXJvd2xpbmVzR1Elbm9uZUYnLyUsY29sdW1ubGluZXNHRlxzLyUmZnJhbWVHRlxzLyUtZnJhbWVzcGFjaW5nR1EsMC40ZW1+MC41ZXhGJy8lKmVxdWFscm93c0dGWC8lLWVxdWFsY29sdW1uc0dGWC8lLWRpc3BsYXlzdHlsZUdGWC8lJXNpZGVHUSZyaWdodEYnLyUwbWlubGFiZWxzcGFjaW5nR0ZpckYwRlRGVC8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJ0ZU
.mpow(2*n);mpow(-1)= M^(-1);fib4(n);fib4(n+3);fib4(n+m);This could also be written as LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2Jy1JJW1zdWJHRiQ2JS1GLDYlUSJGRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUYjNiZGKy1GIzYmLUYsNiVRIm5GJ0Y3RjotSSNtb0dGJDYtUSIrRicvRjtRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZMLyUpc3RyZXRjaHlHRkwvJSpzeW1tZXRyaWNHRkwvJShsYXJnZW9wR0ZMLyUubW92YWJsZWxpbWl0c0dGTC8lJ2FjY2VudEdGTC8lJ2xzcGFjZUdRLDAuMjIyMjIyMmVtRicvJSdyc3BhY2VHRmVuLUYsNiVRIm1GJ0Y3RjpGSEYrRkgvJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy1GRTYtUSI9RidGSEZKRk1GT0ZRRlNGVUZXL0ZaUSwwLjI3Nzc3NzhlbUYnL0ZnbkZiby1GIzYoRistRiM2Ji1GMjYlRjQtRiM2JEZBRkhGW28tRkU2LVExJkludmlzaWJsZVRpbWVzO0YnRkhGSkZNRk9GUUZTRlVGVy9GWlEmMC4wZW1GJy9GZ25GYHAtRjI2JUY0LUYjNiZGKy1GIzYmRmhuLUZFNi1RKCZtaW51cztGJ0ZIRkpGTUZPRlFGU0ZVRldGWUZmbi1JI21uR0YkNiRRIjFGJ0ZIRkhGK0ZIRltvRkhGRC1GIzYmLUYyNiVGNC1GIzYmRistRiM2JkZBRkRGW3FGSEYrRkhGW29GXHAtRjI2JUY0LUYjNiRGaG5GSEZbb0ZIRitGSEYrRkhGK0ZI. It's an important and useful identity for Fibonacci numbers.Where does this come from?mpow(n), mpow(m), mpow(m+n);Saving and readingWe've made some complicated definitions that might be useful in other worksheets. You could use copy-and-paste from this worksheet, but there's a much more convenient way. We can save
the definitions (and values of whatever variables we want) to a text file, and then read this in to Maple whenever we want to use them. (I'm commenting out this command with # so it won't actually execute - see below)# save mpow, fib4, M, "fibonacci.txt";That will create a file named "fibonacci.txt" on your computer containing Maple statements defining mpow and fib4 and M. It will put it in the "current folder". You can see which one that is with the currentdir command.currentdir();You can also use currentdir to change to a different folder.currentdir("d:/m210");currentdir();If you prefer a different folder, you can put in the path together with the file name, e.g.# save mpow, fib4, M, "d:/m210/fibonacci.txt";Note that the forward slash "/" is used instead of the backslash "\134".Then in any Maple session where you want to use these definitions:read "d:/m210/fibonacci.txt";Unfortunately there's a bug that causes an incorrect definition of mpow to be saved.
The problem was in the line
else mpow((n-1)/2)^2 . Mwhere save left out the space between the 2 and the ., which caused Maple to interpret 2. as a number when read read that line.FF:= x -> x^2 . M;save FF, "d:/test/FF.txt";read "d:/test/FF.txt";I've put a corrected copy of "fibonacci.txt" (containing these definitions and a few more from the next couple of lessons) on our web page, so you can download it.Some Fibonacci puzzlesLUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2Jy1JJW1zdWJHRiQ2JS1GLDYlUSJGRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUYjNiZGKy1GIzYmLUYsNiVRIm5GJ0Y3RjotSSNtb0dGJDYtUSIrRicvRjtRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZMLyUpc3RyZXRjaHlHRkwvJSpzeW1tZXRyaWNHRkwvJShsYXJnZW9wR0ZMLyUubW92YWJsZWxpbWl0c0dGTC8lJ2FjY2VudEdGTC8lJ2xzcGFjZUdRLDAuMjIyMjIyMmVtRicvJSdyc3BhY2VHRmVuLUYsNiVRIm1GJ0Y3RjpGSEYrRkgvJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy1GRTYtUSI9RidGSEZKRk1GT0ZRRlNGVUZXL0ZaUSwwLjI3Nzc3NzhlbUYnL0ZnbkZiby1GIzYoRistRiM2Ji1GMjYlRjQtRiM2JEZBRkhGW28tRkU2LVExJkludmlzaWJsZVRpbWVzO0YnRkhGSkZNRk9GUUZTRlVGVy9GWlEmMC4wZW1GJy9GZ25GYHAtRjI2JUY0LUYjNiZGKy1GIzYmRmhuLUZFNi1RKCZtaW51cztGJ0ZIRkpGTUZPRlFGU0ZVRldGWUZmbi1JI21uR0YkNiRRIjFGJ0ZIRkhGK0ZIRltvRkhGRC1GIzYmLUYyNiVGNC1GIzYmRistRiM2JkZBRkRGW3FGSEYrRkhGW29GXHAtRjI2JUY0LUYjNiRGaG5GSEZbb0ZIRitGSEYrRkhGK0ZI was only one of many interesting identities involving the Fibonacci numbers.
There is a whole journal, the Fibonacci Quarterly, devoted to Fibonacci numbers and related recurrence relations. Near the back of each issue is a problem section, containing problems at various levels of difficulty contributed by readers. Many of the problems in the elementary section can be solved quite readily using mpow and fib. Here are a few examples.(1) Let LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEiSEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYkLUYvNiVRIm5GJ0YyRjUvRjZRJ25vcm1hbEYnLyUvc3Vic2NyaXB0c2hpZnRHUSIwRidGPQ== be any solution (in integers) of the recurrence LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2Jy1JJW1zdWJHRiQ2JS1GLDYlUSJIRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUYjNiQtRiw2JVEibkYnRjdGOi9GO1Enbm9ybWFsRicvJS9zdWJzY3JpcHRzaGlmdEdRIjBGJy1JI21vR0YkNi1RIj1GJ0ZCLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZNLyUpc3RyZXRjaHlHRk0vJSpzeW1tZXRyaWNHRk0vJShsYXJnZW9wR0ZNLyUubW92YWJsZWxpbWl0c0dGTS8lJ2FjY2VudEdGTS8lJ2xzcGFjZUdRLDAuMjc3Nzc3OGVtRicvJSdyc3BhY2VHRmZuLUYjNiYtRjI2JUY0LUYjNiZGKy1GIzYmRj8tRkg2LVEoJm1pbnVzO0YnRkJGS0ZORlBGUkZURlZGWC9GZW5RLDAuMjIyMjIyMmVtRicvRmhuRmVvLUkjbW5HRiQ2JFEiMUYnRkJGQkYrRkJGRC1GSDYtUSIrRidGQkZLRk5GUEZSRlRGVkZYRmRvRmZvLUYyNiVGNC1GIzYmRistRiM2JkY/RmFvLUZobzYkUSIyRidGQkZCRitGQkZERkJGK0ZCRitGQg==. Show that LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYtLUkjbW5HRiQ2JFEiN0YnLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy1JI21vR0YkNi1RMSZJbnZpc2libGVUaW1lcztGJ0YvLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y4LyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHRkctSSVtc3ViR0YkNiUtSSNtaUdGJDYlUSJIRicvJSdpdGFsaWNHUSV0cnVlRicvRjBRJ2l0YWxpY0YnLUYjNiQtRk42JVEibkYnRlFGVEYvLyUvc3Vic2NyaXB0c2hpZnRHUSIwRictRjM2LVEsJkNvbmdydWVudDtGJ0YvRjZGOUY7Rj1GP0ZBRkMvRkZRLDAuMjc3Nzc3OGVtRicvRklGXG8tRks2JUZNLUYjNiYtRk42I1EhRictRiM2JkZYLUYzNi1RIitGJ0YvRjZGOUY7Rj1GP0ZBRkMvRkZRLDAuMjIyMjIyMmVtRicvRklGW3AtRiw2JFEjMTVGJ0YvRi9GYm9GL0ZlbkZiby1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR1EmMC41ZW1GJy8lJmRlcHRoR0ZlcC8lKmxpbmVicmVha0dRJWF1dG9GJy1GMzYvUSRtb2RGJy8lJWJvbGRHRlMvRjBRJWJvbGRGJy8lK2ZvbnR3ZWlnaHRHRmRxRjZGOUY7Rj1GP0ZBRkNGRUZIRmBwLUYsNiRRIzEwRidGL0Yv.
This means that LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYmLUkjbWlHRiQ2I1EhRictRiM2Ji1JI21uR0YkNiRRIjdGJy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRictSSNtb0dGJDYtUTEmSW52aXNpYmxlVGltZXM7RidGNS8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPi8lKXN0cmV0Y2h5R0Y+LyUqc3ltbWV0cmljR0Y+LyUobGFyZ2VvcEdGPi8lLm1vdmFibGVsaW1pdHNHRj4vJSdhY2NlbnRHRj4vJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZNLUklbXN1YkdGJDYlLUYsNiVRIkhGJy8lJ2l0YWxpY0dRJXRydWVGJy9GNlEnaXRhbGljRictRiM2JC1GLDYlUSJuRidGVkZZRjUvJS9zdWJzY3JpcHRzaGlmdEdRIjBGJ0Y1RitGNQ== and LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEiSEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYmLUYvNiNRIUYnLUYjNiYtRi82JVEibkYnRjJGNS1JI21vR0YkNi1RIitGJy9GNlEnbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkovJSlzdHJldGNoeUdGSi8lKnN5bW1ldHJpY0dGSi8lKGxhcmdlb3BHRkovJS5tb3ZhYmxlbGltaXRzR0ZKLyUnYWNjZW50R0ZKLyUnbHNwYWNlR1EsMC4yMjIyMjIyZW1GJy8lJ3JzcGFjZUdGWS1JI21uR0YkNiRRIzE1RidGRkZGRjpGRi8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnRkY= have the same remainder when divided by 10, i.e. the same last digit in the decimal representation. Maple has a mod function, which returns the least nonnegative integer with the same remainder. For example:37 mod 5;-37 mod 5;It will also work on rational expressions or equations, in which case it operates on the coefficients.37 * x^23 + 42 mod 5;((23 * x+17)/(12*x+7) = 23) mod 5;23/(5*x+15) mod 5;15/5 mod 5;Maple commands introduced in this lesson:type(..., odd)type(..., even)type(..., posint)type(..., negint)saveread
modLUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2I1EhRic=LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2I1EhRic=