Решить уравнение графически с заданной точностью - 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.

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

  1. Объявлены функции F1 и F2, которые принимают аргумент типа real и возвращают результат типа real. Они используются для построения графиков функций.
  2. Объявлены переменные a, b, mx, my, x0, y0, i, n, k, s, s1, которые используются для представления осей координат, масштабирования, построения графика и подписей.
  3. Инициализируются переменные a, b, x0, y0, mx, my, используя константы, чтобы задать диапазон и масштаб для осей координат.
  4. Строятся оси координат с помощью функции line.
  5. Строятся засечки на оси Y с помощью функции line.
  6. Строятся подписи оси Y с помощью функции outtextXY.
  7. Строятся засечки на оси X с помощью функции line.
  8. Строятся подписи оси X с помощью функции outtextXY.
  9. Строятся точки на графике с помощью функции putpixel.
  10. Если разница между F1(x) и F2(x) меньше 0.001, то рисуется заполненная окружность с помощью функции fillellipse.
  11. Переменная n увеличивается на 1 для каждого корня, который был отмечен на графике.
  12. Переменная k[n] сохраняет значение корня.
  13. Строки, представляющие корни, выводятся с помощью функции outtextXY.
  14. Строка, представляющая название графика, выводится с помощью функции outtextXY.
  15. Программа ожидает ввода пользователя с помощью функции readln.

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


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

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

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