Введите пределы интегрирования по х: x0 и xn
Введите число разбиений n
Р Е З У Л Ь Т А Т Ы
N точн.знач. числ.реш. абс.ош. отн.ош.
100 9.818743 9.818766 0.000023 0.000002
Отлаженную программу необходимо «запомнить» под своим оригинальным именем на своем компьютере и, что очень желательно (во избежание затирания программы другим пользователем), на дискете или на «флэшке».
Пример 2. Вычислить криволинейный интеграл , где L –
окружность r = a cosφ (a = 2) .
program ivanov_kri1_2; {полярный}
Var
fi0,fin,dfi,dr,s,fii,fic,rc,dl,tr:real;
n,i:integer;
const a=2;
function piv(r,fi,dl:real):real; {подынтегральное выражение r dl}
Begin
piv:=r*dl;
end;
function put(fi:real):real; {кривая интегрирования acosφ}
Begin
put:= a*cos(fi);
end;
Begin
writeln (‘введите пределы интегрирования по фи: fi0 и fin’);
read(fi0,fin); {ввод fi0,fin }
{т.к. точное значение π/2 в паскале на «черном» экране ввести нельзя, то}
{‘перевводим’ пределы в программе, а требуемые значения вводим}
{ произвольно, например, 0, 0}
fi0:= –pi/2; fin:= pi/2;
tr:=2*a*a; (аналитическое решение)}
writeln (‘введите число разбиений n отрезка [fi0, fin]’);
read(n); {ввод n }
writeln (‘ Р Е З У Л Ь Т А Т Ы’);{впереди 20 пробелов}
writeln;
writeln (‘ n точн.знач. числ.реш. абс.ош. отн.ош’);{4,7,2,3,5 пробелов}
writeln;
dfi:=(fin–fi0)/n;
s:=0; {интегральная сумма}
fii:=fi0; {начальная точка частичных угловых интервалов}
fiс:=fi0–dfi/2; {серединная точка частичных угловых интервалов }
for i:=1 to n do
Begin
fiс:=fic+dfi;
rc:=put(fic); {значение подынтегр. функции в серединной точке}
dr:= put(fii+dfi) – put(fii); {приращение пути на угловом интервале }
dl:=sqrt(rc*dfi*rc*dfi+dr*dr); {≈длине дуги для частичного углового интервала}
s:= s+ piv(rc,fic,dl);
fii:=fii+dfi;
end;
writeln(n:6,tr:14:6,s:12:6,abs(s–tr):11:6,abs((s–tr)/tr):12:6);
readln;
readln;
end.
Окно вывода отлаженной программы должно иметь вид:
Введите пределы интегрирования по фи: fi0 и fin
Введите число разбиений n
Р Е З У Л Ь Т А Т Ы
N точн.знач. числ.реш. абс.ош. отн.ош.
100 8.000000 8.000219 0.000219 0.000027
Пример 3. Вычислить криволинейный интеграл первого рода от функции трех переменных , где L – дуга кривой, заданной параметрически x = t cos t, y = t sin t, z = t, 0 ≤ t ≤ π.
program ivanov_kri1_3; {параметрическое задание кривой интегрирования}
Var
t0,tn,dt,dl,dx,dy,dz,s,ti,tc,xi,yi,zi,xi1,yi1,zi1,xc,yc,zc,u,tr:real;
n,i:integer;
function piv(x,y,z,dl:real):real; {подынтегральное выражение}
Begin
piv:=(5*z–2*sqrt(x*x+y*y))*dl;
end;
procedure put(t:real; var x,y,z:real); {кривая интегрирования}
Begin
x:= t*cos(t);
y:= t*sin(t);
z:= t;
end;
Begin
writeln (‘введите пределы интегрирования по t: t0 и tn’);
read(t0,tn); {ввод t0,tn }
{т.к. точное значение π в паскале на «черном» экране ввести нельзя, то}
{‘перевводим’ пределы в программе, а требуемые значения вводим}
{ произвольно, например, 0, 0}
t0:= 0;
tn:= pi;
tr:=sqrt((2+pi*pi)*(2+pi*pi)*(2+pi*pi))–2*sqrt(2); (аналитическое решение)}
writeln (‘введите число разбиений n отрезка [t0, tn]’);
read(n); {ввод n }
writeln ( ‘ Р Е З У Л Ь Т А Т Ы’); {впереди 13 пробелов}
writeln;
writeln (‘ n числ.реш.’); {5,7 пробелов}
writeln;
dt:=(tn–t0)/n;
s:=0; {интегральная сумма}
ti:=t0; {начальная точка частичных отрезков}
tс:=t0–dt/2; {серединная точка частичных отрезков }
for i:=1 to n do
Begin
tс:=tc+dt;
put(tc,xc,yc,zc); {значения подынтегр. функции в серединной точке отрезка}
put(ti,xi,yi,zi); {значения подынтегр. функции в начальной точке отрезка}
put(ti+dt,xi1,yi1,zi1); {значения подынтегр. функции в конечной точке отрезка}
dx:= xi1–xi;
dy:= yi1–yi;
dz:= zi1–zi;
dl:=sqrt(dx*dx+dy*dy+dz*dz); {≈длине дуги}
s:= s+ piv(xc,yc,zc,dl);
ti:=ti+dt;
end;
writeln(n:7, s:14:6);
writeln(‘аналитическое решение tr=’, tr:10:6);
writeln;
writeln(‘ошибка метода’);
writeln(‘абсолютная’, abs(s–tr):18:6);
writeln(‘относительная’, abs((s–tr)/tr):15:6);
readln;
readln;
end.
Окно вывода отлаженной программы должно иметь вид: