Hola:
Yo actualizaría una una variable (no necesariamente del formulario, que a la vez tuviese los 3 datos variables, o sea 3 números que podrían estar separados por comas...
<label for="r_1" >Normal</label>
<input type="radio" id="r_1" name="tipo" value="1,1,3" onclick="valores = this.value" />
<label for="r_2" >(PP + 2xEP + 2xEF) / 5</label>
<input type="radio" id="r_2" name="tipo" value="2,2,5" onclick="valores = this.value" /><label for="r_3" >(PP + EP + 2xEF) / 5</label>
<input type="radio" id="r_3" name="tipo" value="1,2,4" onclick="valores = this.value" />
Y la función de cálculo... y su botón:
<button type="button" onclick="calcular(this.form)">calcular</button>
function calcular(f) {
v = valores.split(",");
f.promedio.value = (parseInt(pp.value) + ((parseInt(v[0]) * parseInt(ep.value)) + ((parseInt(v[1]) * parseInt(ef.value))) / parseInt(v[2]);
}
Saludos