Решить уравнение графически с заданной точностью - Free Pascal

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

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

Решить уравнение 2^х = 4х графически с точностью 0,1.

Решение задачи: «Решить уравнение графически с заданной точностью»

textual
Листинг программы
  1. uses graph;
  2. function F1(x:real):real;
  3. begin
  4. F1:=exp(ln(2)*x);
  5. end;
  6. function F2(x:real):real;
  7. begin
  8. F2:=4*x;
  9. end;
  10. var a,b,mx,my:real;
  11.     x,x1,x2:real;
  12.     x0,y0,i,n:integer;
  13.     k:array[1..2] of real;{корни}
  14.     s,s1:string;
  15. begin
  16. x0:=0;
  17. initgraph(x0,y0,'');
  18. a:=-2;
  19. b:=5;
  20. x0:=round(-a*getmaxX/(b-a));
  21. mx:=(x0-30)/-a;
  22. y0:=getmaxY div 2;
  23. my:=(y0-20)/32;
  24. line(0,y0,getmaxX,y0);{оси}
  25. line(x0,0,x0,getmaxY);
  26. for i:=1 to 5 do{максимальное количество засечек в одну сторону}
  27.  begin
  28.   line(x0-3,y0-round(i*my*10),x0+3,y0-round(i*my*10));{засечки на оси У}
  29.   line(x0-3,y0+round(i*my*10),x0+3,y0+round(i*my*10));
  30.   {подпись оси У}
  31.   str(i*10,s);
  32.   settextstyle(0,0,1);{горизонтальный шрифт}
  33.   outtextXY(x0-35,y0-round(i*my*10),s);{соответственно засечкам}
  34.   outtextXY(x0-40,y0+round(i*my*10),'-'+s);
  35.   line(x0+round(i*mx),y0-3,x0+round(i*mx),y0+3); {засечки на оси Х}
  36.   line(x0-round(i*mx),y0-3,x0-round(i*mx),y0+3);
  37.   {подпись оси Х}
  38.   str(i,s);
  39.   outtextXY(x0+round(i*mx)+5,y0+10,s);
  40.   outtextXY(x0-round(i*mx)+5,y0+10,'-'+s);
  41.  end;
  42. {центр}
  43. outtextXY(x0-15,y0+10,'0');
  44. {подписи концов осей}
  45. outtextXY(getmaxX-10,y0-10,'X');
  46. outtextXY(x0+5,10, 'Y');
  47. {графики}
  48. x:=a;
  49. n:=0;;
  50. while x<=b do
  51.  begin
  52.   putpixel(x0+round(x*mx),y0-round(F1(x)*my),12);
  53.   putpixel(x0+round(x*mx),y0-round(F2(x)*my),9);
  54.   x:=x+0.001;
  55.   if abs(F1(x)-F2(x))<0.001 then
  56.    begin
  57.     setcolor(10);
  58.     setfillstyle(1,10);
  59.     fillellipse(x0+round(x*mx),y0-round(F1(x)*my),3,3);
  60.     n:=n+1;
  61.     k[n]:=x;
  62.    end;
  63.  end;
  64. {название}
  65. setcolor(12);
  66. outtextXY(250,10,'y=2^x');
  67. outtextXY(250,30,'y=4x');
  68. outtextXY(250,50,'int.[-2;5]');
  69. {корни}
  70. setcolor(10);
  71. str(k[1]:0:1,s);
  72. outtextXY(250,y0+100,'x1='+s);
  73. str(k[2]:0:1,s1);
  74. outtextXY(250,y0+130,'x2='+s1);
  75. readln
  76. 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

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

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

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