CellPrint[TextCell[Quiet[Manipulate[If[ToString[Criterio]≠ToString[Null],If[!StringContainsQ[ToString[g[x]],"If"]&&!StringContainsQ[ToString[g[x]],"I"],If[NumericQ[g[Quiet[w/.Quiet[FindInstance[Quiet[FunctionDomain[g[w],w]],{w},Reals][[1]]]]]],If[VectorQ[{p,n,vtolerancia},NumericQ],If[!tolerancia,NewtonRaphson[p,n],Column[{If[etolerancia,NewtonRaphsonToleranciaE[p,vtolerancia],""],If[ftolerancia,NewtonRaphsonToleranciaF[p,vtolerancia],""]},Center]],Text[Style["Error en los datos",12]]],Text[Style["Error en los datos",12]]],Text[Style["Error en los datos",12]]],Text[Style["Error en los datos",12]]],Style["Propósito: implementa el método de Newton-Raphson.",Bold,10],Spacer[{400,2}],{{Criterio,(x^3)-13x-12,"f(x)="}},Delimiter,{{p,3,"Valor de (Subscript[p, 0])"}},{{n,4,"Iteraciones"},Enabled->!tolerancia},Delimiter,{{tolerancia,False,"Tolerancia"},{True,False}},{{vtolerancia,(10^(-3)),"Valor de precisión ξ"},Enabled->tolerancia},OpenerView[{"Criterio para detener las iteraciones:",Column[{Control[{{etolerancia,True,"|(((Subscript[p, n]) - (Subscript[p, n - 1]))/(Subscript[p, n]))|⩽ξ (error relativo)"},{True,False},Enabled->tolerancia}],Control[{{ftolerancia,False,"|f((Subscript[p, n]))|⩽ξ"},{True,False},Enabled->tolerancia}]}]},Dynamic[tolerancia]],Delimiter,Button["Cambiar función",CrearFuncion[{Criterio}]],Alignment->Center,Deployed->False,AppearanceElements->"ResetButton",LocalizeVariables->True,ContinuousAction->True,ControlPlacement->Top,FrameLabel->{{None,None},{Column[{,Row[{Style["Autores: Juan Félix Ávila Herrera y Enrique Vílchez Quesada",Bold,10,RGBColor[0,0,0.5]]}],Row[{Style["Escuela de Informática | Universidad Nacional de Costa Rica",Bold,10,RGBColor[0.5,0.1,0]]}]},Center],Style["Método de Newton-Raphson", Bold,14, RGBColor[0,0.33,0.33]]}},Initialization:>(Clear[VariableFuncioni,f,CrearFuncion,w,NewtonRaphson,NewtonRaphsonToleranciaE,NewtonRaphsonToleranciaF];CrearFuncion[f_List]:=Module[{FuncionVariable},FuncionVariable[FuncionVariable_List]:=Module[{FuncionVariableAuxiliar,Simbolos,VariableAuxiliarSimbolos,VariableAuxiliarVariables={}},FuncionVariableAuxiliar[]:=FuncionVariable[[1]];Simbolos[VariableFuncion_]:=DeleteDuplicates[Cases[DownValues[VariableFuncion],_Symbol,Infinity]];VariableAuxiliarSimbolos=Sort[Simbolos[FuncionVariableAuxiliar]];For[VariableFuncioni=1,VariableFuncioni≤Length[VariableAuxiliarSimbolos],If[NumericQ[VariableAuxiliarSimbolos[[VariableFuncioni]]]==False,VariableAuxiliarVariables=Append[VariableAuxiliarVariables,VariableAuxiliarSimbolos[[VariableFuncioni]]]];VariableFuncioni++];VariableAuxiliarVariables];Clear[g,x,Ra];g[Ra_]:= Quiet[Evaluate[First[f]]/.Select[FuncionVariable[f],ToString[#]==ToString[x]&][[1]]->Ra]];CrearFuncion[{Criterio}];NewtonRaphson[vp_,n_]:=Quiet[Module[{p=vp},If[TrueQ[NumericQ[D[g[x],x]/.x->p]],If[(D[g[x],x]/.x->p)!=0,If[n>=1,Module[{vectNiter={0},vecPreIm={p},vecIm={Abs[g[p]]},Newti},For[Newti=1,Newti<=n,vectNiter=Append[vectNiter,Newti];p=p-((g[p])/(D[g[x],x]/.x->p));vecPreIm=Append[vecPreIm,p];vecIm=Append[vecIm,Abs[g[p]]];Newti++];Style[Grid[{Prepend[vectNiter,"n"],Prepend[vecPreIm//N,"(Subscript[p, n])"],Prepend[vecIm//N,"|f((Subscript[p, n]))|"]},Frame-> All,Alignment->Left],11]],Style["NaD",11]],Style["Se indefine la primera derivada",11]],Style["No es diferenciable",11]]]];NewtonRaphsonToleranciaE[vp_,tolerancia_]:=TimeConstrained[Quiet[If[tolerancia>0,Module[{p=vp},If[TrueQ[NumericQ[D[g[x],x]/.x->p]],If[(D[g[x],x]/.x->p)!=0,Module[{vectNiter={0,1},vecPreIm={p},vecIm={Abs[g[p]]},Newti=2},p=p-((g[p])/(D[g[x],x]/.x->p));vecPreIm=Append[vecPreIm,p];vecIm=Append[vecIm,Abs[g[p]]];While[Abs[((Extract[vecPreIm,-1]-Extract[vecPreIm,-2])/(Extract[vecPreIm,-1]))]>tolerancia,vectNiter=Append[vectNiter,Newti];p=p-((g[p])/(D[g[x],x]/.x->p));vecPreIm=Append[vecPreIm,p];vecIm=Append[vecIm,Abs[g[p]]];Newti++];Style[Grid[{Prepend[vectNiter,"n"],Prepend[vecPreIm//N,"(Subscript[p, n])"],Prepend[vecIm//N,"|f((Subscript[p, n]))|"]},Frame-> All,Alignment->Left],11]],Style["Se indefine la primera derivada",11]],Style["No es diferenciable",11]]],Style["NaD",11]]],10];NewtonRaphsonToleranciaF[vp_,tolerancia_]:=TimeConstrained[Quiet[If[tolerancia>0,Module[{p=vp},If[TrueQ[NumericQ[D[g[x],x]/.x->p]],If[(D[g[x],x]/.x->p)!=0,Module[{vectNiter={0},vecPreIm={p},vecIm={Abs[g[p]]},Newti=1},While[Last[vecIm]>tolerancia,vectNiter=Append[vectNiter,Newti];p=p-((g[p])/(D[g[x],x]/.x->p));vecPreIm=Append[vecPreIm,p];vecIm=Append[vecIm,Abs[g[p]]];Newti++];Style[Grid[{Prepend[vectNiter,"n"],Prepend[vecPreIm//N,"(Subscript[p, n])"],Prepend[vecIm//N,"|f((Subscript[p, n]))|"]},Frame-> All,Alignment->Left],11]],Style["Se indefine la primera derivada",11]],Style["No es diferenciable",11]]],Style["NaD",11]]],10])]],"Text"]]