Найти 2 корня уравнения - C (СИ)
Формулировка задачи:
Нужно найти 2 корня. Уравнение y1 = 3^(x-1) - 4 - x = 0;
На отрезке -5 2 должно быть 2 корня (-3.995 и 2.736)...
Что здесь не так?
double ur1(double x){ return pow(3, x-1)- 4 - x; } double pr1(double x){ return log(3) * pow(3, x-1) - 1; } int main(int argc, char *argv[]) { double x = 0, en = 0; double e = 0.001; int a, b; printf("Enter a, b: "); scanf("%d %d", &a, &b); en = abs(a - b); x = (double)b; int i = 1; do{ x = x - (ur1(x) / pr1(x)); printf("%d - %lf\n", i, x); en = abs(x - b); b = x; i = i+1; }while((abs(en)) > e); return 0; }
Решение задачи: «Найти 2 корня уравнения»
textual
Листинг программы
#include <stdio.h> #include <math.h> #include <locale.h> double y(double x) { return pow(3, x-1)- 4 - x; } double dy(double x) { return log(3.) * pow(3, x-1) - 1; } int main() { setlocale (LC_CTYPE, "Russian"); double a = -5., step = 1., e = 1.E-6; double x0, x1; int i; while (a < 3.) { i = 0; x0 = a; x1 = x0-y(x0)/dy(x0); printf("Точка входа х0 = %.1lf\n", x0); while (fabs(x1-x0)>e) { x0 = x1; x1 = x0-y(x0)/dy(x0); i++; } printf("\tКоличество итераций i = %3d\n\tПолученный корень х = %lf\n\n", i, x1); a += step; } getchar(); return 0; }
Объяснение кода листинга программы
В этом коде решается задача нахождения корней уравнения методом Ньютона.
- В функции y(x) и dy(x) определены функции для уравнения и его производной.
- В функции main() определены начальное приближение x0, шаг итерации step и требуемая точность e.
- Цикл while исполняется пока текущее значение переменной a меньше 3.
- На каждой итерации цикла происходит следующее:
- Переменная x0 принимает текущее значение a.
- Вычисляется приближение к корню x1 с помощью формулы Ньютона x1 = x0 - y(x0)/dy(x0).
- Если изменения x1 относительно x0 больше заданной точности e, то выполняется итерация.
- На каждой итерации значение переменной a увеличивается на шаг step.
- После каждой итерации выводится сообщение с текущими значениями x0, x1 и количеством итераций i.
- После завершения цикла while программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д