If it helps, you can replace
f[1, 1] = y1[1] /. m;
f[1, 2] = y2[1] /. m;
f[1, 3] = y3[1] /. m;
f[1, 4] = y4[1] /. m;
f[2, 1] = y5[1] /. m;
f[2, 2] = y6[1] /. m;
f[2, 3] = y7[1] /. m;
f[2, 4] = y8[1] /. m;
f[3, 1] = y17[1] /. m;
f[3, 2] = y18[1] /. m;
f[3, 3] = y19[1] /. m;
f[3, 4] = y20[1] /. m;
f[4, 1] = y25[1] /. m;
f[4, 2] = y26[1] /. m;
f[4, 3] = y27[1] /. m;
f[4, 4] = y28[1] /. m;
d = Array[f, {4, 4}];
d = Partition[Flatten[d], 4];
with
d = First[{{y1[1], y2[1], y3[1], y4[1]},
{y5[1], y6[1], y7[1], y8[1]},
{y17[1], y18[1], y19[1], y20[1]},
{y25[1], y26[1], y27[1], y28[1]}} /. m]
Now more serious. You have
if (b > 0) {
w1 = w};
if (b < 0 & w == w1 + 100000) {
w2 = w1 + 100000;
FindRoot[{c, b}, {w, {w1, w2}}];
Print[ a, " " , z, " ", w, " ", b];
z = z + 0.2}
That sort of looks like you may have just made some manual changes for posting and that isn't really your original code. If really is what you are trying to do then that isn't Mathematica code. An attempt to translate that to Mathematica is
If[b > 0, w1 = w];
If[b < 0 && w == w1 + 100000,
w2 = w1 + 100000;
FindRoot[{c, b}, {w, {w1, w2}}];
Print[ a, " " , z, " ", w, " ", b];
z = z + 0.2
]
Mathematica uses {} and , and ; and If very differently from other programming languages.
Now we get to your error messages from FindRoot. Your first call to FindRoot is
FindRoot[{{-2.64486},-2.64486},{101000,{1000,101000}}]
If someone handed you that and asked you to find the root of that then what would you do?
There aren't any variables, it isn't a function of something that changes, it is just some nested constants.
Just for the very first one, what should the function be that you are trying to find a root of?
With that perhaps we can figure out what is going on.