Найти наименьшее значение функции y= sin(x) / (1+x) и значение аргумента, при котором оно получено, если x изменяется от 0 до 10 с шагом 0.1. Для найденного x подсчитать сумму членов ряда:Z=1+x+(x^2)/ 2! +…+ (x^10)/10! — Pascal(Паскаль)

uses crt,graph;
function F(x:real):real;
begin
F:=sin(x)/(1+x);
end;
var xn,xk,x,dx,y,ymn,ymx,xmn,z,t,mx,my:real;
    x1,y1:array[1..101] of real;//массивы для графика и файла
    m,i,gd,gm,x0,y0:integer;
    g:text;
    st:string;
begin
clrscr;
xn:=0;
xk:=10;
dx:=0.1;
assign(g,'file.txt');
rewrite(g);
xmn:=xn;
ymn:=F(xmn);
ymx:=ymn;
x:=xn;
m:=0;
while x<=xk+0.0001 do
 begin
  y:=F(x);
  m:=m+1;
  x1[m]:=x;//массив по х
  y1[m]:=y;//массив по у
  if y<ymn then
   begin
    ymn:=y;
    xmn:=x;//максимальное для мастаба графика
   end;
  if y>ymx then ymx:=y;
  x:=x+dx;
 end;
writeln(g,'Znachenia argumenta X:');//запись в файл
for i:=1 to m do
write(g,x1[i]:0:2,' ');
writeln(g,'');
writeln(g,'Znachenia functii Y:');
for i:=1 to m do
write(g,y1[i]:0:2,' ');
writeln(g,'');
writeln('Минимальное значение функции=',ymn:0:2,'  при х=',xmn:0:2);
writeln(g,'Minimalnoe znachenye functii=',ymn:0:2,'  pri х=',xmn:0:2);
{нахождение суммы}
z:=1;
t:=1;
for i:=1 to 10 do
 begin
  t:=t*xmn/i;
  z:=z+t;
 end;
write('Z=',z:0:2);
write(g,'Summa Z=',z:0:2);//запись в файл
close(g);
write('Press Enter...');
readln;
gd:=0;
initgraph(gd,gm,'');//переход в графический режим
x0:=20;//начало координат
y0:=getmaxY div 2;
mx:=(getmaxX-2*x0)/(xk-xn);//масштабы по осям
if ymx>abs(ymn) then my:=(y0-20)/ymx
else my:=(y0-20)/abs(ymn);
line(x0,y0,getmaxX-20,y0);//ось Х
outtextXY(getmaxX-15,y0-15,'X');
for i:=0 to 10 do
 begin
  line(x0+round(i*mx),y0+3,x0+round(i*mx),y0-3);
  str(i,st);
  outtextXY(x0+round(i*mx),y0+10,st);
 end;
line(x0,getmaxY-20,x0,20);//ось У
outtextXY(x0-15,10,'Y');
line(x0-3,y0-round(ymx*my),x0+3,y0-round(ymx*my));
str(ymx:0:2,st);
outtextXY(x0+5,y0-round(ymx*my),st);
line(x0-3,y0-round(ymn*my),x0+3,y0-round(ymn*my));
str(ymn:0:2,st);
outtextXY(x0+5,y0-round(ymn*my),st);
moveto(x0,y0-round(y1[1]*my));//график
for i:=1 to m-1 do
 begin
  setcolor(12);
  lineto(x0+round(x1[i]*mx),y0-round(y1[i]*my));
 end;
readln
end.

Leave a Comment

62 + = 69