Решить уравнение методом хорд - C (СИ)
Формулировка задачи:
Здравствуйте! Помогите, пожалуйста решить уравнение методом хорд.
Даны числа c=3, d=-3, n=30. Для каждого pi=c+i*h найти корень. Т.е. получается у меня будет 30 корней. Корень найти с точностью ε=0.001. Для каждого pi найти интервал [a, b].
Вот то, что я написала:
Совсем чуть-чуть. Не знаю, как дальше. Очень нужна срочно помощь
#include "stdlib.h" #include "stdio.h" #include "conio.h" float f(float x, float p) { 3*x-p*(5*x-3); } float ytochn(float a, float b, float e) { float x1, x2; do { if(a<0) x1 = b-(b-a/f(b)-f(a))*f(b); x2 = else x1 = a-(b-a/f(b)-f(a))*f(a); x2 = } while(fabs(x2-x1)>e); } float yr(float p) { int n, i; float x1, x2, x0, dx, xk, c, d, h; h = d-c/n; for(i=0;i<n;i++) p = c-i*h; if(f(x1)*f(x2) <0) a=x1; b=x2; }
Решение задачи: «Решить уравнение методом хорд»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <math.h> #define MAX_I 100000 int chord_method (double (*f)(double), double a, double b, double eps, double *x); double f (double x); static int count=0; double f (double x) { count++; return x*x+3*x-4; } int chord_method (double (*f)(double), double a, double b, double eps, double *x) { double fa, fb; int i; for (i=0; i < MAX_I; i++) { if ( fabs(b - a) < eps ) break; fa = f(a); fb = f(b); a = b - (b-a)*fb / (fb - fa); b = a - (a-b)*fa / (fa - fb); } if (i < MAX_I) { *x = b; return count; } return -1; } int main (void) { double a, b, eps, x; printf("Input a: "); scanf("%lf", &a); printf("Input b: "); scanf("%lf", &b); printf("Input eps: "); scanf("%lf", &eps); if ( chord_method(f, a, b, eps, &x) > 0 ) printf("Root: %lf\nIterations: %d\n", x, count); else printf("Bad luck, dude\n"); return 0; }
Объяснение кода листинга программы
- Код включает в себя функцию
chord_method
, которая реализует метод хорд для численного решения уравнений. - Функция
f
представляет собой функцию, которую нужно решить. В данном случае она возвращает значениеx*x+3*x-4
. - В функции
main
пользователю предлагается ввести значенияa
,b
иeps
. - Значения
a
иb
представляют собой начальные приближения для решения уравнения. - Значение
eps
определяет требуемую точность решения. - После ввода значений, вызывается функция
chord_method
с передачей в нее функцииf
,a
,b
иeps
в качестве аргументов, а также указанием адреса переменнойx
для возвращения результата. - Если функция
chord_method
вернула значение больше нуля, то это означает, что решение найдено и выводится на экран. - Если функция
chord_method
вернула значение меньше нуля, то выводится сообщение об неудачном решении.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д