HIV/AIDS Example


In [2]:
import numpy as np

In [3]:
A = np.array([[0.9, 0.07, 0.02, 0.01],
             [0, 0.03, 0.05, 0.02],
             [0, 0, 0.85, 0.15],
             [0, 0, 0, 1.0]])
x = np.array([[0.85, 0.1, 0.05, 0]])

A.T @ x.T


Out[3]:
array([[ 0.765 ],
       [ 0.0625],
       [ 0.0645],
       [ 0.018 ]])

Matrix-Matrix Products


In [4]:
P = np.array([[6, 5, 3, 1],
              [3, 6, 2, 2,],
              [3, 4, 3, 1]])
S = np.array([[1.5 , 1.0],
              [2.0, 2.5],
              [5.0, 4.5],
              [16.0, 17.0]])

P @ S


Out[4]:
array([[ 50. ,  49. ],
       [ 58.5,  61. ],
       [ 43.5,  43.5]])

In [5]:
# Floating Point Arithmetic

In [6]:
def f(x):
    if x <= 1/2:
        return 2 * x
    if x > 1/2:
        return 2 * x - 1

In [7]:
x = 1/10
for i in range(80):
    print(x)
    x = f(x)


0.1
0.2
0.4
0.8
0.6000000000000001
0.20000000000000018
0.40000000000000036
0.8000000000000007
0.6000000000000014
0.20000000000000284
0.4000000000000057
0.8000000000000114
0.6000000000000227
0.20000000000004547
0.40000000000009095
0.8000000000001819
0.6000000000003638
0.2000000000007276
0.4000000000014552
0.8000000000029104
0.6000000000058208
0.20000000001164153
0.40000000002328306
0.8000000000465661
0.6000000000931323
0.20000000018626451
0.40000000037252903
0.8000000007450581
0.6000000014901161
0.20000000298023224
0.4000000059604645
0.800000011920929
0.6000000238418579
0.20000004768371582
0.40000009536743164
0.8000001907348633
0.6000003814697266
0.20000076293945312
0.40000152587890625
0.8000030517578125
0.600006103515625
0.20001220703125
0.4000244140625
0.800048828125
0.60009765625
0.2001953125
0.400390625
0.80078125
0.6015625
0.203125
0.40625
0.8125
0.625
0.25
0.5
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0

In [8]:
import scipy.linalg as la

A = np.array([[1., 1000], [0, 1]])
B = np.array([[1., 1000], [0.001, 1]])

print("A", A)

print("B", B)


A [[    1.  1000.]
 [    0.     1.]]
B [[  1.00000000e+00   1.00000000e+03]
 [  1.00000000e-03   1.00000000e+00]]

In [9]:
np.set_printoptions(suppress=True, precision=4)

In [10]:
wA, vrA = la.eig(A)
wB, vrB = la.eig(B)

wA, wB


Out[10]:
(array([ 1.+0.j,  1.+0.j]), array([ 2.+0.j,  0.+0.j]))

In [ ]: