Re: Clean up code to run faster
- To: mathgroup at smc.vnet.net
- Subject: [mg122450] Re: Clean up code to run faster
- From: A Retey <awnl at gmx-topmail.de>
- Date: Sat, 29 Oct 2011 07:08:51 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <j7u4rb$t67$1@smc.vnet.net>
Hi, > I am new to Mathematica and I have learned that it is a steep learning > curve, I've spent a week trying to program an example problem from a > heat transfer book. I need it to solve for several hundred time steps > and my computer is only allowing me to do about 15 in an hour of > solving. How can I clean up my code and what are some general tips > that you can give me for the future when I need to do more hard core > iteration problems and stuff? PS, I'm a mechanical engineer so I'm > not very good at understanding how Mathematica thinks in computer > language (anything is helpful). I think you got some hints about how to speed up your actual calculation. I just wanted to make sure you understand that there is actually no need to solve such a simple problem with such a low level approach: Mathematica can solve many partial differential equations out of the box. Only if you are taking advantage of those feature you will find Mathematica to be a powerful tool once you have learned how to use it. Here is an example which solves a 1d heat transfer problem with NDSolve, straight from the documentation of NDSolve: NDSolve[{D[u[t, x], t] == D[u[t, x], x, x], u[0, x] == 0, u[t, 0] == Sin[t], u[t, 5] == 0}, u, {t, 0, 10}, {x, 0, 5}] Plot3D[Evaluate[u[t, x] /. %], {t, 0, 10}, {x, 0, 5}, PlotRange -> All] Of course you would have to adopt the boundary condition to your case. If you are just using this as an example for learning Mathematica, you might want to use such a solution to check your results... hth, albert