Lecture 2: Logic Gates & Fibonacci Numbers¶
Date: 09/05/2017, Tuesday
In [1]:
format compact
Logic gates¶
nand gate¶
In [2]:
nand = @(a,b) ~(a&b)
nand =
function_handle with value:
@(a,b)~(a&b)
In [3]:
nand(1,1) % test if it works
ans =
logical
0
print truth table¶
In [4]:
help boolean_print_TT_fn % boolean_print_TT_fn.m is available on canvas
boolean_print_TT_fn.m
a function to print the boolean truth table for a given
supplied function 'func'
INPUT
func: the supplied function (e.g. OR, NAND, XOR)
input_num: number of inputs
In [5]:
boolean_print_TT_fn(nand,2)
_______
a|b|out
0|0| 1
0|1| 1
1|0| 1
1|1| 0
build “not” gate from “nand” gate¶
In [6]:
my_not = @(a) nand(a,a) % "not" is a built-in function so we use my_not to avoid conflicts
my_not =
function_handle with value:
@(a)nand(a,a)
In [7]:
boolean_print_TT_fn(my_not,1)
_____
a|out
0|1
1|0
Why nand(a,a) means not:
- and(a,a) = a, no matter a is 0 or 1
- nand(a,a) = not and(a,a) = not a
Fibonacci Sequence¶
generate Fibonacci sequences¶
In [8]:
%%file fib_fn.m
function F = fib_fn(n)
F = zeros(1,n);
F(1)=1;
F(2)=1;
for j=3:n
F(j)=F(j-1)+F(j-2);
end
end
Created file '/Users/zhuangjw/Research/Computing/personal_web/AM111/docs/fib_fn.m'.
In [9]:
fib_fn(10)
ans =
1 1 2 3 5 8 13 21 34 55
Compare with the built-in function fibonacci( )
In [10]:
fibonacci(1:10)
ans =
1 1 2 3 5 8 13 21 34 55
golden ratio¶
In [11]:
golden_ratio = (sqrt(5)+1)/2 % true value
golden_ratio =
1.6180
\(F_n/F_{n-1}\) Converges to the golden ratio
In [12]:
F = fib_fn(10);
F_ratio = F(2:end)./F(1:end-1)
F_ratio =
Columns 1 through 7
1.0000 2.0000 1.5000 1.6667 1.6000 1.6250 1.6154
Columns 8 through 9
1.6190 1.6176
In [13]:
%plot --size 400,300
hold on
plot(F_ratio,'-o')
plot([0,10],[golden_ratio,golden_ratio])
