Re: Do loop is faulty
- To: mathgroup at smc.vnet.net
- Subject: [mg55389] Re: Do loop is faulty
- From: "Hans Michel" <hmichel at sdc.cox.net>
- Date: Mon, 21 Mar 2005 03:01:56 -0500 (EST)
- References: <d1jfsj$sa4$1@smc.vnet.net>
- Reply-to: "Hans Michel" <hmichel at sdc.cox.net>
- Sender: owner-wri-mathgroup at wolfram.com
DF:
You have given up as predicted. Or fallen off the Mathematica band wagon.
If you state your problem in just plain english or pure math you will find
that the kind people in this newsgroup may be willling to help more. Because
then they will have more info as to what you are trying to do or solve. You
will probably get more answers than you can deal with and if you do I would
suggest trying all the replies, because one of them may fit your style. The
code can sometimes be obsfucate, but it can always be deconstructed.
You are trying to Numerically Integrate
a*x*Sin[b*x] as x goes from 0 to b
what is a and b?
Every one is telling you to stay away from Do loops, For Loops. Mathematica
is an impure functional language (But only the people at Wolfram can tell
you what it is, "A system for doing ..."). It provides flow controls that
are similar to the way things are done in an imperative language. But now
you are trying to combine the two methods, but you are unwilling to learn
the syntax. The Array[] function generates a List. List are the basis of
most things in Mathematica.
It took a few seconds of cut and paste to produce this.
{NIntegrate[1*x*Sin[(1/10)*x] , {x, 0, (1/10)}],
NIntegrate[2*x*Sin[(2/10)*x] , {x, 0, (2/10)}],
NIntegrate[3*x*Sin[(3/10)*x] , {x, 0, (3/10)}],
NIntegrate[4*x*Sin[(4/10)*x] , {x, 0, (4/10)}],
NIntegrate[5*x*Sin[(5/10)*x] , {x, 0, (5/10)}],
NIntegrate[6*x*Sin[(6/10)*x] , {x, 0, (6/10)}],
NIntegrate[7*x*Sin[(7/10)*x] , {x, 0, (7/10)}],
NIntegrate[8*x*Sin[(8/10)*x] , {x, 0, (8/10)}],
NIntegrate[9*x*Sin[(9/10)*x] , {x, 0, (9/10)}],
NIntegrate[10*x*Sin[(10/10)*x] , {x, 0, (10/10)}]}
{0.000033333, 0.0010665, 0.00809344, 0.034046, 0.103517, 0.255856, 0.546897,
\
1.04818, 1.84215, 3.01169}
a few more seconds to produce
a = Range[10];
b = Range[10]/10;
Table[NIntegrate[a[[i]]*x*Sin[b[[i]]*x], {x, 0, b[[i]]}], {i, 1, 10}]
{0.000033333, 0.0010665, 0.00809344, 0.034046, 0.103517, 0.255856, 0.546897,
\
1.04818, 1.84215, 3.01169}
Notice the "[[" "]]" double square brackets.
It is not Mathematica or you that is at fault here it is your approach. Most
people in this group are telling you to abandon the approach. Because for
the few minutes you practice other problems in the book or help files you
will reap it back in productivity.
Don't just try to get your thing done. You don't need Mathematica to get
your thing done. There are lots of other programs out there. But you will
run into the same problem of learning how to use them efficiently.
Hans
"dumb_founded" <andreajagger_8 at hotmail.com> wrote in message
news:d1jfsj$sa4$1 at smc.vnet.net...
>I define array a[i] and array b[i] of dimension 10. Then I go through
> the following Do loop, or try to, that is.
>
>
> Array[c,10];
> Do[c[i]=NIntegrate[a[i]*x*Sin[b[i]*x],{x,0,b[i]}]
>
> I get numerous error messages saying that b[i] is not a valid limit of
> integration.
>
> This is sheer headache. I will never try to use Mathematica for
> numerical analysis again.
>
> All your efforts on this matter are sincerely appreciated.
>
>
>
> Thanks
>