Нужно нарисовать блок-схему по программе. program put; var a,b,x:real; begin write('введите a='); read(a); write('введите b='); read(b); if (a>0) and (a<>1) then write('x=',exp(b*ln(a))) else write('решения нет'); end.
Var n,m,osn: integer; function nmbdec(var n,osn: integer): integer; var nmb,l,s,k: integer; begin nmb:=0; s:=0; k:=n; l:=1; while k>0 do begin s:=k mod 10; k:=k div 10; nmb:=nmb+l*s; l:=l*osn; end; Result:=nmb; end; { конец функции} begin write('число: '); readln(n); write('квадрат какого числа: '); readln(m); osn:=10; while osn>=2 do begin osn:=osn-1; if nmbdec(n,osn)=sqr(nmbdec(m,osn)) then begin writeln('основание системы = ',osn); break; end; end; end.
function f(x: real): real; begin f := x * sqr(1 - x) end;
function gsc(a, b: real): real; {получение суммы для метода Гаусса} var p, q, s, s1, s2, s3, s4, s5: real; begin p := (b + a) / 2; q := (b - a) / 2; s1 := g10c1 * (f(p + q * g10x1) + f(p - q * g10x1)); s2 := g10c2 * (f(p + q * g10x2) + f(p - q * g10x2)); s3 := g10c3 * (f(p + q * g10x3) + f(p - q * g10x3)); s4 := g10c4 * (f(p + q * g10x4) + f(p - q * g10x4)); s5 := g10c5 * (f(p + q * g10x5) + f(p - q * g10x5)); s := s1 + s2 + s3 + s4 + s5; Result := s * (b - a) end;
function Gauss(a, b, eps, gs: real): real; {рекурсивная ф-ция подсчета с заданной точностью eps} {gs - интеграл на (a,b), получать заранее} var m, ia, ib: real; begin m := (a + b) / 2; ia := gsc(a, m); ib := gsc(m, b); if abs(ia + ib - gs) > eps then begin ia := gauss(a, m, eps / 2, ia); {рекурсия для первой половинки} ib := gauss(m, b, eps / 2, ib){рекурсия для второй половинки} end; Result := ia + ib end;
function Intg(a, b, eps: real): real; begin Result := Gauss(a, b, eps, gsc(a, b)); end;
var a, b, eps, y1, y2: real;
begin a := 0; b := 1; eps := 1e-6; y1 := Intg(a, b, eps); y2:=sqr(b)*(sqr(b)/4-2*b/3+0.5); writeln('Значение интеграла по методу Гаусса: ', y1:0:8); writeln('Значение интеграла по формуле: ', y2:0:8); writeln('Абсолютная погрешность составляет: ', abs(y2-y1):0:8); writeln('Относительная погрешность составляет: ', abs((y2-y1)/y1)*100:0:6,'%'); end.
Тестовое решение:
Значение интеграла по методу Гаусса: 0.08333337 Значение интеграла по формуле: 0.08333333 Абсолютная погрешность составляет: 0.00000004 Относительная погрешность составляет: 0.000044%
function nmbdec(var n,osn: integer): integer;
var nmb,l,s,k: integer;
begin
nmb:=0; s:=0;
k:=n; l:=1;
while k>0 do
begin
s:=k mod 10;
k:=k div 10;
nmb:=nmb+l*s;
l:=l*osn;
end;
Result:=nmb;
end;
{ конец функции}
begin
write('число: ');
readln(n);
write('квадрат какого числа: ');
readln(m);
osn:=10;
while osn>=2 do
begin
osn:=osn-1;
if nmbdec(n,osn)=sqr(nmbdec(m,osn)) then
begin
writeln('основание системы = ',osn);
break;
end;
end;
end.