igor78ru I igor78ru Регистрация 27 Июл 2013 Сообщения 92 Репутация 0 Спасибо 0 Монет 0 20 Апр 2016 #1 Задание: решить уравнение x-(1/(3+sin(3.6*x)))=0 методом итерации. Отрезок, содержащий корень [0;0,85]. Точность: 10^(-5) Программа, которую я написал: #include #include #include double f(double x) { return x-(1/(3+sin(3.6*x))); } int main() { float min=0,max=0.85; float eps = 1.e-5; double x0,x1; int iter; iter=0; x0=(min+max)/2.0; do { printf("x=%f",x1); x0=x1; x1=f(x0); iter= iter +1; } while(fabs(x0-x1)< eps); printf("Otvet:%f ",x1); printf("Iteration:%d",iter); } Но он выдает одно и тоже число. В чем ошибка может быть?
Задание: решить уравнение x-(1/(3+sin(3.6*x)))=0 методом итерации. Отрезок, содержащий корень [0;0,85]. Точность: 10^(-5) Программа, которую я написал: #include #include #include double f(double x) { return x-(1/(3+sin(3.6*x))); } int main() { float min=0,max=0.85; float eps = 1.e-5; double x0,x1; int iter; iter=0; x0=(min+max)/2.0; do { printf("x=%f",x1); x0=x1; x1=f(x0); iter= iter +1; } while(fabs(x0-x1)< eps); printf("Otvet:%f ",x1); printf("Iteration:%d",iter); } Но он выдает одно и тоже число. В чем ошибка может быть?
Егор1997 Е Егор1997 Регистрация 29 Сен 2013 Сообщения 91 Репутация 0 Спасибо 0 Монет 0 20 Апр 2016 #2 > x1=f(x0); Это какая-то фигня. Попробуй так: do { printf("x=%f ", x1); x0 = x1; x1 = x0 - f(x0); // в зависимости от функции, возможно придется прибавлять, а не вычитать iter= iter + 1; } while (fabs(x0-x1) > eps); Позитивный голос 0
> x1=f(x0); Это какая-то фигня. Попробуй так: do { printf("x=%f ", x1); x0 = x1; x1 = x0 - f(x0); // в зависимости от функции, возможно придется прибавлять, а не вычитать iter= iter + 1; } while (fabs(x0-x1) > eps);