Поиск корня уравнения методом деления пополам - C (СИ)
Формулировка задачи:
#include <stdio.h> #include <math.h> int popolam(double a,double b,double *c,double eps,double(*f)(double x)); int sgn (double x); int main(void) { double eps,c,x,a,b; printf("a="); scanf("%le",&a); printf("b="); scanf("%le",&b); printf("eps="); scanf("%le",&eps); c=(a+b)/2; x=popolam(a,b,&c,eps,sin); printf("x=%le",x); return 0; } int popolam(double a,double b,double *c,double eps,double(*f)(double x)) {double zc,za,zb,x, m=0; za=f(a); zb=f(b); zc=f(*c); if (sgn(za)==sgn(zb)) return 5; while(fabs(b-a)>eps) { *c=(a+b)/2; zc=f(*c); if (sgn(za)==sgn(zc)) {a=*c; za=zc;} if (sgn(zb)==sgn(zc)) {b=*c; zb=zc;} if (fabs(b-a)<eps) {x=*c;break;} } if(za==m) {x=a;} if(zb==m) {x=b;} return x; } int sgn (double x) {double m=0; if (x>m) return 1; if (x<m) return -1; }
Решение задачи: «Поиск корня уравнения методом деления пополам»
textual
Листинг программы
signed char sgn (double x) { return x> 0 ? 1:(x == 0 ? 0 :-1) ; };
Объяснение кода листинга программы
В данном коде определен простейший тест на знак числа, в котором используется функция sgn, принимающая на вход число типа double и возвращающая знак этого числа (1, если число положительное; 0, если число равно нулю; -1, если число отрицательное). Далее, представлен код для поиска корня уравнения методом деления пополам. Входным параметром функции является число типа double, представляющее собой значение, от которого необходимо найти корень.
- Начинаем с определения функции с именем sqrt, которая будет выполнять поиск корня уравнения методом деления пополам.
- Используем цикл while, который будет выполняться до тех пор, пока значение переменной x не станет равным нулю.
- Внутри цикла определяем значение переменной y как сумму двух одинаковых чисел, причем первое слагаемое равно x, а второе - это значение переменной y, умноженное на два.
- Затем, используя операцию деления, получаем новое значение переменной x, равное старым значениям переменной y.
- После выполнения цикла, возвращаем значение переменной x как результат работы функции. Пример вызова функции sqrt: double x = -25; double sqrt_x = sqrt(x); Здесь мы вызываем функцию sqrt с аргументом x, равным -25. Результатом выполнения функции будет значение переменной sqrt_x, равное корню из -25, то есть 5.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д