-
-
:
:
:
- 2014
腅................ 3
5
. 8
. 11
. 13
腅... 15
16
Program 8;
var
x1,x2,x3,xshtr,xm,Fm,a1,a2: real;
function
f(x:real):real;
begin
f:=x*x;
end;
begin
Ex:=0.001;
Ef:=0.001;
dx:=1;
x1:=5;
while abs(Fm-F(xshtr))>Ef do
begin
while abs(xm-xshtr)>Ex do
begin
x2:=x1+dx;
if F(x1)>F(x2) then x3:=x1+2*dx else x3:=x1-dx;
if F(x1)<F(x2)
then if F(x1)<F(x3)
then
begin
Fm:=F(x1);
xm:=x1;
end
else
begin
Fm:=F(x3);
xm:=x3;
end
else if F(x2)<F(x3)
then
begin
Fm:=F(x2);
xm:=x2;
end
else
begin
Fm:=F(x3);
xm:=x3;
end;
a1:=(F(x2)-F(x1))/(x2-x1);
a2:=(1/(x3-x2))*((F(x3)-F(x1))/(x3-x1)-(F(x2)-F(x1))/(x2-x1));
xshtr:=(x2+x1)/2-(a1/(2*a2));
if (F(xm)<F(xshtr)) then x1:=xm else x1:=xshtr;
end;
end;
writeln('xmin=',xm);
end.
Program 9;
Var
L,x,y,x1,y1,x0,y0,dx,dy,Ex,Ey,E,sign:real;
function f(x,y:real):real;
begin
f:=sqr(x)+sqr(y);
end;
begin
L:=1;
sign:=-1;
x0:=100;
y0:=100;
E:=0.0001;
Ex:=0.0001;
Ey:=0.0001;
while L>E DO
begin
dx:=0.1;
y:=y0;
x:=x0;
while abs(dx)>Ex DO
begin
x1:=x+dx;
if f(x1,y)<f(x,y) then
x:=x1
else
dx:=-dx/2;
end;
writeln(x,y,f(x,y));
dy:=0.1;
y:=y0;
while abs(dy)>Ey DO
begin
y1:=y+dy;
if f(x,y1)<f(x,y) then
y:=y1
else
dy:=-dy/2;
end;
writeln(x,y,f(x,y));
L:=sqrt(sqr(x1-x0)+sqr(y1-y0));
y0:=y1;
x0:=x1;
end;
writeln(x1,y1,f(x1,y1));
readln;
end.
Program A10;
type
vector=array[1..N] of real;
var
x0,x,x2:vector;
dx,S,L:real;
i,j:integer;
function
F(x:vector):real;
var
SFunct:real;
iFunct:integer;
begin
SFunct:=0;
for iFunct:=1 to N do SFunct:=SFunct+sqr(x[i]*x[i]);
F:=SFunct+1000;
end;
begin
|
|
N:=3;
e:=0.001;
ex:=0.001;
dx0:=1;
for i:=1 to N do x0[i]:=-10;
L:=10;
while abs(L)>=E do
begin
for i:= 1 to N do x[i]:=x0[i];
i:=1;
while i<=N do
begin
dx:=dx0;
while abs(dx)>=Ex do
begin
for j:= 1 to N do x2[j]:=x0[j];
x2[i]:=x0[i]+dx;
if F(x0)>F(x2)
then
begin
x0[i]:=x2[i];
end
else
begin
dx:=-dx/2;
end;
end;
i:=i+1;
end;
S:=0;
for i:=1 to N do
begin
S:=S+(x0[i]-x[i])*(x0[i]-x[i]);
end;
L:=sqrt(S);
end;
for i:=1 to N do writeln('xmin[',i,']=',x0[i],' ');
end.
Program A11;
var
t,t0,tp,V,V0,V1,F,m:real;
begin
dtp=0.5;
dt=0.0001;
tmax=5.0;
t0:=0;
V0:=0;
F:=1;
m:=1;
tp:=0;
t:=t0;
V:=V0;
while t<tmax do
begin
V1:=F/m;
V:=V+V1*dt;
t:=t+dt;
if t>=tp then
begin
writeln('t=',t,' V=',V);
tp:=tp+dtp;
end;
end;
end.