Re: Do loops in Mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg55187] Re: [mg55170] Do loops in Mathematica
- From: "David Park" <djmp at earthlink.net>
- Date: Wed, 16 Mar 2005 05:36:03 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
You probably don't want to use a Do loop and your syntax is incorrect for Mathematica. You probably have to spend a little more time working through Part I of The Mathematica Book. But that's all right because you have to plunge in somewhere. First, let's write a routine that will do the kind of calculation you are talking about. Here is an example along the lines you specified. generateAnswer[c_] /; 0 <= c <= 1 := Module[{x, integral1, integral2}, x = x /. FindRoot[Cos[x] == c, {x, \[Pi]/4}]; integral1 = NIntegrate[1/(y^2 + x^2), {y, 1, 2}]; integral2 = NIntegrate[y^2/(y^2 + x^2), {y, 1, 2}]; integral2 - integral1 ] We can test it out by calling individual cases. generateAnswer[0.5] 0.347105 In fact, in developing the routine I would probably have only the initial lines first and then add additional steps after testing. Once we have a working routine for an individual point we can consider generating tables of values. Then, instead of using a Do command, use the humble but very useful Table command. Table[generateAnswer[c], {c, 0.0, 1.0, 0.1}] {0.253648, 0.26966, 0.286798, 0.305256, 0.325265, 0.347105, 0.371118, 0.397743, 0.427545, 0.461281, 0.5} Or we could plot the solution... Plot[generateAnswer[c], {c, 0, 1}, Frame -> True, PlotRange -> {-0.01, 0.5}]; David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: dumb_founded [mailto:andreajagger_8 at hotmail.com] To: mathgroup at smc.vnet.net I am having trouble setting up Do loops in Mathematica. Even when I put in a return statement, I get no output. Below is a concrete example of code I am putting in: Do[{p = Solve[x^2 + 3*x + 1 == 0, x], Return[2*p]}, {i, 1}] I get nothing out of it. Here is a sketch of the code I want to construct but am scared to because of the above problem I keep encountering. (1) the first expression in the Do loop calls the FindRoot function on nonlinear function of x that involves a constant c. The constant c is in curly brackets at the end of the Do loop specifying a beginning value for c and an ending value for c. (2) I take the root found in the previous expression and I use it to calculate two numerical integrals (3) I add or subtract the two numerical integrals found in the previous expressions and I return the value of this expression (and this expression alone). I am having a headache figuring out this simple chore. Mathematica simply refuses to behave.