Отделение корней графическим методом - Pascal ABC

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

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

Здравствуйте! Нужно написать программу,на Паскале, для отделения корней графическим методом с выводом графика. Вот пример кода для метода хорд
В прикрепленных файлах - лежит наглядный пример моего графика.

Решение задачи: «Отделение корней графическим методом»

textual
Листинг программы
uses graphABC;
function F(x:real):real;
begin
F:=sin(exp(x))+3*x;
end;
var xn,xk,x,mx,my,e,x1:real;
    x0,y0,n,i:integer;
    s:string;
begin
xn:=-1;//интервал по Х
xk:=1;
x0:=windowwidth div 2;//начало координат
y0:=windowheight div 2;
mx:=(x0-30)/xk;//масштаб по Х
my:=(y0-40)/F(xk);//масштаб по Y
line(0,y0,windowwidth,y0);//оси
line(x0,0,x0,windowheight);
for i:=1 to 20 do//разбивка осей координат
  begin
    line(x0+round(i*mx/10),y0-3,x0+round(i*mx/10),y0+3); //засечки на оси Х
    line(x0-round(i*mx/10),y0-3,x0-round(i*mx/10),y0+3);
    line(x0-3,y0+round(i*my),x0+3,y0+round(i*my)); //засечки на оси Y
    line(x0-3,y0-round(i*my),x0+3,y0-round(i*my));
    if i mod 2=0 then
     begin
    //подпись оси Х
      str(i/10:0:1,s);
      textout(x0+round(i*mx/10),y0+10,s);
      textout(x0-round(i*mx/10),y0+10,'-'+s);
     end;
    //подпись оси Y
    textout(x0-25,y0-round(i*my),inttostr(i));
    textout(x0-20,y0+round(i*my),inttostr(-i));
  end;
//центр
textout(x0+5,y0+10,'0');
//подписи концов осей
textout(windowwidth-15,y0-20,'X');
textout(x0+5,10, 'Y');
//график
x:=xn;
e:=0.0001;//точность определения корня
n:=0;
while x<=xk do
 begin
  setpixel(x0+round(x*mx),y0-round(F(x)*my),clRed);
  if abs(F(x))<0.0001 then  x1:=x;
  x:=x+e;
 end;
setbrushcolor(clBlue);
circle(x0+round(x1*mx),y0-round(F(x1)*my),3);
str(x1:0:4,s);
setbrushstyle(bsClear);
setfontsize(12);
setfontcolor(clBlue);
textout(100,60,' x= '+s);
setfontcolor(clRed);
textout(100,20,'sin(e^x)+3x=0');
end.

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

  1. Используется библиотека graphABC.
  2. Определена функция F, которая преобразует входное значение x в значение типа real.
  3. Объявлены переменные xn, xk, x, mx, my, e, x1, x0, y0, n, i, s.
  4. Заданы начальные значения для x и y.
  5. Задаются масштабы для x и y с помощью функций windowwidth, windowheight, и вычисления значений mx и my.
  6. Вычисляется центр графика.
  7. Задаются подписи осей X и Y.
  8. Вычисляется точность определения корня (e).
  9. Задается начальное значение для x, которое равно xn.
  10. Задается начальное значение для n, которое равно 0.
  11. Задается начальное значение для x1, которое равно 0.
  12. Задается начальное значение для F(x1), которое равно 0.
  13. Задается начальное значение для mx, которое равно (x0-30)/xk.
  14. Задается начальное значение для my, которое равно (y0-40)/F(xk).
  15. Вычисляется значение x1, когда abs(F(x))<0.0001.
  16. Вычисляется радиус окружности для x1.
  17. Устанавливается цвет шрифта на синий.
  18. Вычисляется высота окружности для x1.
  19. Выводится текст с координатами x1, y0, и текстом x= с помощью функции textout.
  20. Выводится текст с координатами x1, y0, и текстом sin(e^x)+3x=0 с помощью функции textout.

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


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

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

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