Sunteți pe pagina 1din 23

> #Ejecutar esta lnea para continuar.

#Necesitamos cargar los paquetes "plots" y "student".


restart;with(plots):with(student):
L := proc(xvals::list,k::nonnegint,x)
local v,xvalsdelete;
if k+1 > nops(xvals) then
ERROR(`error`)
fi;
xvalsdelete := [op(1..k,xvals),op(k+2..nops(xvals),xvals)];
if member(xvals[k+1], xvalsdelete) then
ERROR(`error`)
fi;
mul((x-v)/(xvals[k+1]-v),v=xvalsdelete);
end:
lagrange := proc(xvals::list, yvals::list, x)
local m,n,k;
n := nops(xvals);
m := nops(yvals);
if n <> m then
ERROR(`error`)
fi;
add(L(xvals,k-1,x)*yvals[k],k=1..n);
end:
printf("Cargadas las libreras necesarias.\n");
Cargadas las libreras necesarias.

> # Pulsa enter para continuar

! "
#$ ! %&'($) '

* *'
"

"
#

!
=

"
=

"

-#$

& ' * *'(

.#$

& ' * *'+'(

/#$

' +

0#$

!
!

( %

+ ( &

& ' *

! %&'+,($) ' * *'* *,

"

1#$

& ' *'+'% ##"( &


( " )

2#$

&

-+'(

"

3#$

.#$
/#$

,-

&4'5+##+' 6+4,5+###+, 6+'( +


(!'" "! )
( '" " )

5#$

-#$

&4'5+##+' 6+7+'( +
(!'" "! )

8#$

#$

$'

"

!"

( !' " " ! )

&!+4'5+##+' 6(
!

. & ' +9

. & ' +9

+ % ## (
/0!-1

&

* &'(+ !* +
#

*-&'(+ !*-+###+
*

7&'(+ !*7+

+ !(

0#$
1#$

&

2#$

&

. "

3
3

(
(

&

(/ %

* *'+'% ##"+

=
&:

3#$

( " )
4
("

"
* *'+ -* *';+'% ##"+
=
=

"

&!+ % ## ( 6

8#$

.
5

" "

& ' ( 5

-5#$

& ' * *'+'( 4

- #$

&!+'% ##"+ (

!
='

7
!

( " )

8$

--#$

&'% + ' ( 9

-.#$

. &!+'% ##"+ (
( " )

-/#$

8$

& ' * *'+'( :

-0#$ 2

7&

-1#$ .

&!+ +9(

-2#$ =

<

( +
3

>
#

( )" ( )

>
?

+,
'
# ?
,

= < *" '" $" >" $$" $? =


@
,
A #B
!
9
C
= @+ " >
D!
"
#

!&'(
<
"
9

> f:=x->cos(x):
xvals := [-2,0,1,9,11,14];
primerpunto:=xvals[1]:
ultimopunto:=xvals[6]:
yvals :=map(f,xvals);
pair := (x,y) -> [x,y]: knots := zip(pair, xvals, yvals);
/0 ( -*" '" $" >" $$" $? )
/0 (

* " $"

$ "

> "

$$ "

$? )

/0 ( ( -*"
* )" ( '" $ )" ( $"
$ )" ( >"
> )" ( $$"
$$ )" ( $?"
$? ) )
> plot([knots],x=primerpunto..ultimopunto,y=-1..1,symbol=circle
,
color=[black],style=[point],tickmarks=[5,3]);

"
#

+
"

"

> LI:=[seq(L(xvals,i,x) ,i=0..nops(xvals)-1)];


/0
$
*
$
;
$

*
+$
+

$$

$
$$

>

>

$;

$'

$;

$$

$'

>

+$

$? $B

$$ $;
$

+$

> $$
$

$$

$$
$$

$'

$;

$;

>

@
;

$
$B

>

$;

+$

$'

$$

$;

$?

$?

$?

$;
@
;

C
D

"

+$ "

$?

"
"
"

$$
;

/
> evalf(lagrange(xvals,yvals,x)):
PolinomodeLagrange:=collect(%,x);
/0 '''$'@?B;$DBC
;'BB$C*@BB

''?C$$;'>BB'

+ 'BC>CD@;@D*

*$B?@;$*BD + $

57
E 2
"

"
7

7 7

"
7 7 "
"

'

'

"

=
7

'

'"

= $
E 2

'

=
'" $" *"

"

'"
'

$"

'

"

"

"
"

"
7
'"

$"

*"

"
.

"
3
E 2
> DDN:=(l,xvals)->map(evalf,[seq((op(i+1,l)-op(i,l))/(op(i+iter
acion+1,xvals)-op(i,xvals)), i=1..nops(l)-1)]);
! /0 "

+ $"

"

"

+ $"

" =$

"

%
5
F

"
"

'

= < * =

'

'

'
0 ?$B$?BD;B@"

'

> ini:=map(evalf,yvals);
iteracion:=0;
'f'([op(1..iteracion+1,xvals)])=op(1,ini);
newtondiv:=op(1,ini):
P[iteracion]=newtondiv;
plot([knots,newtondiv,f(x)],x=primerpunto..ultimopunto,y=-2..
1.3,symbol=circle,color=[black,blue,red],style=[point,line,li
ne],tickmarks=[5,3]);
/0 ( - ?$B$?BD;B@" $ " @?';'*;'@>" - >$$$;'*B$>" ''??*@B>C>DD" $;BC;C*$D* )
/0 '
( -* ) = - ?$B$?BD;B@
'

= - ?$B$?BD;B@

"
#

"

"
$

= '
+* "

'"

'

+$

"

?$B$?BD;B@ + C'D'C;?$D@
" ' = < *" ' =
9
7
.
"
"
3
'" $" *"
= $
+ '" $" *"
'
$

> ini:=DDN(ini,xvals);
iteracion:=iteracion+1;
'f'([op(1..iteracion+1,xvals)])=op(1,ini);
newtondiv:=newtondiv+op(1,ini)*mul(x-op(i,xvals),i=1..iteraci
on):
P[iteracion]=newtondiv;
plot([knots,newtondiv,f(x)],x=primerpunto..ultimopunto,y=-2..
1.3,symbol=circle,color=[black,blue,red],style=[point,line,li
ne],tickmarks=[5,3]);
/0 ( C'D'C;?$D@" - ?@>B>CB>?$" - $D$?*>'C$'" ?@CCCC>D''" '??$';D?''C )
/0 $
( -*" ' ) = C'D'C;?$D@
$

= $ ''''''''$ + C'D'C;?$D@

"C

"

'"

$"

*"

'"

3
$"

*"

'

> ini:=DDN(ini,xvals);
iteracion:=iteracion+1;
'f'([op(1..iteracion+1,xvals)])=op(1,ini);
newtondiv:=newtondiv+op(1,ini)*mul(x-op(i,xvals),i=1..iteraci
on):
P[iteracion]=newtondiv;
plot([knots,newtondiv,f(x)],x=primerpunto..ultimopunto,y=-2..
1.3,symbol=circle,color=[black,blue,red],style=[point,line,li
ne],tickmarks=[5,3]);
/0 ( - ;D>*@C';CC" ';'>$DC;@>'" 'B;>*'C'@$'" - 'D*C;?D*C>D )
/0 *
( -*" '" $ ) = - ;D>*@C';CC
*

= $ ''''''''$ + C'D'C;?$D@ ;D>*@C';CC

+*

> ini:=DDN(ini,xvals);
iteracion:=iteracion+1;
'f'([op(1..iteracion+1,xvals)])=op(1,ini);
newtondiv:=newtondiv+op(1,ini)*mul(x-op(i,xvals),i=1..iteraci
on):
#

P[iteracion]=newtondiv;
plot([knots,newtondiv,f(x)],x=primerpunto..ultimopunto,y=-2..
1.3,symbol=circle,color=[black,blue,red],style=[point,line,li
ne],tickmarks=[5,3]);
/0 ( ';D$>CC>CB'" '';'''$C>'$D" - '$$*D$$>?D@ )
/0 ;
( -*" '" $" > ) = ';D$>CC>CB'
;

= $ ''''''''$ + C'D'C;?$D@ ;D>*@C';CC


+ ';D$>CC>CB'

+*

+*

> ini:=DDN(ini,xvals);
iteracion:=iteracion+1;
'f'([op(1..iteracion+1,xvals)])=op(1,ini);
newtondiv:=newtondiv+op(1,ini)*mul(x-op(i,xvals),i=1..iteraci
on):
P[iteracion]=newtondiv;
plot([knots,newtondiv,f(x)],x=primerpunto..ultimopunto,y=-2..
1.3,symbol=circle,color=[black,blue,red],style=[point,line,li
ne],tickmarks=[5,3]);
/0 ( - ''*C'C@'>$**" - ''$'*''>D$;? )
#

>

/0 ?

( -*" '" $" >" $$ ) = - ''*C'C@'>$**


?

= $ ''''''''$ + C'D'C;?$D@ ;D>*@C';CC


+ ';D$>CC>CB'

+*

+*

$ ''*C'C@'>$**

+*

>

> ini:=DDN(ini,xvals);
iteracion:=iteracion+1;
'f'([op(1..iteracion+1,xvals)])=op(1,ini);
newtondiv:=newtondiv+op(1,ini)*mul(x-op(i,xvals),i=1..iteraci
on):
P[iteracion]=newtondiv;
collect(newtondiv,x);
plot([knots,newtondiv,f(x)],x=primerpunto..ultimopunto,y=-2..
1.3,symbol=circle,color=[black,blue,red],style=[point,line,li
ne],tickmarks=[5,3]);
/0 ( '''$'@?B;$DBD )
/0 @
( -*" '" $" >" $$" $? ) = '''$'@?B;$DBD
@

= $ ''''''''$ + C'D'C;?$D@ ;D>*@C';CC


+ ';D$>CC>CB'
+ '''$'@?B;$DBD

+*
+*

+*

$ ''*C'C@'>$**
$
#

>
$'

$$

+*

>

'''$'@?B;$DBD

''?C$$;'>BC$

+ 'BC>CD@;@>B

;'BB$C*@BD

*$B?@;$*C; + $ ''''''''$

"
3

"

!
5

"

!
/

'

+$

+$ H

7
> cotasupderiv:=maximize(diff(f(x),x$4),x,{x=primerpunto..ultim
opunto}):
cotainfderiv:=minimize(diff(f(x),x$4),x,{x=primerpunto..ultim
opunto}):
cotasupabsderiv:=evalf(max(cotasupderiv,abs(cotainfderiv)));
num:=x->abs(mul(x-op(i,xvals),i=1..nops(xvals))):
cotaerr:=x->num(x)*cotasupabsderiv/nops(xvals)!:
cotaerr(x);
plot([knots,newtondiv,f(x),cotaerr(x)],x=primerpunto..ultimop
unto,tickmarks=[5,10]);
/0 $
#

$$

+*

''$;DDDDDDD>

"
;@
> cotaerr(4);
evalf(%);

>

$$

$?

!0?"

;@ ''''''''
;@ ''''''''
57

I
7

!0@
E 2

"
.

> xvals := [-2,0,1,5,9,11,14];


primerpunto:=xvals[1]:
ultimopunto:=xvals[7]:
yvals :=map(f,xvals);
pair := (x,y) -> [x,y]: knots := zip(pair, xvals, yvals);
/0 ( -*" '" $" @" >" $$" $? )
/0 (

* " $"

$ "

@ "

> "

$$ "

$? )

/0 (
( -*"

* )" ( '" $ )" ( $"

$ )" ( @"
#

$*

@ ) " ( >"

> )" ( $$"

$$ )" ( $?"

$? )

)
> LI:=[seq(L(xvals,i,x) ,i=0..nops(xvals)-1)]:
evalf(lagrange(xvals,yvals,x)):
PolinomodeLagrange2:=simplify(%);
/0 ?$;??D;'C$ + $ + ''*?@'B?;>'?
+ $;?C'>@DC*

$@?*@$@CB$

''''C$'BB'D*;@

'*>'DB>C@>$

!
> plot([knots,PolinomodeLagrange2,f(x)],x=primerpunto..ultimopu
nto,y=-2..2,symbol=circle,color=[black,green,red],style=[poin
t,line,line],tickmarks=[5,3]);

"
KK

!"
!

KK

!"

> plot([knots,PolinomodeLagrange,PolinomodeLagrange2,f(x)],x=pr
imerpunto..ultimopunto,y=-2..2,symbol=circle,color=[black,blu
e,green,red],style=[point,line,line,line],tickmarks=[5,3]);
#

$;

"
!
/

E "
+

> g:=x->1/(1+25*x^2):
plot(g(x),x=-1..1);

$
$ + *@

$?

&$ + (

?
$' = $

!
?,

'

>

<
" >
&'(

&$ + (

'

<
#? "

" >
#

"

<

&$ + (

> x := 'x':
a:= -1:
b := 1:
n := 10:
h := abs(a-b)/n;
S := [seq(a+h*i,i=0..n)];
yi := map(g,S):
p10 := unapply(interp(S,yi,x),x);

# /0
/0 -$"
$ /0
57

= $ ,

;>'B*@

$'

$CBD
"

$
@

-? -; -* -$ $ * ; ?
" " " " '" " " " " $
@ @ @ @
@ @ @ @
$'>;C@
**$
#

$@

@$DC@
$;B

@?@*@
??*

;C*@
**$

+$

" $$ "
> puntos := evalf(zip((x,y)->[x,y],S,yi)):
plot([puntos,g(x),p10(x)],x=a..b,symbol=circle,
color=[black,red,blue],style=[point,line,line],
linestyle=[1,1,3]);
print("En rojo el grafico de la funcin, en azul el grafico
del polinomio interpolador");

L
9

"

L
!

$$

&'(
9
4$ + 6
> <
$$

*'

!
GE
<
'
&'(
H
*'
> n := 20:
h := abs(a-b)/n:
S := [seq(a+h*i,i=0..n)]:
yi := map(g,S):
p20 := unapply(interp(S,yi,x),x):
collect(p20(x),x);
puntos := evalf(zip((x,y)->[x,y],S,yi)):
#

$B

?F+
?F
' = $ , *' = $

plot([puntos,g(x),p20(x)],x=a..b,y=-4..4,symbol=circle,
color=[blue,red,green],style=[point,line,line],linestyle=[0,1
,0]);
print("En rojo el grfico de la funcin, en verde el grfico
del polinomio interpolador");
C'B>$@@'$*@
$@'$;C*;?

$D$*?$CB*@
C@'BDB$C

BBB???;*D$*@

B;C$C@CD$*@''

$'

*C$C?$B

$?

??$@D'$

@$??BB'$@B*@
BC>;@?

?;@@@*>$'B*@

DD;$B'*

$>@;$*@'''''''

*$B$C''B'@C@

;@;*B?'D

?*@CD$*@''''
*@>C@;

$B

+$

C@>CB@B*@'''''
C@'BDB$C

*'

"

C@'BDB$C

!
!

$*

-' @ ' @
!

"

& &'

"
I "

"

.
M
"

$C

"

$D

3
!
7
3

"

"
"

G
;

"

"
3

E
9

"

> S;
-> -? -C -; -$ -* -; -$ -$
$ $ ; * $ ; C ? >
" " " " " " " " " '" " " " " " " " " " $
$' @ $' @ * @ $' @ $'
$' @ $' @ * @ $' @ $'
> splinlineal:=x->piecewise(seq(op([(op(i,S)<x) and
(op(i+1,S)>x),interp([op(i..i+1,S)],map(g,[op(i..i+1,S)]),x)]
),i=1..nops(S)-1),true,g(x)):
plot([puntos,g(x),splinlineal(x)],x=a..b,y=0..g(0),symbol=cir
cle,
color=[blue,red,green],style=[point,line,line],linestyle=[0,1
,0]);
print("En rojo el grfico de la funcin, en verde el grfico
de la interpolacin lineal a trozos");
-$"

L
"
. L
> splincuadratico:=x->piecewise(seq(op([(op(2*i-1,S)<x) and
(op(2*i+1,S)>x),interp([op(2*i-1..2*i+1,S)],map(g,[op(2*i-1..
#
$D

2*i+1,S)]),x)]),i=1..(nops(S)-1)/2),true,g(x)):
plot([puntos,g(x),splincuadratico(x)],x=a..b,y=0..g(0),symbol
=circle,
color=[blue,red,green],style=[point,line,line],linestyle=[0,1
,0]);
print("En rojo el grfico de la funcin, en verde el grfico
de la interpolacin cuadratica a trozos");

"

. N

L
%

>

#
'

. !
J
!

"(

'

!
"
?
<

<
#

$>

#
J
5#5555 #

"

> f:=x->sin(x);
a:=0;b:=Pi/3;
err:=0.001;
graf0:=plot(f(x),x=a-1..b+1,color=red):
graf1:=plot(f(x),x=a..b,color=COLOR(RGB,0.7,0.7,0.7),filled=t
rue):
rayaA:=plot([[a,0],[a,f(a)]],color=black):
rayaB:=plot([[b,0],[b,f(b)]],color=black):
plots[display]([graf0,graf1,rayaA,rayaB]);
print("Queremos calcular el area sealada en el dibujo, que se
corresponde con el valor de I=",Int(f(x),x=0..Pi/3));
/0
/0 '
$
/0
;
/0 ''$

LO

"
$/;

'

9
#

*'

P0L"

(=

$*

$'

"
;

" 0'

!0

! 57

"

&

+
"

"
=

"

"

> deriv2:=unapply(diff(f(x),x$2),x);
cotasupderiv2:=maximize(abs(deriv2(x)),x,{x=evalf(a)..evalf(b
)});
funcioncotaerror:=(b-a)^3*cotasupderiv2/(12*n^2);
minnumpartesnecesarias:=evalf(solve(funcioncotaerror=err));
print("Para conseguir que el error sea menor que",err,"
tendremos que tomar n = numero de partes, como entero
inmediatamente superior a la solucin positiva obtenida");
/0
/0 $
$

/0

$*>B''

/0
L#

L" ''$" L

"
#

"

N
L

> trapezoid(f(x),x=0..Pi/3,10);
evalf(%);
$
B'

>

;'

=$

$
*

?>>@?*>>'?
!
> Int(sin(x),x=0..Pi/3)=int(sin(x),x=0..Pi/3);
$/;

=
'

*$

$
*

"

> 0.5-.4995429904;
'''?@C''>B
4

(=

@
?

$D'

> err:=0.00001;
deriv4:=unapply(diff(f(x),x$4),x);
cotasupderiv4:=maximize(abs(deriv4(x)),x,{x=evalf(a)..evalf(b
)});
funcioncotaerror:=(b-a)^5*cotasupderiv4/(180*n^4);
minnumpartesnecesarias:=evalf(solve(funcioncotaerror=err));
print("Para conseguir que el error sea menor que",err,"
tendremos que tomar n = numerodepartes,como entero
inmediatamente superior a la solucin real positiva obtenida
que sea PAR!!");
/0 ''''$
) /0
) /0 $
/0

B>>D?'''''
/0

L#

L" ''''$" L

"

N
QQ

#5%HHL
4

"

0B

> simpson(f(x),x=a..b,6);
evalf(%);
$
@?

$
*

; +?

$D

=$

* $

@''''*@DC$
**

+*
=$

$
>

>
&

*;

S-ar putea să vă placă și