Effect of Simplify on numeric vs symbolic
- To: mathgroup at smc.vnet.net
- Subject: [mg55971] Effect of Simplify on numeric vs symbolic
- From: carlos at colorado.edu
- Date: Tue, 12 Apr 2005 05:26:32 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
In my previous example of FEM symbolic vs numeric speed all computations were with numbers. No variables were involved. The difference (minutes vs seconds) due largely due to Simplify. Here is a simpler example that illustrates the point, also taken from the same course. LineGaussRuleInfo returns weights and abcissae of 1D Gauss-Legendre quadrature rules of 1 to 5 points. Argument numer asks for exact information if False; if True it returns N[information]. All computations involve nunbers only. Results of calls (at end of post) on a Mac laptop: numer rule n Eval time Simplify time True 4 50 0.00 sec 0.00 sec False 4 50 0.00 sec 78.01 sec (* Note: FullSimplify needed *) False 4 50 0.00 sec 0.00 sec (* found result in cache *) LineGaussRuleInfo[{rule_,numer_},point_]:= Module[ {g2={-1,1}/Sqrt[3],w3={5/9,8/9,5/9}, g3={-Sqrt[3/5],0,Sqrt[3/5]}, w4={(1/2)-Sqrt[5/6]/6, (1/2)+Sqrt[5/6]/6, (1/2)+Sqrt[5/6]/6, (1/2)-Sqrt[5/6]/6}, g4={-Sqrt[(3+2*Sqrt[6/5])/7],-Sqrt[(3-2*Sqrt[6/5])/7], Sqrt[(3-2*Sqrt[6/5])/7], Sqrt[(3+2*Sqrt[6/5])/7]}, g5={-Sqrt[5+2*Sqrt[10/7]],-Sqrt[5-2*Sqrt[10/7]],0, Sqrt[5-2*Sqrt[10/7]], Sqrt[5+2*Sqrt[10/7]]}/3, w5={322-13*Sqrt[70],322+13*Sqrt[70],512, 322+13*Sqrt[70],322-13*Sqrt[70]}/900, i=point,p=rule,info={{Null,Null},0}}, If [p==1, info={0,2}]; If [p==2, info={g2[[i]],1}]; If [p==3, info={g3[[i]],w3[[i]]}]; If [p==4, info={g4[[i]],w4[[i]]}]; If [p==5, info={g5[[i]],w5[[i]]}]; If [numer, Return[N[info]], Return[info] ]; ]; PerverseExpression[rule_,n_,numer_]:=Module[{xw,tEval,tSymb,x}, xw=Table[LineGaussRuleInfo[{rule,numer},i],{i,1,rule}]; {tEval,x}=Timing[Product[(i+2)*xw[[i,1]]^n,{i,1,rule}]]; {tSymp,x}=Timing[FullSimplify[x]]; Return[{tEval,tSymp,x}]]; Print[PerverseExpression[4,50,True ]]; Print[PerverseExpression[4,50,False]]; Print[PerverseExpression[4,50,False]]; (* Cached *)
- Follow-Ups:
- Re: Effect of Simplify on numeric vs symbolic
- From: Daniel Lichtblau <danl@wolfram.com>
- Re: Effect of Simplify on numeric vs symbolic