macsyma ode lab book - inpe/computação e matemática

24
Macsyma ODE Lab Book Darren Redfern, Edgar Chandler and Richard N. Fell 1998

Upload: others

Post on 16-Oct-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Macsyma ODE Lab Book

Darren Redfern, Edgar Chandler and Richard N. Fell

1998

ii

Indice

1 Primeiros passos com Maxima 11.1 Iniciar o programa Maxima . . . . . . . . . . . . . . . . . . . . . 11.2 Sintaxe basica do Maxima . . . . . . . . . . . . . . . . . . . . . . 11.3 Objectos basicos em Maxima . . . . . . . . . . . . . . . . . . . . 21.4 Mistura de numeros de diferentes tipos . . . . . . . . . . . . . . . 31.5 Constantes alfanumericas . . . . . . . . . . . . . . . . . . . . . . 41.6 Expressoes em Maxima . . . . . . . . . . . . . . . . . . . . . . . 41.7 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.8 Comandos de Maxima . . . . . . . . . . . . . . . . . . . . . . . . 61.9 Designacoes e equacoes . . . . . . . . . . . . . . . . . . . . . . . . 71.10 Outros caracteres especiais em Maxima . . . . . . . . . . . . . . 81.11 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2 Equacoes diferenciais ordinarias de primeira ordem 152.1 Definicao e resolucao de EDO’s . . . . . . . . . . . . . . . . . . . 152.2 Solucoes explıcitas vs implıcitas . . . . . . . . . . . . . . . . . . . 16

14 Metodos numericos 19

Indice iii

iv

1. Primeiros passos com Maxima

1.1 Iniciar o programa Maxima

Maxima pode ser iniciado desde um menu no gestor do Desktop ou comos comandos maxima ou xmaxima, a partir de uma consola.

1.2 Sintaxe basica do Maxima

(C1) diff(x,3);

Non-variable 2nd argument to DIFF:

3

-- an error. Quitting. To debug this try DEBUGMODE(TRUE);)

(C2) diff();

Wrong number of arguments to DIFF

-- an error. Quitting. To debug this try DEBUGMODE(TRUE);)

(C3) describe(describe);

0: DESCRIBE :(maxima.info)Definitions for Help.

Info from file /usr/share/info/maxima.info:

- Function: DESCRIBE (cmd)

This command prints documentation on all commands which con-

tain

the substring "cmd". Thus

(C1) describe("integ");

0: (maxima.info)Integration.

1: Introduction to Integration.

2: Definitions for Integration.

3: ASKINTEGER :Definitions for Simplification.

..

Enter n, all, none, or multiple choices eg 1 3 : 2 3;

Info from file /d/linux2/local/share/info/maxima.info:

Definitions for Integration

===========================

- Function: CHANGEVAR (EXP,F(X,Y),Y,X)

...

*note Introduction to Help::

(D3)

false

Primeiros passos com Maxima 1

(C4) apropos(integ);

(D4)

[INTEGER, INTEGERP, INTEGFACTOR, INTEGRATE, INTEGRATE USE ROOTSOF,

INTEGRATIONCONSTANT, INTEGRATION CONSTANT COUNTER, integ]

Pode deixar espaco entre operandos, mas nao no meio de um numero;por exemplo:

(C5) 1 234 567 / 89;

Incorrect syntax: 234 is not an infix operator

1 234

^

(C5)

(D5)56789

produz um erro.

1.3 Objectos basicos em Maxima

Numeros inteiros e racionais

(C6) 31;

(D6)

31

(C7) 3/7;

(D7)37

(C8) -39/13;

(D8)

−3

2

Numeros decimais

(C9) 2.3;

(D9)

2.3

(C10) -123.456;

(D10)

−123.456

(C11) .143*10^(-2);

(D11)

0.00143

(C12) 1.234e2;

(D12)

123.4

Constantes matematicas

As constante de Catalan nao esta definida em Maxima 5.9.0. As outrasconstantes referidas nesta seccao estao todas bem definidas.

1.4 Mistura de numeros de diferentes tipos

(C13) 1/3 + 2;

(D13)73

(C14) 1/3 + 2.0;

(D14)

2.333333333333334

(C15) 1/2 + 2/3 + 3/5 + 5/7 + 7/11 + 1.2;

(D15)

4.317316017316017

Primeiros passos com Maxima 3

1.5 Constantes alfanumericas

(C16) "Esta e uma constante alfanumerica";

(D16)

Esta e uma constante alfanumerica

(C17) "123abc";

(D17)

123abc

(C18) "x + 5/9";

(D18)

x + 5/9

(C19) directory/filename;

(D19)DIRECTORYFILENAME

(C20) x + 5/9;

(D20)

x +59

1.6 Expressoes em Maxima

(C21) a+b+c;

(D21)

C + b + a

(C22) 3*x^3 - 4*x^2 + x - 7;

(D22)

3x3 − 4x2 + x− 7

(C23) x^2/25 + y^2/36;

(D23)y2

36+

x2

25

4

Ordem das operacoes

(C24) 2+3*4-5;

(D24)

9

(C25) (2+3)*4-5;

(D25)

15

(C26) (2+3)*(4-5);

(D26)

−5

1.7 Listas

(C27) [1, 2, 3, 4, 5, 4, 3, 2, 1];

(D27)

[1, 2, 3, 4, 5, 4, 3, 2, 1]

(C28) [a, d, c, b, e];

(D28)

[a, d, C, b, e]

(C29) [1/2, a+3, e^4];

(D29) [12, a + 3, e4

]

(C30) makelist(i^2, i, 1, 10);

(D30)

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

(C31) makelist(6, i, 1, 7);

(D31)

[6, 6, 6, 6, 6, 6, 6]

(C32) list1 : [a, exp(3), 1, 2/3];

(D32) [a, e3, 1,

23

]

(C33) length(list1);

Primeiros passos com Maxima 5

(D33)

4

(C34) part(list1, 2);

(D34)

e3

1.8 Comandos de Maxima

Nomes dos comandos

plot2d(x^2 - 4, [x, -5, 5])$

(C35) primep(10889);

(D35)

true

(C36) diff(x^3 - 5*x^2 + 2*x - 15, x);

(D36)

3x2 − 10x + 2

(C37) sin(%pi/2);

(D37)

1

Comandos desconhecidos

(C38) integate(x^3, x);

(D38)

integate(x3, x

)

Funcoes definidas com load

A funcao innerproduct ainda nao foi implementada em Maxima 5.9.0.

(C39) expand((x - 2)*(x + 5));

(D39)

x2 + 3x− 10

(C40) %G, numer;

6

(D40)

%G

(C41) load(physconst);

(D41)

/usr/share/maxima/5.9.0/share/physics/physconst.mac

(C42) %G, numer;

(D42)6.6729999999999999 · 10−11m3

kgs2

1.9 Designacoes e equacoes

Designacoes

A funcao prime ainda nao foi implementada em Maxima 5.9.0.

(C43) first10cubes: makelist(i^3, i, 1, 10);

(D43)

[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

(C44) product(first10cubes[i], i, 1, 10);

(D44)

47784725839872000000

Equacoes

(C45) x = y + 3;

(D45)

x = y + 3

(C46) x;

(D46)

x

(C47) y;

(D47)

y

(C48) sols : solve([x+y=3, x-y=1], [x, y]);

Primeiros passos com Maxima 7

(D48)

[[x = 2, y = 1]]

(C49) x;

(D49)

x

(C50) y;

(D50)

y

1.10 Outros caracteres especiais em Maxima

O sımbolo de percentagem

(C51) expand((x-2)^3*(x-1));

(D51)

x4 − 7x3 + 18x2 − 20x + 8

(C52) factor(%);

(D52)

(x− 2)3 (x− 1)

O apostrofo

(C53) a : 5$

(C54) b : a$

(C55) c : ’a$

(C56) b;

(D56)

5

(C57) c;

(D57)

a

(C58) x : 3;

8

(D58)

3

(C59) diff(’x^2, ’x);

(D59)

2x

(C60) diff(x^2, ’x);

(D60)

0

(C61) diff(’x^2, x);

Non-variable 2nd argument to DIFF:

3

-- an error. Quitting. To debug this try DEBUGMODE(TRUE);)

(C62) kill(all);

(D0)

DONE

1.11 Problemas

1. Escreva o conteudo do ficheiro de ajuda para o comando signum

(C1) describe(signum)$

0: SIGNUM :(maxima.info)Definitions for Operators.

Info from file /usr/share/info/maxima.info:

- Function: SIGNUM (X)

if X<0 then -1 else if X>0 then 1 else 0. If X is not numeric

then a simplified but equivalent form is returned. For example,

SIGNUM(-X) gives -SIGNUM(X).

2. Calcule cada uma das seguintes expressoes numericas:

5375,√

8640,458 · 347

349, 48 e3 ln 2,

(1− 1

2+

13− 1

4+

15

)4

(C2) 537^5, numer;

(D2)

44655137246457

(C3) sqrt(8640), numer;

Primeiros passos com Maxima 9

(D3)

92.951600308978

(C4) 458*347/349.0;

(D4)

455.3753581661891

(C5) 48*%e^(3*log(2)), numer;

(D5)

383.9999999999999

(C6) (sum(makelist(-(-1)^i/i, i, 1, 5)[j], j, 1, 5))^4, numer;

(D6)

0.37651859567901

3. Realize as operacoes algebricas seguintes e simplifique os resultados. Mul-tiplique:

(2x + 5)(3x− 2), (2t + 7u− 3)4, ( e2t − et + 4)(3e2t + 5 et− 3)

Factorize:

x2 − 4y2 − 2x + 4y, 12t5 + 16t4 − 127t3 − 76t2 + 325t− 150

(C7) expand((2*x + 5)*(3*x - 2));

(D7)

6x2 + 11x− 10

(C8) expand((2*t + 7*u -3)^4);

(D8)

2401u4+2744tu3−4116u3+1176t2u2−3528tu2+2646u2+224t3u−1008t2u+

1512tu− 756u + 16t4 − 96t3 + 216t2 − 216t + 81

(C9) expand((exp(2*t) - exp(t) + 4)*(3*exp(2*t) + 5*exp(t) -

3));

(D9)

3e4t + 2e3t + 4e2t + 23et − 12

(C10) factor(x^2 - 4*y^2 - 2*x + 4*y);

10

(D10)

− (2y − x) (2y + x− 2)

(C11) factor(12*t^5 + 16*t^4 - 127*t^3 - 76*t^2 + 325*t - 150);

(D11)

(t− 1) (t + 3) (2t− 5) (2t + 5) (3t− 2)

4. Desenhe o grafico de cada uma das seguintes funcoes, usando intervalosque mostrem bem a forma das funcoes.

y = x3 − 5x2 + 2x + 3, y =sin(x)

x. y =

√20− x2, y =

3x2 + 2x2 − 4

(C12) plot2d(x^3 - 5*x^2 + 2*x + 3, [x, -2, 6])$

(C13) plot2d(sin(x)/x, [x, -5*%pi, 5*%pi])$

(C14) plot2d(sqrt(20 - x^2), [x, -sqrt(20), sqrt(20)])$

(C15) plot2d((3*x^2 + 2)/(x^2 - 4), [x, -5, 5], [y, -20, 20])$

5. O grafico da funcao y = x3−6x2 +7x+2 apresenta dois pontos extremos(designados de mınimo local e maximo local). Desenhe o grafico dessafuncao e faca uma estimativa das coordenadas x e y desses dois pontos.Melhore a sua estimativa usando o comando subst (consulte o sistemade ajuda em linha) para encontrar os valores maior ou menor de y nessasvizinhancas.

Sugestao: E util primeiro definir uma expressao f : x^3 - 6*x^2 + 7*x

+ 2. Faca varias tentativas ate conseguir melhorar o seu resultado.

Pode imaginar algum outro metodo grafico de obter uma melhor estima-tiva inicial para os valores do maximo e o mınimo local?

(C16) f : x^3 - 6*x^2 + 7*x + 2;

(D16)

x3 − 6x2 + 7x + 2

(C17) "plot2d(f, [x, -2, 5])"$

(C18) f, x=0.6;

(D18)

4.256

(C19) f, x=0.7;

Primeiros passos com Maxima 11

(D19)

4.303

(C20) f, x=0.8;

(D20)

4.272

(C21) f, x=0.65;

(D21)

4.289625

(C22) f, x=0.75;

(D22)

4.296875

(C23) f, x=0.72;

(D23)

4.302848

(C24) f, x=0.71;

(D24)

4.303311

(C25) f, x=3.1;

(D25)

−4.169000000000004

(C26) f, x=3.2;

(D26)

−4.271999999999999

(C27) f, x=3.3;

(D27)

−4.302999999999997

(C28) f, x=3.25;

(D28)

−4.296875

(C29) f, x=3.35;

(D29)

−4.289625000000001

(C30) f, x=3.3;

12

(D30)

−4.302999999999997

(C31) g : diff(f, x);

(D31)

3x2 − 12x + 7

(C32) plot2d(g, [x, -2, 5])$

(C33) plot2d(g, [x, 0, 1])$

(C34) plot2d(g, [x, 0.6, 0.8])$

(C35) plot2d(g, [x, 0.7, 0.75])$

(C36) plot2d(g, [x, 0.7, 0.71])$

(C37) plot2d(g, [x, 3, 4])$

(C38) plot2d(g, [x, 3.2, 3.4])$

(C39) plot2d(g, [x, 3.25, 3.3])$

Concluimos que o maximo esta em x = 0.709 e o mınimo em x = 3.29.

Primeiros passos com Maxima 13

14

2. Equacoes diferenciais ordinarias de primeira ordem

2.1 Definicao e resolucao de EDO’s

(C1) ’diff(y, x);

(D1)dy

dx

(C2) diff(y,x);

(D2)

0

(C3) 3*’diff(t, s) + 6*s = 0;

(D3)

3dt

ds+ 6s = 0

(C4) ’diff(Fred, Wilma) = 2*’diff(Fred, Wilma)/(Wilma^2 + Pi);

(D4)dFred

dWilma=

2 dFreddWilma

Wilma2 + π

(C5) deq: ’diff(y,t) = 2*t*y/(t^2 + 4);

(D5)dy

dt=

2ty

t2 + 4

(C6) sol: ode2(deq, y, t);

(D6)

y = %C(t2 + 4

)(C7) deq, sol, diff;

(D7)

2%Ct = 2%Ct

(C8) makelist(’’rhs(sol), %c, -2, 2);

(D8)[%C

(t2 + 4

),%C

(t2 + 4

),%C

(t2 + 4

),%C

(t2 + 4

),%C

(t2 + 4

)]

(C9) plot2d(%, [t, -5, 5])$

Equacoes diferenciais ordinarias de primeira ordem 15

(C10) ic1(sol, t=1, y=5);

(D10)

y = t2 + 4

-5 5-60

60

t

y

-5 5-60

60

-2.5 0.0 2.5

-40

-20

0

20

40

Figura 2.1: Famılia de 5 solucoes da equacao deq.

2.2 Solucoes explıcitas vs implıcitas

(C11) deq1 : 2*y*sin(t)*’diff(y, t) = - (y^2 + 1)*cos(t);

(D11)

2 sin(t)ydy

dt= cos t

(−y2 − 1

)(C12) sol1 : ode2(deq1, y, t);

(D12)

− log(y2 + 1

)= log sin t + %C

(C13) sol1b : solve(sol1, y);

(D13) [y = −e−

%C2

√1

sin t− e%C, y = e−

%C2

√1

sin t− e%C

]

(C14) deq1, y=rhs(sol1b[1]), diff, ratsimp;

16

(D14)

−e−%C cos t

sin t= −e−%C cos t

sin t

(C15) deq1, y=rhs(sol1b[2]), diff, ratsimp;

(D15)

−e−%C cos t

sin t= −e−%C cos t

sin t

(C16) deq2 : (y^2 - 2*x)/(x*y^2)*’diff(y, x) = (y - 3)/x^2;

(D16) (y2 − 2x

)dydx

xy2=

y − 3x2

(C17) sol2 : ode2(deq2, y, x);

(D17)y2 − 3y + 2x

xy= %C

(C18) solve(sol2, y);

(D18)y = −

√%C2

x2 + (6%C− 8) x + 9−%Cx− 3

2, y =

√%C2

x2 + (6%C− 8) x + 9 + %Cx + 3

2

(C19) deq3 : y + (x*y^2 + x - y)*’diff(y, x) = 0;

(D19) (xy2 − y + x

) dy

dx+ y = 0

(C20) sol3 : ode2(deq3, y, x);

(D20)

(xy − 1) ey2

2 = %C

(C21) solve(sol3, y);

(D21) y =e−

y2

2

(e

y2

2 + %C)

x

(C22) deq4 : y*’diff(x, y) + x*y^2 + x - y = 0;

(D22)

xy2 +dx

dyy − y + x = 0

(C23) sol4 : ode2(deq4, x, y);

(D23)

x =e−

y2

2

(e

y2

2 + %C)

y

(C24) rsol4 : rhs(sol4);

Equacoes diferenciais ordinarias de primeira ordem 17

(D24)

e−y2

2

(e

y2

2 + %C)

y

(C25) makelist(’’rsol4, %c, -2, 2)$

18

14. Metodos numericos

(C1) edo : ’diff(y, x) = y * sin(x);

(D1)d

dxy = sinxy

(C2) sol1 : ode2(edo, y, x);

(D2)

y = %Ce− cos x

(C3) sol2 : ic1(sol1, x=0, y = 1);

(D3)

y = e1−cos x

plot2d([rhs(sol2)], [x, -7, 7])$

(C4) f(x, y) := y * sin(x);

(D4)

f (x, y) := y sinx

(C5) h : 0.2$

(C6) x0 : 0$

(C7) y0 : 1$

(C8) for n :0 thru 9 do

(k1 : h*f(concat(x,n), concat(y,n)),

k2 : h*f(concat(x,n) + h/2, concat(y,n) + k1/2),

k3 : h*f(concat(x,n) + h/2, concat(y,n) + k2/2),

k4 : h*f(concat(x,n) + h, concat(y,n) + k3),

k : 1/6*(k1 + 2*k2 + 2*k3 + k4),

concat(x, n+1) :: ev(concat(x, n) + h, infeval),

concat(y, n+1) :: ev(concat(y, n) + k, infeval))$

(C9) makelist(print(ev(concat(x, i), infeval), ev(concat(y, i),

infeval),

ev(subst(ev(concat(x, i), infeval), x, rhs(sol2)), numer)),

i, 1, 10)$

0.2 1.020133423626997 1.020133419484932

0.4 1.082138288895899 1.082138316109776

Metodos numericos 19

0.6 1.190846288445275 1.190846483702879

0.8 1.354310862435795 1.354311613136600

1.0 1.583592978432230 1.583595182509297

1.2 1.892009362607557 1.892014710155952

1.4 2.293383002905165 2.293394093304745

1.6 2.798804460409869 2.798824541138214

1.8 3.411638384756971 3.411670638694880

2.0 4.121163494944166 4.121210111205023

20