// PascalABC.Net var a,b,h,x,F:double; begin h:=0.1; Write('Введите через пробел границы интервала табудяции: '); Read(a,b); x:=a; while x<=b+(h/2) do begin F:=5*sin(x)+cos(sqr(x)); Writeln(x:8:5, F:10:5); x:=x+h end; end.
Замечание: В цикле while x<=b+(h/2) do прибавление половины шага гарантирует, что несмотря на погрешности представления чисел в компьютере, цикл будет выполнен и для конечной точки интервала.
Сначала надо найти аналитическое решение задачи. Определить координаты точек пересечения двух функций - это совместно решить уравнения, описывающего функции. Теперь можно составить программу, предусмотрев в ней анализ случаев D<0, D=0 и D>0.
uses Crt; var k,b,c,x1,x2,y1,y2,d:real; begin ClrScr; Write('Введите через пробел c,k,b: '); Read(c,k,b); d:=sqr(k)-4*(c-b); if d<0 then Writeln('Точек пересечения нет') else if d=0 then begin x1:=k/2; y1:=k*x1+b; Writeln('Координаты точки пересечения (',x1:0:4,',',y1:0:4,')') end else begin d:=sqrt(d); x1:=(k-d)/2; y1:=k*x1+b; x2:=(k+d)/2; y2:=k*x2+b; Writeln('Координаты точек пересечения:'); Writeln('(',x1:0:4,',',y1:0:4,'), (',x2:0:4,',',y2:0:4,')') end; ReadKey end.
var
a,b,h,x,F:double;
begin
h:=0.1;
Write('Введите через пробел границы интервала табудяции: ');
Read(a,b);
x:=a;
while x<=b+(h/2) do begin
F:=5*sin(x)+cos(sqr(x));
Writeln(x:8:5, F:10:5);
x:=x+h
end;
end.
Тестовое решение
Введите через пробел границы интервала табудяции: -2 3
-2.00000 -5.20013
-1.90000 -5.62379
-1.80000 -5.86440
-1.70000 -5.92684
-1.60000 -5.83346
-1.50000 -5.61565
-1.40000 -5.30670
-1.30000 -4.93671
-1.20000 -4.52977
-1.10000 -4.10302
-1.00000 -3.66705
-0.90000 -3.22714
-0.80000 -2.78468
-0.70000 -2.33876
-0.60000 -1.88732
-0.50000 -1.42822
-0.40000 -0.95986
-0.30000 -0.48165
-0.20000 0.00585
-0.10000 0.50078
0.00000 1.00000
0.10000 1.49912
0.20000 1.99255
0.30000 2.47355
0.40000 2.93432
0.50000 3.36604
0.60000 3.75911
0.70000 4.10342
0.80000 4.38888
0.90000 4.60613
1.00000 4.74766
1.10000 4.80906
1.20000 4.79062
1.30000 4.69887
1.40000 4.54780
1.50000 4.35930
1.60000 4.16228
1.70000 3.98981
1.80000 3.87408
1.90000 3.83921
2.00000 3.89284
2.10000 4.01825
2.20000 4.16975
2.30000 4.27455
2.40000 4.24355
2.50000 3.99181
2.60000 3.46597
2.70000 2.67145
2.80000 1.68892
2.90000 0.66844
3.00000 -0.20553
Замечание: В цикле while x<=b+(h/2) do прибавление половины шага гарантирует, что несмотря на погрешности представления чисел в компьютере, цикл будет выполнен и для конечной точки интервала.