New Reply

mathematica looping

 
Share Thread Thread Tools
May26-12, 01:30 AM   #1
 

mathematica looping


pl help
Here I have written a mathematica code. It is a small example of my actual problem. In this code, 't' is an arbitrary constant which is being fixed at the top of the programme by assigning a value. All the other variables 'a','b','c' depend upon 't' . and 'h1','h2' are the roots of quadratic equation with coefficients a,b,c.
Further, 'f' is a function in an unknown variable 'p' and involves 'h1' and 'h2'.. We can determine 'p' by solving f(p)=0, giving two roots. Finally I calculated 'v' from the from assigned 't' and calculated second root of equation f(p)=0.
Thus 'v' depends upon 't' both explicitly and implicitly.. With change in 't', "v" will change. I want to draw a graph between 't' and 'v'.. For this I need looping or some other command to assign different values to 't' at the top of the programme.. Me unable to do that.. Pl if possible , help me in this regard
t := 3
a := t^2
b := (t + 1)*I
c := t^2 + 2*t*I + 1
h1 = (-b + Sqrt[b^2 - 4*a*c])/(2*a)
h2 = (-b - Sqrt[b^2 - 4*a*c])/(2*a)
a11 := Sqrt[p]*h1
a12 := h1*2
a21 := 3*h2^2
a22 := 4 + p
f[p_] = a11*a22 - a21*a12
h = sols = NSolve[f[p] == 0, p]
d = p /. sols[[2]]
v = t/Re[d]
Suppose I want to calculate my final answer for ten values of 't' (say 1,2,3.....10) and finally to plot a graph between the final values of 'v' and the ten assigned values for 't'. I have tried a lot in this regard and have defined a function, used array and table commands too.. But unable to pick those ten values by my for loop command and to draw graph...
PhysOrg.com
PhysOrg
science news on PhysOrg.com

>> 'Whodunnit' of Irish potato famine solved
>> The mammoth's lament: Study shows how cosmic impact sparked devastating climate change
>> Curiosity Mars rover drills second rock target
May26-12, 07:56 AM   #2
 
Mentor
You should not set t at the beginning. It seems that t is the argument to a function, so you should express everything in terms of functions of t:

a[t_] := t^2
b[t_] := (t + 1)*I
c[t_] := t^2 + 2*t*I + 1
h1[t_] := (-b[t] + Sqrt[b[t]^2 - 4*a[t]*c[t]])/(2*a[t])
...
May26-12, 08:59 AM   #3
 
Now I have tried the following

For[t = 1, t < 100, t = t + 10,
a = t^2;
b = (t + 1)*I;
c = t^2 + 2*t*I + 1;
h1 = (-b + Sqrt[b^2 - 4*a*c])/(2*a);
h2 = (-b - Sqrt[b^2 - 4*a*c])/(2*a);
a11 = Sqrt[p]*h1;
a12 = h1*2;
a21 = 3*h2^2;
a22 = 4 + p;
S = {{a11, a22}, {a21, a22}};
f[p_] = Det[S];
h = sols = NSolve[f[p] == 0, p];
d = p /. sols[[2]];
v = t/Re[d] ;
data = {{v, t}} // TableForm;
Print[data];
]
The output is
{{2.41743, 1}}
{{-2.75, 11}}
{{-5.25, 21}}
{{-7.75, 31}}
{{-10.25, 41}}
{{-12.75, 51}}
{{-15.25, 61}}
{{-17.75, 71}}
{{-20.25, 81}}
{{-22.75, 91}}
But problem is to plot.. In plotting command, it willl take the final value i.e. -22.75 and 91.. So still having the problem.. Want to plot a graph between 't' and 'v............'Pl help
May26-12, 01:32 PM   #4
 
Mentor

mathematica looping


Don't do it that way. Make everything into functions of t. Avoid explicit looping structures in interpreted languages whenever possible.

The reason you are unable to plot the data is because you never set anything equal to the data, you simply printed it. Printing it displays it but does not store it in a variable.

Instead of using For you should use Table to actually build up a table of values.
New Reply
Thread Tools


Similar Threads for: mathematica looping
Thread Forum Replies
JAVA problem with looping Programming & Comp Sci 2
Mathematica: looping using Module Math & Science Software 0
Need help with looping Math & Science Software 5
looping in algebra with programming? Linear & Abstract Algebra 0
how to calculate forces in a looping ... Introductory Physics Homework 2