Решить уравнение графически с заданной точностью - Free Pascal
Формулировка задачи:
Решить уравнение 2^х = 4х графически с точностью 0,1.
Решение задачи: «Решить уравнение графически с заданной точностью»
textual
Листинг программы
- uses graph;
- function F1(x:real):real;
- begin
- F1:=exp(ln(2)*x);
- end;
- function F2(x:real):real;
- begin
- F2:=4*x;
- end;
- var a,b,mx,my:real;
- x,x1,x2:real;
- x0,y0,i,n:integer;
- k:array[1..2] of real;{корни}
- s,s1:string;
- begin
- x0:=0;
- initgraph(x0,y0,'');
- a:=-2;
- b:=5;
- x0:=round(-a*getmaxX/(b-a));
- mx:=(x0-30)/-a;
- y0:=getmaxY div 2;
- my:=(y0-20)/32;
- line(0,y0,getmaxX,y0);{оси}
- line(x0,0,x0,getmaxY);
- for i:=1 to 5 do{максимальное количество засечек в одну сторону}
- begin
- line(x0-3,y0-round(i*my*10),x0+3,y0-round(i*my*10));{засечки на оси У}
- line(x0-3,y0+round(i*my*10),x0+3,y0+round(i*my*10));
- {подпись оси У}
- str(i*10,s);
- settextstyle(0,0,1);{горизонтальный шрифт}
- outtextXY(x0-35,y0-round(i*my*10),s);{соответственно засечкам}
- outtextXY(x0-40,y0+round(i*my*10),'-'+s);
- line(x0+round(i*mx),y0-3,x0+round(i*mx),y0+3); {засечки на оси Х}
- line(x0-round(i*mx),y0-3,x0-round(i*mx),y0+3);
- {подпись оси Х}
- str(i,s);
- outtextXY(x0+round(i*mx)+5,y0+10,s);
- outtextXY(x0-round(i*mx)+5,y0+10,'-'+s);
- end;
- {центр}
- outtextXY(x0-15,y0+10,'0');
- {подписи концов осей}
- outtextXY(getmaxX-10,y0-10,'X');
- outtextXY(x0+5,10, 'Y');
- {графики}
- x:=a;
- n:=0;;
- while x<=b do
- begin
- putpixel(x0+round(x*mx),y0-round(F1(x)*my),12);
- putpixel(x0+round(x*mx),y0-round(F2(x)*my),9);
- x:=x+0.001;
- if abs(F1(x)-F2(x))<0.001 then
- begin
- setcolor(10);
- setfillstyle(1,10);
- fillellipse(x0+round(x*mx),y0-round(F1(x)*my),3,3);
- n:=n+1;
- k[n]:=x;
- end;
- end;
- {название}
- setcolor(12);
- outtextXY(250,10,'y=2^x');
- outtextXY(250,30,'y=4x');
- outtextXY(250,50,'int.[-2;5]');
- {корни}
- setcolor(10);
- str(k[1]:0:1,s);
- outtextXY(250,y0+100,'x1='+s);
- str(k[2]:0:1,s1);
- outtextXY(250,y0+130,'x2='+s1);
- readln
- end.
Объяснение кода листинга программы
- Объявлены функции F1 и F2, которые принимают аргумент типа real и возвращают результат типа real. Они используются для построения графиков функций.
- Объявлены переменные a, b, mx, my, x0, y0, i, n, k, s, s1, которые используются для представления осей координат, масштабирования, построения графика и подписей.
- Инициализируются переменные a, b, x0, y0, mx, my, используя константы, чтобы задать диапазон и масштаб для осей координат.
- Строятся оси координат с помощью функции line.
- Строятся засечки на оси Y с помощью функции line.
- Строятся подписи оси Y с помощью функции outtextXY.
- Строятся засечки на оси X с помощью функции line.
- Строятся подписи оси X с помощью функции outtextXY.
- Строятся точки на графике с помощью функции putpixel.
- Если разница между F1(x) и F2(x) меньше 0.001, то рисуется заполненная окружность с помощью функции fillellipse.
- Переменная n увеличивается на 1 для каждого корня, который был отмечен на графике.
- Переменная k[n] сохраняет значение корня.
- Строки, представляющие корни, выводятся с помощью функции outtextXY.
- Строка, представляющая название графика, выводится с помощью функции outtextXY.
- Программа ожидает ввода пользователя с помощью функции readln.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д