по информатике дали задание. Решение нелинейного уравнения (конкретного уравнения) методом би секции. Мы пишем на языке Си. У меня есть готовый код и есть проблема. Код нужно немного доработать. Также нужно на языке си построить график последовательного приближения Корней. (Получается, значения корня от количества итераций) первый курс. sin(ln(x)) - cos(ln(x)) + 2·ln(x) = 0 Известно, что в диапазоне [1;3] точно есть корень. С клавиатуры вводится диапазон, погрешность. На выходе программа должна выдавать диапазон (меняющийся), текущее приближение корня, текущую погрешность, в конце корень и количество итераций. Так же нужно построить график приближения корней (на языке си)
свой готовый код:
#include #include // Функция, для которой ищем корень double f(double x) { return sin(log(x)) - cos(log(x)) + 2 * log(x); } int main() { double a, b, epsilon; // Ввод диапазона и погрешности с клавиатуры printf(" Введите левую границу диапазона: "); scanf("%lf", &a); printf(" Введите правую границу диапазона: "); scanf("%lf", &b); printf(" Введите погрешность: "); scanf("%lf", &epsilon); // Проверка наличия корня на заданном интервале if (f(a) * f(b) > 0) { printf(" На данном интервале нет корней уравнения "); return 1; } printf(" Текущее приближение корня: "); printf("------------------------------------- "); // Вычисление корня методом бисекций while ((b - a) >= epsilon) { double c = (a + b) / 2; // Вывод текущего приближения корня printf(" %.20f ", c); if (f(c) == 0.0) { break; } else if (f(c) * f(a) < 0) { b = c; } else { a = c; } } printf("------------------------------------- "); // Вывод найденного корня printf(" Корень уравнения: %.20f ", (a + b) / 2); return 0; }