0

Use this code to generate my problem

n = Join[Table[i, {i, 6, 100, 10}], Table[i, {i, 100, 600, 50}]];

m = 247(kg); L = 6.8(m); II = 4.5510^-5(m^4); EE = 2.110^11(Pa);

m = N@Table[247/n[[i]], {i, 1, Length[n]}];

k = Table[ 1.61 ((E II)/(2 (L/n[[i]]))^3) (L/n[[i]])^2, {i, 1, Length[n]}];

M = Table[ m[[i]] IdentityMatrix[n[[i]] - 1], {i, 1, Length[n]}];

K = Table[ Table[0, {j, 1, n[[k]] - 1}, {i, 1, n[[k]] - 1}], {k, 1, Length[n]}];

For[ii = 1, ii <= Length[n], ii++, For[j = 1, j <= n[[ii]] - 1, j++, For[i = 1, i <= n[[ii]] - 1, i++, {If[j == i, K[[ii, j, i]] = 2 k[[ii]], Nothing], If[i == j + 1, K[[ii, j, i]] = -k[[ii]], Nothing], If[i == j - 1, K[[ii, j, i]] = -k[[ii]], Nothing]}]]]

sol = Sqrt[ Table[Eigenvalues[N[Inverse[M[[i]]]].K[[i]]], {i, 1, Length[n]}]];

freqtable = Table[Table[(Reverse@sol[[i]])[[j]], {i, 1, Length[n]}], {j, 1, 5}];

freqPoints = Table[Transpose[{n[[All]], freqtable[[i]]}], {i, 1, 5}];

ListPlot[freqPoints, Joined -> True, PlotLegends -> {"!(*SuperscriptBox[SubscriptBox[(ω), (1
)], (2)])", "!(*SuperscriptBox[SubscriptBox[(ω), (2)], (2)])", "!(*SuperscriptBox[SubscriptBox[(ω), (3)],
(2)])", "!(*SuperscriptBox[SubscriptBox[(ω), (4)], (2)])", "!(*SuperscriptBox[SubscriptBox[(ω), (5)],
(2)])"}, AxesLabel -> {"N", "rad/s"}, BaseStyle -> {FontFamily -> "Courier New", FontSize -> 10}]

This should produce you the following plot enter image description here

Now the problem is that I have to plot this from 0-600, but as you can see, nothing really interesting happens for N greater than 100.

So what I want is to somehow show more of the 0-100 part and show less of the 100-600 part. Is there a way to somehow rescale the x-axis?

skrat
  • 1,275
  • 1
  • 10
  • 19

0 Answers0