Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- mags = {{1.2, 0, 0, 1, 0, 0, -1}, {1.2, Pi/6, 0, 1, -Sin[Pi/6],
- 0, -Cos[Pi/6]}, {1.2, Pi/6, 2*Pi/3,
- 1, -Sin[Pi/6]*Cos[2*Pi/3], -Sin[Pi/6]*
- Sin[2*Pi/3], -Cos[Pi/6]}, {1.2, Pi/6, 4*Pi/3,
- 1, -Sin[Pi/6]*Cos[4*Pi/3], -Sin[Pi/6]*Sin[4*Pi/3], -Cos[Pi/6]}};
- nf = Nearest[{{-0.082788, 0}, {0.041394,
- 0.071696}, {0.041394, -0.071696}} -> Automatic] /* First;
- eq = {tht''[
- t] - (Sin[tht[t]]*Cos[tht[t]]*
- phi'[t]^2 - (Sum[
- c*mags[[i,
- 4]]*((mags[[i, 5]]*Cos[tht[t]]*Cos[phi[t]] +
- mags[[i, 6]]*Cos[tht[t]]*Sin[phi[t]] -
- mags[[i, 7]]*
- Sin[tht[t]]) + (3*
- mags[[i,
- 1]]*(Sin[mags[[i, 2]]]*Cos[mags[[i, 3]]]*
- Cos[tht[t]]*Cos[phi[t]] +
- Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]]*Cos[tht[t]]*
- Sin[phi[t]] -
- Cos[mags[[i, 2]]]*
- Sin[tht[
- t]])*(2*(mags[[i, 5]]*Sin[tht[t]]*Cos[phi[t]] +
- mags[[i, 6]]*Sin[tht[t]]*Sin[phi[t]] +
- mags[[i, 7]]*Cos[tht[t]]) -
- mags[[i,
- 1]]*(mags[[i, 5]]*Sin[mags[[i, 2]]]*
- Cos[mags[[i, 3]]] +
- mags[[i, 6]]*Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]] +
- mags[[i, 7]]*Cos[mags[[i, 2]]])) -
- 3*(mags[[i, 5]]*Cos[tht[t]]*Cos[phi[t]] +
- mags[[i, 6]]*Cos[tht[t]]*Sin[phi[t]] -
- mags[[i, 7]]*Sin[tht[t]])*(1 -
- mags[[i,
- 1]]*(Sin[mags[[i, 2]]]*Cos[mags[[i, 3]]]*
- Sin[tht[t]]*Cos[phi[t]] +
- Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]]*Sin[tht[t]]*
- Sin[phi[t]] +
- Cos[mags[[i, 2]]]*Cos[tht[t]])))/(((1 +
- mags[[i, 1]]^2 -
- 2*mags[[i,
- 1]]*(Sin[mags[[i, 2]]]*Cos[mags[[i, 3]]]*
- Sin[tht[t]]*Cos[phi[t]] +
- Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]]*Sin[tht[t]]*
- Sin[phi[t]] +
- Cos[mags[[i, 2]]]*Cos[tht[t]])))^1) -
- 15*mags[[i,
- 1]]*(Sin[mags[[i, 2]]]*Cos[mags[[i, 3]]]*Cos[tht[t]]*
- Cos[phi[t]] +
- Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]]*Cos[tht[t]]*
- Sin[phi[t]] -
- Cos[mags[[i, 2]]]*
- Sin[tht[t]])*((mags[[i, 5]]*Sin[tht[t]]*
- Cos[phi[t]] +
- mags[[i, 6]]*Sin[tht[t]]*Sin[phi[t]] +
- mags[[i, 7]]*Cos[tht[t]]) -
- mags[[i,
- 1]]*(mags[[i, 5]]*Sin[mags[[i, 2]]]*
- Cos[mags[[i, 3]]] +
- mags[[i, 6]]*Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]] +
- mags[[i, 7]]*Cos[mags[[i, 2]]]))*(1 -
- mags[[i,
- 1]]*(Sin[mags[[i, 2]]]*Cos[mags[[i, 3]]]*
- Sin[tht[t]]*Cos[phi[t]] +
- Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]]*Sin[tht[t]]*
- Sin[phi[t]] +
- Cos[mags[[i, 2]]]*Cos[tht[t]]))/((1 +
- mags[[i, 1]]^2 -
- 2*mags[[i,
- 1]]*(Sin[mags[[i, 2]]]*Cos[mags[[i, 3]]]*
- Sin[tht[t]]*Cos[phi[t]] +
- Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]]*Sin[tht[t]]*
- Sin[phi[t]] +
- Cos[mags[[i, 2]]]*Cos[tht[t]])))^2)/((1 +
- mags[[i, 1]]^2 -
- 2*mags[[i,
- 1]]*(Sin[mags[[i, 2]]]*Cos[mags[[i, 3]]]*
- Sin[tht[t]]*Cos[phi[t]] +
- Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]]*Sin[tht[t]]*
- Sin[phi[t]] +
- Cos[mags[[i, 2]]]*Cos[tht[t]])))^1.5, {i,
- 4}] + (m + M/2)*g*L*Sin[tht[t]] +
- k*(L^2)*tht'[t]/3)/((M/3 + m)*L^2)) == 0,
- phi''[t] - (-Sum[
- c*mags[[i,
- 4]]*((-mags[[i, 5]]*Sin[tht[t]]*Sin[phi[t]] +
- mags[[i, 6]]*Sin[tht[t]]*
- Cos[phi[t]]) + (3*
- mags[[i,
- 1]]*(-Sin[mags[[i, 2]]]*Cos[mags[[i, 3]]]*
- Sin[tht[t]]*Sin[phi[t]] +
- Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]]*Sin[tht[t]]*
- Cos[phi[
- t]])*(2*(mags[[i, 5]]*Sin[tht[t]]*Cos[phi[t]] +
- mags[[i, 6]]*Sin[tht[t]]*Sin[phi[t]] +
- mags[[i, 7]]*Cos[tht[t]]) -
- mags[[i,
- 1]]*(mags[[i, 5]]*Sin[mags[[i, 2]]]*
- Cos[mags[[i, 3]]] +
- mags[[i, 6]]*Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]] +
- mags[[i, 7]]*Cos[mags[[i, 2]]])) -
- 3*(-mags[[i, 5]]*Sin[tht[t]]*Sin[phi[t]] +
- mags[[i, 6]]*Sin[tht[t]]*Cos[phi[t]])*(1 -
- mags[[i,
- 1]]*(Sin[mags[[i, 2]]]*Cos[mags[[i, 3]]]*
- Sin[tht[t]]*Cos[phi[t]] +
- Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]]*Sin[tht[t]]*
- Sin[phi[t]] +
- Cos[mags[[i, 2]]]*Cos[tht[t]])))/((1 +
- mags[[i, 1]]^2 -
- 2*mags[[i,
- 1]]*(Sin[mags[[i, 2]]]*Cos[mags[[i, 3]]]*
- Sin[tht[t]]*Cos[phi[t]] +
- Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]]*Sin[tht[t]]*
- Sin[phi[t]] +
- Cos[mags[[i, 2]]]*Cos[tht[t]]))^1) -
- 15*mags[[i,
- 1]]*(-Sin[mags[[i, 2]]]*Cos[mags[[i, 3]]]*Sin[tht[t]]*
- Sin[phi[t]] +
- Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]]*Sin[tht[t]]*
- Cos[phi[t]])*((mags[[i, 5]]*Sin[tht[t]]*
- Cos[phi[t]] +
- mags[[i, 6]]*Sin[tht[t]]*Sin[phi[t]] +
- mags[[i, 7]]*Cos[tht[t]]) -
- mags[[i,
- 1]]*(mags[[i, 5]]*Sin[mags[[i, 2]]]*
- Cos[mags[[i, 3]]] +
- mags[[i, 6]]*Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]] +
- mags[[i, 7]]*Cos[mags[[i, 2]]]))*(1 -
- mags[[i,
- 1]]*(Sin[mags[[i, 2]]]*Cos[mags[[i, 3]]]*
- Sin[tht[t]]*Cos[phi[t]] +
- Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]]*Sin[tht[t]]*
- Sin[phi[t]] + Cos[mags[[i, 2]]]*Cos[tht[t]]))/(1 +
- mags[[i, 1]]^2 -
- 2*mags[[i,
- 1]]*(Sin[mags[[i, 2]]]*Cos[mags[[i, 3]]]*
- Sin[tht[t]]*Cos[phi[t]] +
- Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]]*Sin[tht[t]]*
- Sin[phi[t]] +
- Cos[mags[[i, 2]]]*Cos[tht[t]]))^2)/(1 +
- mags[[i, 1]]^2 -
- 2*mags[[i,
- 1]]*(Sin[mags[[i, 2]]]*Cos[mags[[i, 3]]]*Sin[tht[t]]*
- Cos[phi[t]] +
- Sin[mags[[i, 2]]]*Sin[mags[[i, 3]]]*Sin[tht[t]]*
- Sin[phi[t]] +
- Cos[mags[[i, 2]]]*Cos[tht[t]]))^1.5, {i,
- 4}]/(((M/3 + m)*L^2)*Sin[tht[t]]^2) -
- 2*tht'[t]*phi'[t]/Tan[tht[t]] -
- k*(L^2)*phi'[t]/(3*((M/3 + m)*L^2))) == 0, tht'[0] == 0,
- phi'[0] == 0.5, tht[0] == tht0, phi[0] == phi0};
- getStateData[op_] :=
- First@NDSolve`ProcessEquations[eq /. op, {tht, phi}, t,
- Method -> "Adams"];
- op = {k -> .1, c -> .0004, M -> .05, m -> .01, L -> .3, g -> 9.8,
- tht0 -> 1, phi0 -> 3};
- sd = getStateData[op]
- getBaSin[x_, y_] :=
- If[x*x + y*y <= 0.3*0.3,
- Module[{state = sd, sol},
- state = First[
- NDSolve`Reinitialize[
- sd, {tht[0] == ArcSin[((x^2 + y^2)^0.5)/0.3],
- phi[0] ==
- If[x != 0, If[x > 0, ArcTan[y/x], ArcTan[y/x] + Pi],
- If[y > 0, Pi/2, -Pi/2]]}]];
- NDSolve`Iterate[state, 21];
- sol = {tht[20], phi[20]} /. NDSolve`ProcessSolutions[state];
- nf[{0.3*Sin[sol[[1]]]*Cos[sol[[2]]],
- 0.3*Sin[sol[[1]]]*Sin[sol[[2]]]}]], 0]
- plot1 = ArrayPlot[
- ParallelTable[
- getBaSin[x, y], {y, 0.3, -0.3, -0.1}, {x, -0.3, 0.3, 0.1}],
- ColorRules -> {0 -> White, 1 -> Red, 2 -> Green, 3 -> Blue}] //
- AbsoluteTiming
- plot2 = ListPlot[{{-0.082788, 0}, {0.041394,
- 0.071696}, {0.041394, -0.071696}}]
- Show[{plot1, plot2}]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement