Решить уравнение методом хорд - 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;
}

Объяснение кода листинга программы

  1. Код включает в себя функцию chord_method, которая реализует метод хорд для численного решения уравнений.
  2. Функция f представляет собой функцию, которую нужно решить. В данном случае она возвращает значение x*x+3*x-4.
  3. В функции main пользователю предлагается ввести значения a, b и eps.
  4. Значения a и b представляют собой начальные приближения для решения уравнения.
  5. Значение eps определяет требуемую точность решения.
  6. После ввода значений, вызывается функция chord_method с передачей в нее функции f, a, b и eps в качестве аргументов, а также указанием адреса переменной x для возвращения результата.
  7. Если функция chord_method вернула значение больше нуля, то это означает, что решение найдено и выводится на экран.
  8. Если функция chord_method вернула значение меньше нуля, то выводится сообщение об неудачном решении.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5
Похожие ответы