ClearAll["Global`*"]; 
expresion="";
v ="??";
tipo =1;
rv="";
 
genED:=Module[{caso}, 
siga = True;
caso =Random[]<0.05;
ladoderecho := Module[{op},
op =RandomInteger[{1, 3}];
{n1, n2, n3} = Table[RandomInteger[{-5, 5}], {i, 3}];
Which[
op==1, n1 x^2+n2 x+n3,
op==2, n1 E^x, 
op==3, n1 Cos[x]+n2 Sin[x]
]
];
While[siga,
{a, b, c}= Table[RandomInteger[{-9, 9}], {i, 3}];
If[caso, If[IntegerQ[(Sqrt[Abs[b^2-4a c]])]∧(b^2-4a c<0), siga = False], If[IntegerQ[(Sqrt[b^2-4a c])]∧(b^2-4a c≥0), siga = False]]

 ];
d= RandomInteger[{-9, 9}];

{a, b, c, d};
eaux=(a*x^2+b*x+c)*(x-d);
coef = CoefficientList[eaux,x];
If[tipo==0, miladoderecho =0, miladoderecho=ladoderecho];
Simplify[(∑_(i=1)^(Length[coef]))coef[[i]] D[y[x],{x, i-1}]==0+miladoderecho]
]
 

expresion=genED;
 
Manipulate[Switch[sel,1,expresion=""; tipo =0;Text["Homogénea"],2, expresion="";tipo=1;Text["No homogénea"]],
{{sel,1,""},{
1->"Homogénea.",
2->"No homogénea."},ControlType->RadioButtonBar,Appearance->"Vertical"},ControlPlacement->Left] 
Manipulate[
Dynamic@Button[ 
 
TraditionalForm[expresion]
, Appearance->"Frameless" ],


Dynamic@Button["Nuevo ejercicio",rv="";expresion=genED ], FrameLabel->Style["Resuelva esta ecuación diferencial"]

]
 Manipulate[Dynamic@Button[rv, "" ,  Appearance->"Frameless"],

 
Dynamic@Button["Ver respuesta", rv =  "y="<> ToString@TraditionalForm[DSolve[expresion, y[x],x][[1]][[1]][[2]]]] 

]

Autores: Juan Félix Ávila Herrera y Enrique Vílchez Quesada, Escuela de Informática, Universidad Nacional de Costa Rica,  .