the rootmeansquare speed is essential in measuring the average speed of particles contained in a gas defined as vrms 3rtm in kinetic molecular theory gasified particles are in a condition of constant random motion each particle moves at a completely different pace perpetually clashing and changing directions consistently velocity is used to describe the movement of gas particles thereby taking into account both speed and direction although the velocity of gaseous particles is constantly changing the distribution of velocities does not change we cannot gauge the velocity of every individual particle thus we frequently reason in terms of the particles average behavior particles moving in opposite directions have velocities of opposite signs since gas particles are in random motion it s plausible that there ll be about as several moving in one direction as within the other way which means that the average velocity for a collection of gas particles equals zero as this value is unhelpful the average of velocities can be determined using an alternative method rmsspeedofmolecule100 2 35 315279554323226 rmsspeedofmolecule273 12 23 821458421977443 run doctest example rms_speed_of_molecule 100 2 35 315279554323226 rms_speed_of_molecule 273 12 23 821458421977443 run doctest example
UNIVERSAL_GAS_CONSTANT = 8.3144598


def rms_speed_of_molecule(temperature: float, molar_mass: float) -> float:
    
    if temperature < 0:
        raise Exception("Temperature cannot be less than 0 K")
    if molar_mass <= 0:
        raise Exception("Molar mass cannot be less than or equal to 0 kg/mol")
    else:
        return (3 * UNIVERSAL_GAS_CONSTANT * temperature / molar_mass) ** 0.5


if __name__ == "__main__":
    import doctest

    
    doctest.testmod()

    
    temperature = 300
    molar_mass = 28
    vrms = rms_speed_of_molecule(temperature, molar_mass)
    print(f"Vrms of Nitrogen gas at 300 K is {vrms} m/s")