Нахождение корня тремя методами - C (СИ)

Узнай цену своей работы

Формулировка задачи:

нужно создать программу нахождения корня нелинейного уравнения методами хорд,касательных,итераций в общем виде?)помогите пожалуйста

Решение задачи: «Нахождение корня тремя методами»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <math.h>
  4. int vibir;
  5.  
  6. float f(float x)
  7. { if(vibir==2)
  8.     return tan(0.55*x+0.1)-pow(x,2);
  9.     else
  10.     return pow(x, 3)-2* pow(x, 2)+7*x+3;
  11. }
  12.  
  13. float f1(float x)
  14. {  if(vibir==2)
  15.     return (0.55)/(pow(cos(0.55*x+0.1), 2))-2*x;
  16.     else
  17.     return (3*pow(x, 2)-4*x+7);
  18. }
  19.  
  20. float f2(float x)
  21. { if(vibir==2)
  22.      return ((0.605*tan(0.55*x+0.1))/(pow(cos(0.55*x+0.1),2)))-2;
  23.     else
  24.     return (6*x-4);
  25. }
  26.  
  27. int main()
  28. {
  29.   int k=0;
  30.   float a, b, c, d, e, e1=0, z,x, x1, x2, y1, y2, fa, fc;
  31.   bool flag=true;
  32.   printf("Vuberit` integral:\n");
  33.   printf ( "1 -- pow(x, 3)-2* pow(x, 2)+7*x+3 \n");
  34.   printf ( "2 -- tan(0.55*x+0.1)-pow(x,2) \n");
  35.   scanf("%d", &vibir);
  36.   if (vibir==2)
  37.   {a=0.6; b=0.8; e=0.001;}
  38.   else
  39.   { a=-1; b=0;}
  40.   e=0.001;
  41.  
  42.  
  43.              // metod kombin
  44. k=0; flag=true;
  45.   fa=f1(a);
  46.   fc=f2(a);
  47.   if ((fa*fc)>0)
  48.   { x2=a; d=b; y2=b;}
  49.   else
  50.   {x2=b; d=a; y2=a; }
  51.   do
  52.   { k=k++;
  53.       x1=x2;
  54.       y1=y2;
  55.       x2=d-f(d)*((x1-d)/(f(x1)-f(d)));
  56.       y2=y1-f(y1)/f1(y1);
  57.       e1=fabs(x2-y2);
  58.       if (e1<=e)
  59.      { z=(x2+y2)/2; flag=false;}
  60.   }
  61.   while (flag);
  62.   printf("kombinovany metod:     z=%f\n", z);
  63.   printf("kilkist` iteraciy:     k=%d\n\n", k);
  64.  
  65.              // metod prostuh iteraciy
  66.  
  67.    k=0; flag=true;
  68.   x1=(a+b)/2;
  69.   do
  70.   {
  71.       k=k++;
  72.       x=x1;
  73. printf("x1=%f", x1);
  74. x1=x-1/(50*f(x)*(exp(x),-2));
  75.       e1=fabs(x1-x);
  76.       z=x1;
  77.   }
  78.       while(e1<=e);
  79.   printf("metod prostuh iteraciy:     x1=%f\n", x1);
  80.   printf("kilkist` iteraciy:    k=%d\n", k);
  81.  
  82. getch();
  83. }

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

  1. Объявлены переменные:
    • vibir (тип int)
    • a, b, c, d, e, e1, z, x, x1, x2, y1, y2, fa, fc (тип float)
    • k (тип int)
    • flag (тип bool)
  2. В функции main() выполняется следующее:
    • Выводится приветствие и два варианта для выбора метода поиска корня.
    • Переменная vibir инициализируется значением 0.
    • Если выбран второй метод, то выполняется инициализация переменных a, b, e.
    • Запускается цикл do-while, который выполняется до тех пор, пока флаг не станет false.
    • В каждой итерации цикла выполняется:
      • Вычисление значения функции f1(x) и f2(x) для текущего значения x.
      • Если значения f1(x) и f2(x) имеют одинаковый знак, то выполняется вычисление нового значения x2 и y2.
      • Если значения f1(x) и f2(x) имеют разные знаки, то выполняется вычисление нового значения x2 и y2.
      • Вычисление значения e1, которое представляет разницу между x2 и y2.
      • Если e1 меньше или равно e, то выполняется вычисление нового значения z.
    • После завершения цикла выводится значение z и количество итераций.
  3. В функции main() также выполняется второй метод поиска корня - метод простых итераций.
    • Запускается цикл do-while, который выполняется до тех пор, пока значение e1 не станет меньше или равно e.
    • В каждой итерации цикла выполняется:
      • Вычисление значения x1.
      • Вычисление нового значения x1 на основе формулы x1 = x - 1/(50f(x)(exp(x),-2)).
      • Вычисление значения e1.
      • Если e1 меньше или равно e, то выполняется вычисление нового значения z.
    • После завершения цикла выводится значение z и количество итераций.

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


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

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

12   голосов , оценка 4.083 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы