AZelensky
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Тогда ещё вопрос по самой первой задаче: Составить программу на языке Turbo Pascal 7.0 вычисления значения интеграла на интервале [a, b] для функции, заданной графически. Значение интеграла вычислить приближённо по итерационной формуле левых прямоугольников: http://cs412816.vk.me/v412816242/5d7c/nWrDNMk4X5U.jpg (1) где h=(b-a)/n - величина шага между двумя соседними точками разбиения интервала интегрирования; fi = f(xi) - значение функции в точке xi = a+h(i-1); i = 1,2,...n. Вычисления закончить при выполнении условия | In-I2n | < e, где e > 0 - достаточно малое значение, задаваемое пользователем (точность вычислений). Здесь In, I2n - значения интеграла, вычисленные по (1) при количестве интервалов разбиения n и 2n соответственно. ---------------------------------------------------------------------------------------------------------------------------- Численные значения всех величин, участвующих в вычислениях, считать параметрами программы, и определить их путём ввода. -------------------------------------------------------------------------------------------------------------------------------- Варианты задачи №1: http://cs412816.vk.me/v412816242/5d83/SkEwROaxjwg.jpg Меня очень интересует "-a" т.к. это численная величина и должна быть определена путём ввода. Вот код без функций: Код: {$I-} {$N+} USES CRT; Var a, b, x, y, h, e, ip, ic: real; i, n: integer; Begin CLRSCR; TextColor(WHITE); write('Enter a: '); read(a); WHILE IOResult <> 0 do begin TextColor(RED); writeln('ERROR! You entered CHAR!'); TextColor(WHITE); write('Enter a: '); read(a); end; write('Enter b: '); read(b); WHILE IOResult <> 0 do begin TextColor(RED); writeln('ERROR! You entered CHAR!'); TextColor(WHITE); write('Enter b: '); read(b); end; write('Enter accuracy: '); readln(e); WHILE IOResult <> 0 do begin TextColor(RED); writeln('ERROR! You entered CHAR!'); TextColor(WHITE); write('Enter accuracy: '); read(e); end; ic:= 0; n:= 16; h:= (b-a) / n; for i:=0 to n-1 do begin x:=a+i*h; if x < -pi/2 then y:= (x-a) / (pi/2+a) else if x < pi/2 then y:= sin(x) else y:= 1; ic:=ic+y; end; ic:= ic * h; REPEAT ip:=ic; ic:=0; For i:=0 to n-1 do begin x:= a + i * h + h / 2; if x < -pi/2 then y:= (x-a) / (pi/2+a) else if x < pi/2 then y:= sin(x) else y:= 1; ic:= ic+y; end; ic:= (ic * h + ip) / 2; n:= n * 2; h:= (b-a) / n; UNTIL abs(ic - ip) < e; write('Integral = ', ic:6:6); ReadLN; end. |