мы этого не можем сделать, так как в каждом цикле мы увеличиваем t на dt, то есть значения t дискретные.
Если бы мы могли проверить каждое реальное число, то мы бы могли найти t, при которых Y(t)=0.
В приведенном фрагменте:
...
for(t=left;t<=right;t+=dt)
{
if(Y(t)*Y(t+dt)<0){
count++;
array1[count]=X(t);
array2[count]=Y(t);
}
}
...
решение находится с дискретом dt. При этом гарантируется лишь то, что функция меняет знак на интервале [t, t+dt], а не то, что она обращается в нуль.
В способе, который предложил
Алексей1153++, можно найти корни уравнения с любой заданной точностью, причем гораздо эффективнее, чем перебирая значения аргумента с мелким шагом, и точнее, чем дискретность шага.