Help me please to write For
correctly.. I've the 1-st step of algorithm and finally it outputs two intervals : 1)Interval[{1.25677,3.25203},{5.511,5.58272}]
My problem is in the 2-nd step, because I've to do some conditions within previous first interval {1.25677,3.25203}
and output a new interval. So For
has to work from beginning of this interval to the end.
X = {-2, 6}
spkw = {105.056, 89.2249, 17.7361, 7.25929, 7.25929, 7.25929, 7.25929,
1.09386,
1.09386, -7.35382, -12.5073, -11.929, -11.929, -15.429, -8.63312,
-6.34314, -14.3807, -16.7907, -18.933, -12.3896, -3.021, -22.0262,
-25.7865, -18.8033, -9.07591, -9.18036, -8.49959, -9.24378, -7.32337,
-0.271835, -0.270096, 0.123206, 0.156523, 0.465142, 4.12922, 4.23318,
8.03654, 8.20981, 12.1518, 12.3944}
spkn = {73.5426, 66.8007, 24.6942, 16.4029, 0.726929,
0.314512, -1.23002, -1.23002, -3.90668, -10.8276, -14.2065,
-13.0895, -18.656, -20.1709, -8.79676, -8.79676, -11.2319, -13.9771,
-15.1407, -2.50312, -4.72374, -32.4496, -34.2958, -21.0455, -2.45882,
-2.45882, -2.45882, -2.45882, -2.45882, -2.45882, -2.45882, -1.70357,
-1.70357, -1.11799, 6.1251, 6.36752, 6.36752, 6.60995, 14.0955,
14.5803}
spmw = {243.475, 213.305, 83.8004, 67.1081, 67.1081, 67.1081, 67.1081,
59.4226, 59.4226, 49.9772, 45.1635, 45.6272, 45.6272, 43.4397,
46.8376, 47.4101, 46.6214, 47.3535, 48.75, 42.5447, 33.1761,
61.6839, 68.2644, 53.4787, 29.1603, 29.4279, 27.6409, 30.1061,
22.9045, -5.30161, -5.30859, -6.88938, -7.0313, -8.37913, -24.8675,
-25.3613, -44.3781, -45.2877, -66.9686, -68.3634}
spmn = {180.448, 167.6, 91.3225, 78.1123, 56.5579, 55.9978, 53.9271,
53.9271, 50.6364, 42.898, 39.742, 40.6374, 36.4626, 35.5158,
41.2028, 41.2028, 40.9639, 41.7978, 42.5563, 30.5716, 32.7923,
74.3811, 77.6119, 49.5569, 3.09017, 3.09017, 3.09017, 3.09017,
3.09017, 3.09017, 3.09017, 0.0546329,
0.0546329, -2.5028, -35.0967, -36.2482, -36.2482, -37.5209,
-78.6912, -81.4791}
spfw = {33.3632, 43.263, 51.6709, 55.5421, 57.1266, 57.2511, 57.3756,
58.059, 58.0778, 58.1995, 56.846, 55.1903, 54.5739, 53.0828,
51.1542, 48.9959, 48.0325, 42.2533, 36.408, 30.7952, 30.1551,
28.6446, 23.138, 19.4168, 6.47053, 5.90328,
5.32951, -0.513959, -0.750527, -6.38895, -6.39157, -6.39418,
-6.36456, -6.09357, -6.28599, -5.25369, -4.19539, -2.18625, -0.133803,
2.90414, 6.171}
spfn = {33.3632, 40.2933, 46.5882, 51.9781, 55.5583, 55.5708, 55.5762,
55.4604, 55.4393, 55.0045, 530116, 51.1309, 50.4546, 48.1226,
45.6012, 43.402, 42.066, 37.5522, 32.6864, 28.1979, 28.0685,
25.7067, 17.5943,
13.5547, -2.97428, -3.21054, -3.36422, -5.05466, -5.1301, -6.4392,
-6.76879, -6.48231, -7.20196, -7.00719, -7.53373, -6.00246, -4.41058,
-2.8187, -1.16621, 2.35765, 6.04694}
(*1 STEP*)
myintervals1 = Reap[For[i = 1, i < Length@spfn, i++,
If[! (((0 < spfn[[i]]) && (0 < spfn[[i + 1]])) || ((spfw[[i]] <
0) && (spfw[[i + 1]] < 0))),
Sow[Interval[{-spmn[[i]]/spkn[[i]], -spmw[[i]]/spkw[[i]]}]]]]] [[
2, 1]]
Print["1)", myint1 = Join @@ myintervals1]
myint11 = myint1[[1]];
myint12 = myint1[[2]];
Print["width of interval ", myint11, " : ",
widthmyint11 = Max[myint1[[1]]] - Min[myint1[[1]]]]
Print["width of interval ", myint12 , " : ",
widthmyint12 = Max[myint1[[2]]] - Min[myint1[[2]]]]
(*2 STEP*)
myintervals2 =
Reap[For[j = Min[myint1[[1]]], j <= Max[myint1[[1]]], j++
If[spfn[[j]]*spfn[[j + 1]] < 0 && spfw[[j]]*spfw[[j + 1]] < 0,
Sow[
Interval[{Min[-spmn[[j]]/spkn[[j]], -spmw[[j]]/spkw[[j]]],
Max[-spmn[[j]]/spkn[[j]], -spmw[[j]]/spkw[[j]]]}]]
]
]
][[2, 1]]
Print["2)", myintervals2]