POLINÔMIO DE HERMITE EXEMPLO1

Propaganda
> restart:
> with(plots):
> with(linalg):
Warning, new definition for norm
Warning, new definition for trace
POLINÔMIO DE HERMITE
EXEMPLO1: Interpole a função e sua derivada pelo Polinômio de Hermite, usando a tabela abaixo,
onde por g(x) estamos denotando a devidada de f(x)
Queremos interpolar a função e sua derivada. Multiplicidade 2. Usando três pontos o grau do
polinômio de Hermite é
2+2+2-1=5
> x0:=0.0:
> x1:=1.0:
> x2:=2.0:
O valor da função f(x)=x^2
> f0:=0.0:
> f1:=1.0:
> f2:=4.0:
Vamos denotar g valor da derivada g(x)=f ' (x)
> g0:=0.0:
> g1:=2.0:
> g2:=4.0:
>
CÁLCULO DOS POLINÔMIOS DE LAGRANGE, PARA CADA PONTO UM POLINÔMIO.
NESSE CASO OS PPOLINÔMIOS SÃO DE GRAU 2
> L0:=(x-x1)*(x-x2)/((x0-x1)*(x0-x2)):;
> L1:=(x-x0)*(x-x2)/((x1-x0)*(x1-x2)):;
> L2:=(x-x0)*(x-x1)/((x2-x0)*(x2-x1)):;
> LL0:=plot([L0(x)], x=x0..x2, color=[red], style=[line]):
> LL1:=plot([L1(x)], x=x0..x2, color=[blue], style=[line]):
> LL2:=plot([L2(x)], x=x0..x2, color=[green], style=[line]):
> display(LL0,LL1,LL2);
Page 1
O Grafico acima é dos 3 polinômios de Lagrange de grau n=3. Note que os polinômios são ortogonais
CÁLCULO DA DERIVADAS DOS POLINÔMIOS DE LAGRANGE
> DL0:=evalf(diff(L0,x),3);
DL0 := 1.00 x − 1.50
> DL1:=evalf(diff(L1,x),3);
DL1 := −2.00 x + 2.00
> DL2:=evalf(diff(L2,x),3);
DL2 := 1.00 x − .500
> D0:=subs(x=x0, DL0);
D0 := -1.50
> D1:=subs(x=x1, DL1);
D1 := 0
> D2:=subs(x=x2, DL2);
D2 := 1.500
CÁLCULO DAS FUNÇÕES BASE PARA A FUNÇÃO PRIMITIVA f
> PHI0:=evalf((1-2*D0*(x-x0))*(L0)^2,3);
PHI0 := .250 ( 1. + 3.00 x ) ( x − 1.0 )2 ( x − 2.0 )2
> PHI1:=evalf((1-2*D1*(x-x1))*(L1)^2,3);
PHI1 := 1.00 x2 ( x − 2.0 )2
> PHI2:=evalf((1-2*D2*(x-x2))*(L2)^2,3);
Page 2
PHI2 := .250 ( 7.00 − 3.00 x ) x2 ( x − 1.0 )2
> LPHI0:=plot([PHI0(x)], x=x0..x2, color=[red], style=[line]):
> LPHI1:=plot([PHI1(x)], x=x0..x2, color=[blue], style=[line]):
> LPHI2:=plot([PHI2(x)], x=x0..x2, color=[green], style=[line]):
>
> display(LPHI0,LPHI1,LPHI2);
O grafico acima é a base da função base que interpola a função f(x). Note novamente que são
polinômios de grau 5 e ortogonais.
CÁLCULO DAS FUNÇÕES BASE PARA A FUNÇÃO g, DERIVADA DA FUNÇÃO f
> PSI0:=(x-x0)*(L0*L0);
PSI0 := .2500000000 x ( x − 1.0 )2 ( x − 2.0 )2
> PSI1:=(x-x1)*(L1)^2;
PSI1 := 1.000000000 ( x − 1.0 ) x2 ( x − 2.0 )2
> PSI2:=(x-x2)*(L2)^2;
PSI2 := .2500000000 ( x − 2.0 ) x2 ( x − 1.0 )2
> LPS0:=plot([PSI0(x)], x=x0..x2, color=[red], style=[line]):
> LPS1:=plot([PSI1(x)], x=x0..x2, color=[blue], style=[line]):
> LPS2:=plot([PSI2(x)], x=x0..x2, color=[green], style=[line]):
>
> display(LPS0,LPS1,LPS2);
Page 3
O grafico acima é a base da função base que interpola a função g(x). Note novamente que são
polinômios de grau 5 e ortogonais.
POLINÔMIO DE HERMITE
Assim o polinômio de Hermite é dado por:( combinação dos elementos da base de f com a
combinação dos elementos da base da derivada)
> P:=simplify(evalf(f0*PHI0+f1*PHI1+f2*PHI2+g0*PSI0+g1*PSI1+g2*PSI2,
3));
P := 447.5000000 x7 + 18.84375000 x − 87.56250000 x2 + 992.4687500 x3 − 2083. x6
+ 3628.750000 x5 − 2895. x4
CALCULABDO A DERIVADA DO POLINÔMIO DE HERMITE
> Q:=simplify(evalf(diff(P,x),3));
Q := 3140. x6 + 18.80000000 − 175. x + 2980. x2 − 12500. x5 + 18200. x4 − 11600. x3
VERIFICAÇÃO DA INTERPOLAÇÃO POLINOMIAL E DE SUA DERIVADA NOS PONTOS
TABELADOS.
> a0:=subs(x=0, P);a1:=subs(x=1, P);a2:=subs(x=2, P);
a0 := 0
a1 := 1.0000
a2 := 4.000000
Page 4
> b0:=subs(x=0, Q);b1:=subs(x=1, Q);b2:=subs(x=2, Q);
b0 := 0
b1 := 2.0000
b2 := 4.000000
Se desejamos saber o valor aproximado de f(x) e g(x) no ponto x=0.6, temos:
> a3:=subs(x=0.6, P);
a3 := .360000000
> b3:=subs(x=0.6, Q);
b3 := 1.20000000
Note que as tabelas foram construídas a partir da função f(x)=x^2. Consequentemente a função
g(x)=f´(x)=2x
Assim é facil de f(0.6)=0.36 e g(0.6)=1.2, tendo assim uma excelente aproimação.
EXEMPLO 2:
INTERPOLAÇÃO DA FUNÇÃO f(x) e sua derivadas, usando três pontos.
Queremos interpolar a função e sua derivada. Multiplicidade 2. Usando três pontos o grau do
polinômio de Hermite é
2+2+2-1=5
> x0:=0.0:
> x1:=1.0:
> x2:=2.0:
O valor da função f(x)
> f0:=1.00:
> f1:=2.71828:
> f2:=7.389056:
Vamos denotar g valor da derivada g(x)=f ' (x)
> g0:=1.00:
> g1:=2.71828:
> g2:=7.389056:
>
CÁLCULO DOS POLINÔMIOS DE LAGRANGE, PARA CADA PONTO UM POLINÔMIO.
NESSE CASO OS PPOLINÔMIOS SÃO DE GRAU 2
> L0:=evalf((x-x1)*(x-x2)/((x0-x1)*(x0-x2)),3);
L0 := .500 ( x − 1.0 ) ( x − 2.0 )
> L1:=evalf((x-x0)*(x-x2)/((x1-x0)*(x1-x2)),3);
L1 := −1.00 x ( x − 2.0 )
> L2:=evalf((x-x0)*(x-x1)/((x2-x0)*(x2-x1)),3);
L2 := .500 x ( x − 1.0 )
> LL0:=plot([L0(x)], x=x0..x2, color=[red], style=[line]):
Page 5
> LL1:=plot([L1(x)], x=x0..x2, color=[blue], style=[line]):
> LL2:=plot([L2(x)], x=x0..x2, color=[green], style=[line]):
> display(LL0,LL1,LL2):;
CÁLCULO DA DERIVADAS DOS POLINÔMIOS DE LAGRANGE
> DL0:=evalf(diff(L0,x),3);
DL0 := 1.00 x − 1.50
> DL1:=evalf(diff(L1,x),3);
DL1 := −2.00 x + 2.00
> DL2:=evalf(diff(L2,x),3);
DL2 := 1.00 x − .500
> D0:=evalf(subs(x=x0, DL0),3);
D0 := -1.50
> D1:=subs(x=x1, DL1);
D1 := 0
> D2:=subs(x=x2, DL2);
D2 := 1.500
CÁLCULO DAS FUNÇÕES BASE PARA A FUNÇÃO PRIMITIVA f
> PHI0:=evalf((1-2*D0*(x-x0))*(L0)^2,3);
PHI0 := .250 ( 1. + 3.00 x ) ( x − 1.0 )2 ( x − 2.0 )2
> PHI1:=evalf((1-2*D1*(x-x1))*(L1)^2,3);
PHI1 := 1.00 x2 ( x − 2.0 )2
> PHI2:=evalf((1-2*D2*(x-x2))*(L2)^2,3);
PHI2 := .250 ( 7.00 − 3.00 x ) x2 ( x − 1.0 )2
As funções acima é a base da função base que interpola a função f(x). {PHI0,PHI1,PHI2}
Note novamente que são polinômios de grau 5 e ortogonais.
> LPHI0:=plot([PHI0(x)], x=x0..x2, color=[red], style=[line]):
> LPHI1:=plot([PHI1(x)], x=x0..x2, color=[blue], style=[line]):
> LPHI2:=plot([PHI2(x)], x=x0..x2, color=[green], style=[line]):
>
> display(LPHI0,LPHI1,LPHI2):;
CÁLCULO DAS FUNÇÕES BASE PARA A FUNÇÃO g, DERIVADA DA FUNÇÃO f
> PSI0:=(x-x0)*(L0*L0);
PSI0 := .250000 x ( x − 1.0 )2 ( x − 2.0 )2
> PSI1:=(x-x1)*(L1)^2;
PSI1 := 1.0000 ( x − 1.0 ) x2 ( x − 2.0 )2
> PSI2:=(x-x2)*(L2)^2;
PSI2 := .250000Page
( x −6 2.0 ) x2 ( x − 1.0 )2
As funções acima é a base da função base que interpola a função g(x). {PSI0,PSI1,PSI2}
Note novamente que são polinômios de grau 5 e ortogonais.
> LPS0:=plot([PSI0(x)], x=x0..x2, color=[red], style=[line]):
> LPS1:=plot([PSI1(x)], x=x0..x2, color=[blue], style=[line]):
> LPS2:=plot([PSI2(x)], x=x0..x2, color=[green], style=[line]):
>
> display(LPS0,LPS1,LPS2):;
Assim o Polinômio Interpolador de Hermite é dado por:( combinação dos elementos da base de f com
a combinação dos elementos da base da derivada)
OBERVE QUE O POLINÔMIO TEM GRAU 5
> P:=simplify(evalf(f0*PHI0+f1*PHI1+f2*PHI2+g0*PSI0+g1*PSI1+g2*PSI2,
4));
P := 446.9800000 x7 + 18.77625000 x − 86.56125000 x2 + 988.3775000 x3 − 2080.030000 x6
+ 3622.085000 x5 − 2887.627500 x4
CALCULABDO A DERIVADA DO POLINÔMIO DE HERMITE
> Q:=simplify(evalf(diff(P,x),4));
Q := 3129. x6 + 18.78000000 − 173.1000000 x + 2965. x2 − 12480. x5 + 18110. x4 − 11550. x3
VERIFICAÇÃO DA INTERPOLAÇÃO POLINOMIAL E DE SUA DERIVADA NOS PONTOS
TABELADOS.
f(x)
> a0:=subs(x=0, P);a1:=subs(x=1, P);a2:=subs(x=2, P);
a0 := 1.00000000
a1 := 2.71800
a2 := 7.3880000
> b0:=subs(x=0, Q);b1:=subs(x=1, Q);b2:=subs(x=2, Q);
b0 := 1.0000000
b1 := 2.71800
b2 := 7.3880000
>
Se desejamos saber o valor aproximado de f(x) e g(x) no ponto x=1.3, temos:
> a3:=subs(x=1.3, P);
a3 := 3.668592420
> b3:=subs(x=1.3, Q);
b3 := 3.667080000
Note que as tabelas foram construídas a partir da função f(x)=exp(x). Consequentemente a função
g(x)=f´(x)=exp(x)
Assim temos o seguinte valor "exato" para a função exponencial:
> aa3:=evalf(subs(x=1.3, exp(x)));
aa3 :=Page
3.669296668
7
> bb3:=evalf(subs(x=1.3, exp(x)));
bb3 := 3.669296668
Podemos verificar o erro abosluto da aproximação da função e de sua derivada.
> e1:=abs(aa3-a3);
e1 := .000704248
> e2:=abs(bb3-b3);
e2 := .002216668
EXEMPLO 3: ENVOLVENDO TEMPO EM (X) SEGUNDO, ESPAÇO EM METRO F(X) E
VELOCIDADE F '(X)=G(X) EM METRO POR SEGUNDO
NOTE INICIALMENTE QUE O POLINOMIO DE HERMITE SERÁ DE GRAU 5
> x0:=0.0:
> x1:=0.5:
> x2:=1.0:
>
O valor da função f(x)
> f0:=0.0:
> f1:=15.0:
> f2:=22.0:
Vamos denotar g valor da derivada g(x)=f ' (x)
> g0:=18.86:
> g1:=20.47:
> g2:=19.38:
CÁLCULO DOS POLINÔMIOS DE LAGRANGE, PARA CADA PONTO UM POLINÔMIO.
NESSE CASO OS PPOLINÔMIOS SÃO DE GRAU 3
> L0:=evalf((x-x1)*(x-x2)/((x0-x1)*(x0-x2)),3);
L0 := 2.00 ( x − .5 ) ( x − 1.0 )
> L1:=evalf((x-x0)*(x-x2)/((x1-x0)*(x1-x2)),3);
L1 := −4.00 x ( x − 1.0 )
> L2:=evalf((x-x0)*(x-x1)/((x2-x0)*(x2-x1)),3);
L2 := 2.00 x ( x − .5 )
CÁLCULO DA DERIVADAS DOS POLINÔMIOS DE LAGRANGE
> DL0:=diff(L0,x);
DL0 := 4.00 x − 3.000
> DL1:=diff(L1,x);
DL1 := −8.00 x + 4.000
> DL2:=diff(L2,x);
DL2 := 4.00 x − 1.000
Page 8
>
> D0:=subs(x=x0, DL0);
D0 := -3.000
> D1:=subs(x=x1, DL1);
D1 := 0
> D2:=subs(x=x2, DL2);
D2 := 3.000
CÁLCULO DAS FUNÇÕES BASE PARA A FUNÇÃO PRIMITIVA f
> PHI0:=(1-2*D0*(x-x0))*(L0)^2;
PHI0 := 4.0000 ( 1 + 6.000 x ) ( x − .5 )2 ( x − 1.0 )2
> PHI1:=(1-2*D1*(x-x1))*(L1)^2;
PHI1 := 16.0000 x2 ( x − 1.0 )2
> PHI2:=(1-2*D2*(x-x2))*(L2)^2;
PHI2 := 4.0000 ( 7.0000 − 6.000 x ) x2 ( x − .5 )2
CÁLCULO DAS FUNÇÕES BASE PARA A FUNÇÃO g, DERIVADA DA FUNÇÃO f
> PSI0:=(x-x0)*(L0*L0);
PSI0 := 4.0000 x ( x − .5 )2 ( x − 1.0 )2
> PSI1:=(x-x1)*(L1*L1);
PSI1 := 16.0000 ( x − .5 ) x2 ( x − 1.0 )2
> PSI2:=(x-x2)*(L2)^2;
PSI2 := 4.0000 ( x − 1.0 ) x2 ( x − .5 )2
POLINÔMIO DE HERMITE
OBERVE QUE O POLINÔMIO TEM GRAU 5
> P:=simplify(evalf(f0*PHI0+f1*PHI1+f2*PHI2+g0*PSI0+g1*PSI1+g2*PSI2,
3));
P := 447.5000000 x7 + 18.84375000 x − 87.56250000 x2 + 992.4687500 x3 − 2083. x6
+ 3628.750000 x5 − 2895. x4
CALCULABDO A DERIVADA DO POLINÔMIO DE HERMITE
> Q:=simplify(evalf(diff(P,x),3));
Q := 1480. x6 + 18.80000000 + 21.40000000 x + 1040. x2 − 5920. x5 + 8450. x4 − 5080. x3
> a0:=subs(x=0.0, P);a1:=subs(x=0.5, P);a2:=subs(x=1.0, P);
a0 := 0
a1 := 15.0000
a2 := 22.00000000
> b0:=subs(x=0, Q); b1:=subs(x=0.5, Q); b2:=subs(x=1.0, Q);
Page 9
b0 := 18.90000
b1 := 20.5000
b2 := 19.500000
Note que os valores obtidos acima, asseguram que o polinômio interpola corretamente a função e sua
derivada.
A seguir as respostas dos itens do exercício.
A POSIÇÃO E A VELOCIDADE DO CARRO NO TEMPO PASSADO DE 0.8 SEGUNDOS É
DADO POR:
> a4:=subs(x=0.8, P); b4:=subs(x=0.8, Q);
a4 := 19.13817600
b4 := 11.088160
Suponhamos que a partir da aproximação da derivada, queira se obter a velocidade máximo do carro
na distância percorrida.
Nesse caso, como temos um polinômio de grau 5 então devemos resolver por um método numérico.
Assim vamos empregar o Método de Newton_Raphson, para determinar os pontos críticos de da
derivada do polinômio Q(x) que dá uma aproximação para a derivda.
> DQ:=simplify(diff(Q,x));
DQ := 21.34275000 + 2078.018250 x − 15260.77013 x2 + 8920.719000 x5 − 29620.61625 x4
+ 33858.05300 x3
ACHAR OS PONTOS CRÍTICOS; VAMOS APLICAR O METODO DE NEWTON-RAPHSON
MÉTODO DE NEWTON-RAPHSON
> D1Q:=simplify(diff(DQ,x));
D1Q := −2812.800000 x2 + 4375.200000 x − 1377.600000
>
Fazendo o método iterativo de Newton_Raphson para determinar a razi de Q(x). t0,t1,t2......
> t0:=0.1;
t0 := .1
> DQ0:=evalf(subs(x=t0, DQ),5); D1Q0:=evalf(subs(x=t0, D1Q),5);
DQ0 := 77.77
D1Q0 := -968.2
> t1:=t0-(DQ0/D1Q0);
t1 := .1803243132
> DQ1:=subs(x=t1, DQ); D1Q1:=subs(x=t1, D1Q);
DQ1 := 11.8214117
D1Q1 := -680.108484
> t2:=t1-(DQ1/D1Q1);
t2 := .1977059692
Page 10
> DQ2:=subs(x=t2, DQ); D1Q2:=subs(x=t2, D1Q);
> t3:=t2-(DQ2/D1Q2);
DQ2 := .5027573
D1Q2 := -622.542585
t3 := .1985135562
> erro:=abs(t3-t2);
erro := .0008075870
> DQ3:=subs(x=t3, DQ); D1Q3:=subs(x=t3, D1Q);
> t4:=t3-(DQ3/D1Q3);
> erro:=abs(t4-t3);
DQ3 := .0010637
D1Q3 := -619.909276
t4 := .1985152721
erro := .17159 10-5
Assim a raiz aproximada da funçao Q(x)=P'(x) é x=0.19836. Nesse caso a velocidade máxima é dada
por:
> Vmax:=subs(x=t4, Q);
Vmax := 35.72724147
VELOCIDADE MAXIMA EM METROS POR SEGUNDOS NO INTERVALO DE 0 A 1
SEGUNDOS DA TABELA, O QUE SIGNIFICA EM KM POR HORA:
> vam:=3.6*Vmax;
vam := 128.6180693
CALCULO DA VELOCIDADE MÍNIMA
> t0:=0.6;
t0 := .6
> DQ0:=subs(x=t0, DQ); D1Q0:=subs(x=t0, D1Q);
DQ0 := -46.94560
D1Q0 := 234.9120
>
> t1:=t0-(DQ0/D1Q0);
t1 := .7998433456
> DQ1:=subs(x=t1, DQ); D1Q1:=subs(x=t1, D1Q);
DQ1 := 12.4822979
D1Q1 := 322.3875580
> t2:=t1-(DQ1/D1Q1);
t2 := .7611250465
Page 11
> DQ2:=subs(x=t2, DQ); D1Q2:=subs(x=t2, D1Q);
> t3:=t2-(DQ2/D1Q2);
DQ2 := -.0388224
D1Q2 := 322.9873746
t3 := .7612452444
> erro:=abs(t3-t2);
erro := .0001201979
> DQ3:=subs(x=t3, DQ); D1Q3:=subs(x=t3, D1Q);
> t4:=t3-(DQ3/D1Q3);
> erro:=abs(t4-t3);
DQ3 := .9 10-6
D1Q3 := 322.9985638
t4 := .7612452416
erro := .28 10-8
Assim a raiz aproximada da funçao Q(x)=P'(x) é x=0.761195 Nesse caso a velocidade máxima é dada
por:
> Vmin:=subs(x=t4, Q);
Vmin := 10.84522827
VELOCIDADE MINIMA EM METROS POR SEGUNDOS NO INTERVALO DE 0 A 1
SEGUNDOS DA TABELA, O QUE SIGNIFICA EM KM POR HORA:
> vim:=3.6*Vmin;
vim := 39.04282177
>
EXEMPL 4: Determine o polinômio de Hermite para os 4 pontos tabelados. Observe que agora o grau
do polinômio é :
São 4 pontos então teremos um polinômio de grau n=2*4-1=7
> x0:=0:
> x1:=0.5:
> x2:=1.0:
> x3:=1.5:
O valor da função f(x)
> f0:=0.0:
> f1:=15.0:
> f2:=22.0:
> f3:=21.0:
Vamos denotar g valor da derivada g(x)=f ' (x) Page 12
> g0:=18.86:
> g1:=20.47:
> g2:=19.38:
> g3:=21.00:
CÁLCULO DOS POLINÔMIOS DE LAGRANGE, PARA CADA PONTO UM POLINÔMIO.
NESSE CASO OS PPOLINÔMIOS SÃO DE GRAU 3
> L0:=evalf((x-x1)*(x-x2)*(x-x3)/((x0-x1)*(x0-x2)*(x0-x3)),3);
L0 := −1.33 ( x − .5 ) ( x − 1.0 ) ( x − 1.5 )
> L1:=evalf((x-x0)*(x-x2)*(x-x3)/((x1-x0)*(x1-x2)*(x1-x3)),3);
L1 := 4.00 x ( x − 1.0 ) ( x − 1.5 )
> L2:=evalf((x-x0)*(x-x1)*(x-x3)/((x2-x0)*(x2-x1)*(x2-x3)),3);
L2 := −4.00 x ( x − .5 ) ( x − 1.5 )
> L3:=evalf((x-x0)*(x-x1)*(x-x2)/((x3-x0)*(x3-x1)*(x3-x2)),3);
>
>
>
>
>
L3 := 1.33 x ( x − .5 ) ( x − 1.0 )
LL0:=plot([L0(x)], x=x0..x3, color=[red], style=[line]):
LL1:=plot([L1(x)], x=x0..x3, color=[blue], style=[line]):
LL2:=plot([L2(x)], x=x0..x3, color=[green], style=[line]):
LL3:=plot([L3(x)], x=x0..x3, color=[black], style=[line]):
display(LL0,LL1,LL2,LL3);
OBSERVE PELO GRÁFICO QUE OS QUATRO POLINÔMIOS DE LAGRANGE SÃO
ORTOGONAIS EM RELAÇÃO AOS PONTOS TABELADOS.
CÁLCULO DA DERIVADAS DOS POLINÔMIOS
Page 13DE LAGRANGE
>
>
>
>
>
>
>
>
DL0:=diff(L0,x):;
DL1:=diff(L1,x):;
DL2:=diff(L2,x):;
DL3:=diff(L3,x):;
D0:=subs(x=x0, DL0):;
D1:=subs(x=x1, DL1):;
D2:=subs(x=x2, DL2):;
D3:=subs(x=x3, DL3):;
>
CÁLCULO DAS FUNÇÕES BASE PARA A FUNÇÃO PRIMITIVA f
> PHI0:=(1-2*D0*(x-x0))*(L0)^2;
PHI0 := 1.7689 ( 1 + 7.3150 x ) ( x − .5 )2 ( x − 1.0 )2 ( x − 1.5 )2
> PHI1:=(1-2*D1*(x-x1))*(L1)^2;
PHI1 := 32.00000000 x3 ( x − 1.0 )2 ( x − 1.5 )2
> PHI2:=(1-2*D2*(x-x2))*(L2)^2;
PHI2 := 16.0000 ( 3.00000 − 2.0000 x ) x2 ( x − .5 )2 ( x − 1.5 )2
> PHI3:=(1-2*D3*(x-x3))*(L3)^2;
>
>
>
>
>
PHI3 := 1.7689 ( 11.97250 − 7.3150 x ) x2 ( x − .5 )2 ( x − 1.0 )2
LPHI0:=plot([PHI0(x)], x=x0..x3, color=[red], style=[line]):
LPHI1:=plot([PHI1(x)], x=x0..x3, color=[blue], style=[line]):
LPHI2:=plot([PHI2(x)], x=x0..x3, color=[green], style=[line]):
LPHI3:=plot([PHI3(x)], x=x0..x3, color=[black], style=[line]):
display(LPHI0,LPHI1,LPHI2, LPHI3);
Page 14
CÁLCULO DAS FUNÇÕES BASE PARA A FUNÇÃO g, DERIVADA DA FUNÇÃO f
> PSI0:=evalf((x-x0)*(L0*L0),3);
PSI0 := 1.77 x ( x − .5 )2 ( x − 1.0 )2 ( x − 1.5 )2
> PSI1:=evalf((x-x1)*(L1*L1),3);
PSI1 := 16.0 ( x − .5 ) x2 ( x − 1.0 )2 ( x − 1.5 )2
> PSI2:=evalf((x-x2)*(L2)^2,3);
PSI2 := 16.0 ( x − 1.0 ) x2 ( x − .5 )2 ( x − 1.5 )2
> PSI3:=evalf((x-x3)*(L3)^2,3);
>
>
>
>
>
PSI3 := 1.77 ( x − 1.5 ) x2 ( x − .5 )2 ( x − 1.0 )2
LPS0:=plot([PSI0(x)], x=x0..x3, color=[red], style=[line]):
LPS1:=plot([PSI1(x)], x=x0..x3, color=[blue], style=[line]):
LPS2:=plot([PSI2(x)], x=x0..x3, color=[green], style=[line]):
LPS3:=plot([PSI3(x)], x=x0..x3, color=[black], style=[line]):
display(LPS0,LPS1,LPS2,LPS3);
Page 15
POLINÔMIO DE HERMITE
OBERVE QUE O POLINÔMIO TEM GRAU 7
> P:=simplify(evalf(f0*PHI0+f1*PHI1+f2*PHI2+f3*PHI3+g0*PSI0+g1*PSI1+
g2*PSI2+g3*PSI3,4));
P := 212.3977500 x7 + 18.77625000 x + 10.67137500 x2 + 346.3361875 x3 − 987.3527500 x6
+ 1692.901188 x5 − 1271.730000 x4
>
> LP0:=plot([P(x)], x=x0..x3, color=[black], style=[point]):
> display(LP0);
Page 16
>
CALCULANDO A DERIVADA DO POLINÔMIO DE HERMITE
> Q:=simplify(evalf(diff(P,x),5));
Q := 18.77625000 + 21.34275000 x + 1039.009125 x2 − 5086.923375 x3 + 1486.786500 x6
− 5924.123250 x5 + 8464.513250 x4
>
> LQ0:=plot([Q(x)], x=x0..x3, color=[black], style=[point]):
> display(LQ0);
Page 17
VERIFICAÇÃO DA INTERPOLAÇÃO POLINOMIAL E DE SUA DERIVADA NOS PONTOS
TABELADOS.
> a0:=subs(x=0.0, P);a1:=subs(x=0.5, P);a2:=subs(x=1.0,
P);a3:=subs(x=1.5, P);
a0 := 0
a1 := 15.00000000
a2 := 22.00000000
a3 := 20.84463281
> b0:=subs(x=0, Q); b1:=subs(x=0.5, Q); b2:=subs(x=1.0, Q);
b3:=subs(x=1.5, Q);
b0 := 18.77625000
b1 := 20.4687500
b2 := 19.38125000
b3 := 20.9081251
Para calcular a velocidade máxima devemos determinar o valor máximo da função Q(x) que
representa a velocidade.
Note que convertendo 90 Km/h=25m/s. OBSERVE PELO GRAFICO ABAIXO A VELOCIDADE
FOI SUPERIOR A 104,26 metros por segundo
que representa=104,26*3.6=375,34 Km/h. nOTE QUE PELO GRÁFICO A VELOCIDADE
MAXIMA É ATINGIDA PROXIMO AO PONTO 1. pARA SE CALCULAR PRECISAMENTE O
Page 18
VALOR MAXIMO DA DERIVADA,
TEMOS QUE CALCULAR INICIALMENTE ENCONTRAR OS PONTOS CRÍTICOS, OU SEJA
Q'(X)=0. PARA ISSO PODE SER USADO O METODO NUMÉRICO DE NEWTON-RAPHSON,
POR EXEMPLO
> DQ:=diff(Q,x):;
ACHAR OS PONTOS CRÍTICOS; VAMOS APLICAR O METODO DE NEWTON-RAPHSON
MÉTODO DE NEWTON-RAPHSON
> D1Q:=diff(DQ,x):;
> t0:=0.3;
t0 := .3
> DQ0:=subs(x=t0, DQ); D1Q0:=subs(x=t0, D1Q);
DQ0 := -32.8480794
D1Q0 := -770.039094
>
> t1:=t0-(DQ0/D1Q0);
t1 := .2573423224
> DQ1:=subs(x=t1, DQ); D1Q1:=subs(x=t1, D1Q);
DQ1 := 2.3978516
D1Q1 := -868.417191
> t2:=t1-(DQ1/D1Q1);
t2 := .2601034971
> DQ2:=subs(x=t2, DQ); D1Q2:=subs(x=t2, D1Q);
> t3:=t2-(DQ2/D1Q2);
DQ2 := .0049796
D1Q2 := -864.740890
t3 := .2601092556
> erro:=abs(t3-t2);
erro := .57585 10-5
> DQ3:=subs(x=t3, DQ); D1Q3:=subs(x=t3, D1Q);
> t4:=t3-(DQ3/D1Q3);
> erro:=abs(t4-t3);
DQ3 := -.9 10-6
D1Q3 := -864.732791
t4 := .2601092546
erro := .10 10-8
> DQ4:=subs(x=t4, DQ); D1Q4:=subs(x=t4, D1Q);
> t5:=t4-(DQ4/D1Q4);
Page 19
> erro:=abs(t4-t3);
DQ4 := .2 10-6
D1Q4 := -864.732794
t5 := .2601092548
erro := .10 10-8
> DQ5:=subs(x=t5, DQ); D1Q5:=subs(x=t5, D1Q);
> t6:=t5-(DQ5/D1Q5);
> erro:=abs(t5-t4);
DQ5 := .8 10-6
D1Q5 := -864.732792
t6 := .2601092557
erro := .2 10-9
> DQ6:=subs(x=t6, DQ); D1Q6:=subs(x=t6, D1Q);
> t7:=t6-(DQ6/D1Q6);
> erro:=abs(t6-t5);
DQ6 := -.2 10-6
D1Q6 := -864.732790
t7 := .2601092555
erro := .9 10-9
>
Assim a raiz aproximada da funçao Q(x)=P'(x) é x=0.523806. Nesse caso a velocidade máxima é
dada por:
> Vmax:=subs(x=t7, Q);
Vmax := 37.21699616
VELOCIDADE MAXIMA EM METROS POR SEGUNDOS NO INTERVALO DE 0 A 5
SEGUNDOS DA TABELA, O QUE SIGNIFICA EM KM POR HORA:
>
> vam:=3.6*Vmax;
vam := 133.9811862
POLINÔMIOS POR PARTES DE HERMITE
Vamos calcular para cada dois pontos consectivos um polinomio de Hermite de grau 2+2-1=3
> restart:
> with(plots):
Page 20
> with(linalg):
Warning, new definition for norm
Warning, new definition for trace
> x0:=0.0:
> x1:=0.5:
> x2:=1.0:
> x3:=1.5:
O valor da função f(x)
> f0:=0.0:
> f1:=15.0:
> f2:=22.0:
> f3:=21.0:
Vamos denotar g valor da derivada g(x)=f ' (x)
> g0:=18.86:
> g1:=20.47:
> g2:=19.38:
> g3:=21.00:
CÁLCULO DOS POLINÔMIOS DE LAGRANGE, PARA CADA PONTO UM POLINÔMIO.
NESSE CASO OS POLINÔMIOS SÃO DE GRAU 3;
Primeiro polinômio por partes envolvendo os pontos x0 e x1
> L0:=evalf((x-x1)/((x0-x1)),3);
L0 := −2.00 x + 1.00
> L1:=evalf((x-x0)/((x1-x0)),3);
L1 := 2.00 x
CÁLCULO DA DERIVADAS DOS POLINÔMIOS DE LAGRANGE
> DL0:=diff(L0,x);
DL0 := -2.00
> DL1:=diff(L1,x);
DL1 := 2.00
> D0:=subs(x=x0, DL0);
D0 := -2.00
> D1:=subs(x=x1, DL1);
D1 := 2.00
CÁLCULO DAS FUNÇÕES BASE PARA A FUNÇÃO PRIMITIVA f
> PHI0:=(1-2*D0*(x-x0))*(L0)^2;
PHI0 := ( 1 + 4.00 x ) ( −2.00 x + 1.00 )2
> PHI1:=(1-2*D1*(x-x1))*(L1)^2;
PHI1 := 4.0000 ( 3.000 − 4.00 x ) x2
Page 21
CÁLCULO DAS FUNÇÕES BASE PARA A FUNÇÃO g, DERIVADA DA FUNÇÃO f
> PSI0:=(x-x0)*(L0*L0);
PSI0 := x ( −2.00 x + 1.00 )2
> PSI1:=(x-x1)*(L1*L1);
PSI1 := 4.0000 ( x − .5 ) x2
POLINÔMIO DE HERMITE: Para o primeiro intervalo temos o seguinte polinômio de grau 3:
> P1:=evalf(f0*PHI0+f1*PHI1+g0*PSI0+g1*PSI1,3);
P1 := 60.0 ( 3.00 − 4.00 x ) x2 + 18.9 x ( −2.00 x + 1.00 )2 + 82.0 ( x − .5 ) x2
CALCULABDO A DERIVADA DO POLINÔMIO DE HERMITE
> Q1:=evalf(diff(P1,x),3);
Q1 := −158. x2 + 120. ( 3.00 − 4.00 x ) x + 18.9 ( −2.00 x + 1.00 )2 − 75.6 x ( −2.00 x + 1.00 )
+ 164. ( x − .5 ) x
VERIFICAÇÃO DA INTERPOLAÇÃO POLINOMIAL E DE SUA DERIVADA NOS PONTOS
TABELADOS.
f(x)= g(x)
> a0:=subs(x=0, P1);a1:=subs(x=0.5, P1);
a0 := 0
a1 := 15.000000
> b0:=subs(x=0, Q1); b1:=subs(x=0.5, Q1);
b0 := 18.90000
b1 := 20.5000
Note que os valores obtidos acima, asseguram que o polinômio interpola corretamente a função e sua
derivada.
A seguir as respostas dos itens do exercício.
Polinômio de Hermite de grau 3 para o segundo intervalo: [X1, X2]
> L1:=evalf((x-x2)/((x1-x2)),3);
L1 := −2.00 x + 2.00
> L2:=evalf((x-x1)/((x2-x1)),3);
L2 := 2.00 x − 1.00
CÁLCULO DA DERIVADAS DOS POLINÔMIOS DE LAGRANGE
> DL1:=diff(L1,x);
DL1 := -2.00
> DL2:=diff(L2,x);
Page 22
DL2 := 2.00
> D1:=subs(x=x1, DL1);
D1 := -2.00
> D2:=subs(x=x2, DL2);
D2 := 2.00
CÁLCULO DAS FUNÇÕES BASE PARA A FUNÇÃO PRIMITIVA f
> PHI1:=(1-2*D1*(x-x1))*(L1)^2;
PHI1 := ( −1.000 + 4.00 x ) ( −2.00 x + 2.00 )2
> PHI2:=(1-2*D2*(x-x2))*(L2)^2;
PHI2 := ( 5.000 − 4.00 x ) ( 2.00 x − 1.00 )2
CÁLCULO DAS FUNÇÕES BASE PARA A FUNÇÃO g, DERIVADA DA FUNÇÃO f
> PSI1:=(x-x1)*(L1*L1);
PSI1 := ( x − .5 ) ( −2.00 x + 2.00 )2
> PSI2:=(x-x2)*(L2*L2);
PSI2 := ( x − 1.0 ) ( 2.00 x − 1.00 )2
POLINÔMIO DE HERMITE PARA O SEGUNDO INTERVALO:
> P2:=f1*PHI1+f2*PHI2+g1*PSI1+g2*PSI2;
P2 := 15.0 ( −1.000 + 4.00 x ) ( −2.00 x + 2.00 )2 + 22.0 ( 5.000 − 4.00 x ) ( 2.00 x − 1.00 )2
+ 20.47 ( x − .5 ) ( −2.00 x + 2.00 )2 + 19.38 ( x − 1.0 ) ( 2.00 x − 1.00 )2
Fazendo uma simplificação temos:
> P22:simplify(P2);
−107.7400000 x2 + 92.66000000 x − 10.32000000 + 47.40000000 x3
CALCULANDO A DERIVADA DO POLINÔMIO DE HERMITE
> Q2:=diff(P2,x);
Q2 := 80.470 ( −2.00 x + 2.00 )2 − 60.000 ( −1.000 + 4.00 x ) ( −2.00 x + 2.00 )
− 68.620 ( 2.00 x − 1.00 )2 + 88.000 ( 5.000 − 4.00 x ) ( 2.00 x − 1.00 )
− 81.8800 ( x − .5 ) ( −2.00 x + 2.00 ) + 77.5200 ( x − 1.0 ) ( 2.00 x − 1.00 )
Fazendo uma simplificação temos:
> Q22:=simplify(Q2);
Q22 := 142.2000000 x2 − 215.4800000 x + 92.66000000
VERIFICAÇÃO DA INTERPOLAÇÃO POLINOMIAL E DE SUA DERIVADA NOS PONTOS
TABELADOS.
f(x)= g(x)=exp(x)
> a0:=subs(x=0.5, P2);a1:=subs(x=1.0, P2);
a0 := 15.00000000
a1 := 22.00000000
> b0:=subs(x=0.5, Q2); b1:=subs(x=1.0, Q2);
Page 23
b0 := 20.47000000
b1 := 19.38000000
Note que os valores obtidos acima, asseguram que o polinômio interpola corretamente a função e sua
derivada.
Note que nos extremos do intervalo em comum com os dois Polinômios por partes temos:
P1(0.5)=P2(0.5)=22.0 (assegurando a continuidade).
Além disso Q1(0.5)=Q2(0.5)=19.38 (assegurando a continuidade da derivada)
INTERPOLANDO AGORA NO INTERVALO [X2, X3]
POLINÔMIO DE HERMITE
> L2:=evalf((x-x3)/((x2-x3)),3);
L2 := −2.00 x + 3.00
> L3:=evalf((x-x2)/((x3-x2)),3);
L3 := 2.00 x − 2.00
CÁLCULO DA DERIVADAS DOS POLINÔMIOS DE LAGRANGE
> DL2:=diff(L2,x);
DL2 := -2.00
> DL3:=diff(L3,x);
DL3 := 2.00
> D2:=subs(x=x2, DL2);
D2 := -2.00
> D3:=subs(x=x3, DL3);
D3 := 2.00
>
CÁLCULO DAS FUNÇÕES BASE PARA A FUNÇÃO PRIMITIVA f
> PHI2:=(1-2*D2*(x-x2))*(L2)^2;
PHI2 := ( −3.000 + 4.00 x ) ( −2.00 x + 3.00 )2
> PHI3:=(1-2*D3*(x-x3))*(L3)^2;
PHI3 := ( 7.000 − 4.00 x ) ( 2.00 x − 2.00 )2
CÁLCULO DAS FUNÇÕES BASE PARA A FUNÇÃO g, DERIVADA DA FUNÇÃO f
> PSI2:=evalf((x-x2)*(L2*L2),3);
PSI2 := ( x − 1.0 ) ( −2.00 x + 3.00 )2
> PSI3:=evalf((x-x3)*(L3*L3),3);
PSI3 := ( x − 1.5 ) ( 2.00 x − 2.00 )2
POLINÔMIO DE HERMITE
OBERVE QUE O POLINÔMIO TEM GRAU 3
Page 24
> P3:=evalf(f2*PHI2+f3*PHI3+g2*PSI2+g3*PSI3,3);
P3 := 22.0 ( −3.00 + 4.00 x ) ( −2.00 x + 3.00 )2 + 21.0 ( 7.00 − 4.00 x ) ( 2.00 x − 2.00 )2
+ 19.4 ( x − 1.0 ) ( −2.00 x + 3.00 )2 + 21.0 ( x − 1.5 ) ( 2.00 x − 2.00 )2
Fazendo uma simplificação temos:
> P33:=simplify(P3);
P33 := −664.4000000 x2 + 815.4000000 x − 306.6000000 + 177.6000000 x3
CALCULABDO A DERIVADA DO POLINÔMIO DE HERMITE
> Q3:=evalf(diff(P3,x),3);
Q3 := 107. ( −2.00 x + 3.00 )2 − 88.0 ( −3.00 + 4.00 x ) ( −2.00 x + 3.00 ) − 63.0 ( 2.00 x − 2.00 )2
+ 84.0 ( 7.00 − 4.00 x ) ( 2.00 x − 2.00 ) − 77.6 ( x − 1.0 ) ( −2.00 x + 3.00 )
+ 84.0 ( x − 1.5 ) ( 2.00 x − 2.00 )
Fazendo uma simplificação temos:
> Q33:=simplify(Q3);
Q33 := 531.2000000 x2 − 1324. x + 811.8000000
VERIFICAÇÃO DA INTERPOLAÇÃO POLINOMIAL E DE SUA DERIVADA NOS PONTOS
TABELADOS.
f(x)= g(x)=exp(x)
> a0:=subs(x=1.0, P3);a1:=subs(x=1.5, P3);
a0 := 22.00000000
a1 := 21.00000000
> b0:=subs(x=1.0, Q3); b1:=subs(x=1.5, Q3);
b0 := 19.0000000
b1 := 21.0000000
FAZENDO OS GRÁFICO DOS POLINÔMIOS DE HERMITE POR PARTES EM CADA
INTERVALO:
> H01:=plot([P1(x)], x=x0..x1, color=[red], style=[line]):
> H12:=plot([P2(x)], x=x1..x2, color=[blue], style=[line]):
> H23:=plot([P3(x)], x=x2..x3, color=[green], style=[line]):
O gráficos de cada polinômio por partes de Hermite é dado abaixo:
> display(H01,H12,H23);
Page 25
> G01:=plot([Q1(x)], x=x0..x1, color=[red], style=[line]):
> G12:=plot([Q2(x)], x=x1..x2, color=[blue], style=[line]):
> G23:=plot([Q3(x)], x=x2..x3, color=[green], style=[line]):
Os gráficos da cada derivada do polinômio de Hermite por partes é dado abaixo
>
> display(G01,G12,G23);
Page 26
Suponhamos que queiramos calcular o valor da função aproximada e de sua derivada nos pontos
x=0.3; x=0.7 e x=1.1. então
> c0:=subs(x=0.3, P1); c1:=subs(x=0.7, P2); c2:=subs(x=1.1, P3);
c0 := 9.15120000
c1 := 18.00760000
c2 := 22.80160000
Para as derivadas temos:
> d0:=subs(x=0.3, Q1); d1:=subs(x=0.7, Q2); d2:=subs(x=1.1, Q3);
d0 := 34.6920000
d1 := 11.50200000
d2 := -1.8480000
>
Page 27
Download