PDA

View Full Version : Mathematica -> making multiple variables in one go?


Mugged
Sep12-11, 03:02 PM
Ok so lets say i know how many variables i want:

numberofvariables = 5;

and then i want to create 5 different variables, say X1, X2, X3, X4, X5 based on some formula, say:

Xi = 5+i^2

but i want this creation of variables to be done automatically, without me having to explicity type out and declare X1, X2, X3,...separately...

is this possible?

I really need to know, because say i want numberofvariables = 200, it would be a pain to have to separately declare X1 through X200...

thank you so much.

(Note: this is a radically simplified version of what i am doing...there is not need to substitute a different method to solve the above problem, i just need dynamic variable declaration?)

Hurkyl
Sep12-11, 03:18 PM
Are you really, really, really sure that you can't use variables such as x[1], x[2], x[3], ...?

Mugged
Sep12-11, 03:27 PM
Oh i was able to create a For loop and assign X[i] variables like that....works

thank you very much Hurkyl

Simon_Tyler
Sep12-11, 05:26 PM
You can also construct the Xi symbols programmatically:

Do[Evaluate[Symbol["x" <> ToString[i]]] = 5 + i^2, {i, 5}]

Hellomyfriend
Oct18-11, 03:37 PM
I sort of have a similar issue.

So if I was to do some nonlinear fit of N objects (x1 through xN) with parameters A for each, A1, A2, A3 ... AN, but the number of objects is dependent on what data I'm looking at. Is there some way to generate those parameters/object labels depending on the number of objects I have?

So if I write:
NonlinearFit[data, formula, {A1, A2, ... AN}, {x1, x2... xN}]

I can create the formula by joining strings together and then converting to an expression, the problem I have is somehow including the A1...AN parameters and x1... xN variables given some N.

Thanks for any advice, this has been bugging me the past year.

Bill Simpson
Oct18-11, 04:41 PM
Create the parameters and variables almost the same way you create the formula.

In[1]:=n=12;
params=Table[ToExpression["A"<>ToString[i]],{i,n}];
vars=Table[ToExpression["x"<>ToString[i]],{i,n}];
(* now look at the result *)
Print[params,vars]

From In[1]:={A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12}{x1,x2,x 3,x4,x5,x6,x7,x8,x9,x10,x11,x12}

Then you can write

NonlinearFit[data, formula, params, vars]

Just make certain you have not previously assigned values to any Ai or xi.
If you have assigned values to any of those you may want to look at Clear[].

Hellomyfriend
Oct20-11, 12:06 AM
Thanks! That's exactly what I needed.