> 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