<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def machado_et_al_2009_matrix(cvd_type, severity):
 """Retrieve a matrix for simulating anomalous color vision. :param cvd_type: One of "protanomaly", "deuteranomaly", or "tritanomaly". :param severity: A value between 0 and 100. :returns: A 3x3 CVD simulation matrix as computed by Machado et al (2009). These matrices were downloaded from: http://www.inf.ufrgs.br/~oliveira/pubs_files/CVD_Simulation/CVD_Simulation.html which is supplementary data from :cite:`Machado-CVD`. If severity is a multiple of 10, then simply returns the matrix from that webpage. For other severities, performs linear interpolation. """


    assert 0 <= severity <= 100

    fraction = severity % 10

    low = int(severity - fraction)
    high = low + 10
    assert low <= severity <= high

    low_matrix = np.asarray(MACHADO_ET_AL_MATRICES[cvd_type][low])
    if severity == 100:
        # Don't try interpolating between 100 and 110, there is no 110...
        return low_matrix
    high_matrix = np.asarray(MACHADO_ET_AL_MATRICES[cvd_type][high])
    return ((1 - fraction / 10.0) * low_matrix
            + fraction / 10.0 * high_matrix)