Отделение корней графическим методом - 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.
Объяснение кода листинга программы
- Используется библиотека graphABC.
- Определена функция F, которая преобразует входное значение x в значение типа real.
- Объявлены переменные xn, xk, x, mx, my, e, x1, x0, y0, n, i, s.
- Заданы начальные значения для x и y.
- Задаются масштабы для x и y с помощью функций windowwidth, windowheight, и вычисления значений mx и my.
- Вычисляется центр графика.
- Задаются подписи осей X и Y.
- Вычисляется точность определения корня (e).
- Задается начальное значение для x, которое равно xn.
- Задается начальное значение для n, которое равно 0.
- Задается начальное значение для x1, которое равно 0.
- Задается начальное значение для F(x1), которое равно 0.
- Задается начальное значение для mx, которое равно (x0-30)/xk.
- Задается начальное значение для my, которое равно (y0-40)/F(xk).
- Вычисляется значение x1, когда abs(F(x))<0.0001.
- Вычисляется радиус окружности для x1.
- Устанавливается цвет шрифта на синий.
- Вычисляется высота окружности для x1.
- Выводится текст с координатами x1, y0, и текстом
x=
с помощью функции textout. - Выводится текст с координатами x1, y0, и текстом
sin(e^x)+3x=0
с помощью функции textout.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д