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[PolynomialQ[g[w],w],Column[{DivisionSinteticaIteraciones[n,p],NewtonRaphsonNormal[p,n]},Center],Text[Style["f(x) no es un polinomio",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 usando división sintética.",Bold,10],Spacer[{400,2}],{{Criterio,3(x^5)+4(x^3)+2(x^2)-4x+3,"f(x)="}},Delimiter,{{p,-2,"Valor de (Subscript[p, 0])"}},{{n,5,"Iteraciones"}},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 y división sintética", Bold,14, RGBColor[0,0.33,0.33]]}},Initialization:>(Clear[VariableFuncioni,f,CrearFuncion,w,NewtonRaphsonNormal,DivisionSintetica];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}];NewtonRaphsonNormal[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]]]];DivisionSintetica[Coeficientes_,NDivisor_]:=Module[{i,digito,digitosAux={},VectorProducto={},OVectorProducto={},VectorSuma={},OVectorSuma={},digitos},For[i=1,i≤Length[Coeficientes],digito=Coeficientes[[i]];digitosAux=Append[digitosAux,digito];VectorProducto=If[i==1,Append[VectorProducto,""],Append[VectorProducto,NDivisor VectorSuma[[i-1]]]];VectorSuma=If[i==1,Append[VectorSuma,digito],If[i==Length[Coeficientes],Append[VectorSuma,Style[digito+VectorProducto[[i]],Red,Bold]],Append[VectorSuma,digito+VectorProducto[[i]]]]];i++];digitosAux=Append[digitosAux,NDivisor];VectorProducto=Append[VectorProducto,""];VectorSuma=Append[VectorSuma,NDivisor];digitos=Take[VectorSuma,Length[VectorSuma]-2];For[i=1,i≤Length[digitos],digito=digitos[[i]];OVectorProducto=If[i==1,Append[OVectorProducto,""],Append[OVectorProducto,NDivisor OVectorSuma[[i-1]]]];OVectorSuma=If[i==1,Append[OVectorSuma,digito],If[i==Length[digitos],Append[OVectorSuma,Style[digito+OVectorProducto[[i]],Red,Bold]],Append[OVectorSuma,digito+OVectorProducto[[i]]]]];i++];OVectorProducto=Append[OVectorProducto,""];OVectorSuma=Append[OVectorSuma,""];Style[Column[{Grid[{digitosAux,VectorProducto,VectorSuma,OVectorProducto,OVectorSuma},Dividers->{{Length[digitosAux]->True},{False,False,True,False,True,False}},Alignment->Center]}],11]];DivisionSinteticaIteraciones[nIteraciones_,vp_]:=TimeConstrained[Module[{iteraciones={},vectorCoeficientes=Reverse[CoefficientList[g[w],w]]},vpaux=vp;For[i=1,i<=nIteraciones,iteraciones=Join[iteraciones,{{DivisionSintetica[vectorCoeficientes,vpaux],Row[{StringTemplate[" p_<*i*>=p_<*i-1*>-f(p_<*i-1*>)/f'(p_<*i-1*>)="][],StringTemplate["<* vpaux *> - (<* g[vpaux] *>)/(<* D[g[w],w]/.w->vpaux *>)"][],"=",vpaux-((g[vpaux])/(D[g[w],w]/.w->vpaux))//N}]}}];vpaux=vpaux-((g[vpaux])/(D[g[w],w]/.w->vpaux))//N;i++];Style[TableForm[iteraciones],11]],10])]],"Text"]]