На заданном отрезке найти все корни уравнения - Free Pascal

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

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

На заданном отрезке найти все корни уравнения f(x)=0 с точностью exp: exp(x)-cos*cos*2-0.1=0 и привести графики,выполненные в табличном процессоре MS Excel. Помогите пожалуйста найти ошибки..или доделать задачу..
Листинг программы
  1. Program laba5;
  2. const h=0.1;
  3. var a,b,c,d,e,xn,xk,s:real;
  4. k:integer;
  5. function f(x:real):real;
  6. begin
  7. f:=exp(x)-cos*cos*x-0.1;
  8. end;
  9. begin
  10. repeat
  11. write ('a=');
  12. readln(a);
  13. write('b>a b=');
  14. readln(b);
  15. write ('0<e<1');
  16. readln(e);
  17. until (a<b) and (e>0) and (e<1);
  18. k:=0;
  19. c:=a;
  20. write ((xk+xn)/2:10:6);
  21. end;
  22. c:=d
  23. until c+h>b;
  24. if k=0 then
  25. writeln('корней нет');
  26. end.

Решение задачи: «На заданном отрезке найти все корни уравнения»

textual
Листинг программы
  1. uses crt;
  2. function F(x:real):real;
  3. begin
  4. F:=exp(x)-sqr(cos(x))-0.1;
  5. end;
  6. function Bisec(a,b,e:real):real;
  7. var x,c:real;
  8. begin
  9. repeat
  10. c:=(a+b)/2;
  11. if F(a)*F(c)<0 then b:=c
  12. else a:=c;
  13. until b-a<e;
  14. Bisec:=(a+b)/2;
  15. end;
  16.  
  17. var x,x1,x2,dx,x11,x12,eps:real;
  18.     i:integer;
  19. begin
  20. clrscr;
  21. x1:=-2;{интервал для поиска корней}
  22. x2:=1;
  23. dx:=0.1; {шаг для поиска интервалов}
  24. eps:=0.0001;{точность определения корней}
  25. x:=x1;
  26. i:=0;
  27. while x<=x2 do
  28.  begin
  29.   x11:=x;
  30.   x12:=x+dx;
  31.   if F(x11)*F(x12)<0 then{если знак на концах интервала разный}
  32.    begin
  33.     i:=i+1; {сть корень номер i}
  34.     writeln('X',i,'=',Bisec(x11,x12,eps):8:5);{находим его методом бисекции}
  35.    end;
  36.   x:=x+dx;
  37.  end;
  38. readln
  39. end.

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

  1. Начинается с объявления функций и переменных.
  2. Используется функция F, которая представляет собой функцию, которую нужно решить.
  3. Используется функция Bisec, которая используется для разбиения интервала на две части.
  4. Переменные x, a и b используются для хранения текущего значения, нижней и верхней границ интервала соответственно.
  5. Используются переменные dx, eps и i для хранения шага, точности и счетчика корней соответственно.
  6. Цикл while используется для перебора всех значений x в заданном интервале.
  7. Внутри цикла определяются значения x11 и x12, которые представляют собой границы текущего интервала.
  8. Если знак функции F(x11) и F(x12) разный, то это означает, что в этом интервале есть корень, и он находится с помощью функции Bisec.
  9. Корень и его значение выводятся на экран.
  10. После цикла программа завершается.

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


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

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

15   голосов , оценка 4.267 из 5

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

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

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