Documentos de Académico
Documentos de Profesional
Documentos de Cultura
"
# $
&
'
restart;
Digits:=12;
Digits := 12
) *+
(1
deq:=D(y)(x)=-5*y(x)+5*x^2+2*x;
deq := D y x = 5 y x
5x
2x
(2
Cinic:=y(0)=1;
Cinic := y 0 = 1
(3
Sol:=dsolve({deq,Cinic},y(x));
2
Sol := y x = x
5x
(4
F:=(x,y)->-5*y+5*x^2+2*x;
F := x, y
a:=0;
5y
5 x2
2x
(5
b:=1;
a := 0
b := 1
) -* .
(6
!
"#
$
h:=0.01;
N:=floor((b-a)/h);
"
h := 0.01
N := 100
(7
"#
#%
&
'
)* +
'
M:=array(1..N+2,1..4);
x:=array(1..N+2);
y_exacta:=array(1..N+2);
u_AM:=array(1..N+2);
Error_AM:=array(1..N+2);
M := array 1 ..102, 1 ..4,
x := array 1 ..102,
y_exacta := array 1 ..102,
u_AM := array 1 ..102,
Error_AM := array 1 ..102,
. ' /
,
x[1]:=a;
u_AM[1]:=1;
)
#%
,
.
(8
2
)/
x1 := 0
u_AM1 := 1
for i from 2 to 4 do
x[i]:=x[1]+(i-1)*h;
K1:=h*F(x[i-1],u_AM[i-1]);
K2:=h*F(x[i-1]+(h/2),u_AM[i-1]+(K1/2));
(9
K3:=h*F(x[i-1]+(h/2),u_AM[i-1]+(K2/2));
K4:=h*F(x[i],u_AM[i-1]+K3);
u_AM[i]:=u_AM[i-1]+(1/6)*(K1+2*K2+2*K3+K4);
od:
2
&
%
0
for i from 5 to N+1 do
x[i]:=x[1]+(i-1)*h;
2
W:=F(x[i-4],u_AM[i-4]);
W1:=F(x[i-3],u_AM[i-3]);
W2:=F(x[i-2],u_AM[i-2]);
W3:=F(x[i-1],u_AM[i-1]);
u_AMasterisco[i]:=u_AM[i-1]+(h/24)*(55*W3-59*W2+37*W1-9*W);
W4:=F(x[i],u_AMasterisco[i]);
u_AM[i]:=u_AM[i-1]+(h/24)*(9*W4+19*W3-5*W2+W1);
od:
) 3*
,
&
Fsol:=x->x^2+exp(-5*x);
Fsol := x
x2
5x
(10
x[1]:=a;
y_exacta[1]:=1;
x1 := 0
y_exacta1 := 1
for i from 2 to N+1 do
x[i]:=x[i-1]+h;
y_exacta[i]:=Fsol(x[i]);
od:
(11
"
M[1,1]:='x[i]':
M[1,2]:='Sol._exacta':
M[1,3]:='Sol._Predictor-Corrector':
M[1,4]:='Error_Predictor-Corrector':
for i from 2 to N+1 do
M[i,1]:=x[i-1];
M[i,2]:=y_exacta[i-1];
M[i,3]:=u_AM[i-1];
M[i,4]:=abs(M[i,2]-M[i,3]);
od:
print(M);
xi
Sol._exacta
Sol._Predictor
Corrector Error_Predictor
Corrector
0.01 0.951329424501
0.951329427344
2.843 10-9
0.02 0.905237418036
0.905237423458
5.422 10
-9
0.03 0.861607976425
0.861607984180
7.755 10
-9
0.04 0.820330753078
0.820330751382
1.696 10
-9
0.05 0.781300783071
0.781300772914
1.0157 10
0.06 0.744418220682
0.744418202879
1.7803 10-8
0.07 0.709588089719
0.709588065037
2.4682 10
-8
0.08 0.676720046036
0.676720015188
3.0848 10
-8
0.09 0.645728151622
0.645728115268
3.6354 10
-8
0.10 0.616530659713
0.616530618464
4.1249 10
-8
0.11 0.589049810380
0.589049764800
4.5580 10
-8
0.12 0.563211636094
0.563211586703
4.9391 10
-8
0.13 0.538945776761
0.538945724039
5.2722 10
-8
0.14 0.516185303791
0.516185248181
5.5610 10
-8
0.15 0.494866552741
0.494866494650
5.8091 10
-8
0.16 0.474928964117
0.474928903919
6.0198 10
-8
0.17 0.456314931949
0.456314869987
6.1962 10
-8
0.18 0.438969659741
0.438969596331
6.3410 10
-8
0.19 0.422841023455
0.422840958886
6.4569 10
-8
0.20 0.407879441171
0.407879375707
6.5464 10
-8
-8
) )* 4
&
!"
'
'
Xmin_exacta:=0.377889066588;
Ymin_exacta:=0.293955773283;
"
Xmin_exacta := 0.377889066588
Ymin_exacta := 0.293955773283
(13
Xmin_AdamsMoulton := 0.38
Ymin_AdamsMoulton := 0.293968563008
(14
'
2
for i from 2 to N+1 do
if u_AM[i]<u_AM[i-1] then
Xmin:=x[i];
Ymin:=u_AM[i];
fi;
od;
Xmin_AdamsMoulton:=Xmin;
Ymin_AdamsMoulton:=Ymin;
,
(
A:=array(1..3,1..4);
A := array 1 ..3, 1 ..4,
A[1,1]:='TABLA_COMPARATIVA':
A[1,2]:='Sol._exacta':
A[1,3]:='Met._Adams-Bashforth':
A[1,4]:='Error_Adams-Bashforth':
A[2,1]:='Xmin':
A[3,1]:='Ymin':
A[2,2]:=Xmin_exacta:
A[3,2]:=Ymin_exacta:
A[2,3]:=Xmin_AdamsMoulton:
A[3,3]:=Ymin_AdamsMoulton:
A[2,4]:=abs(Xmin_exacta-Xmin_AdamsMoulton):
A[3,4]:=abs(Ymin_exacta-Ymin_AdamsMoulton):
(15
print(A);
TABLA_COMPARATIVA
Sol._exacta
Met._Adams
Bashforth Error_Adams
Bashforth
Xmin
0.377889066588
0.38
0.002110933412
Ymin
0.293955773283
0.293968563008
0.000012789725
(16