Prévia do material em texto
> 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 .250000 ( ) − x 2.0 x2 ( ) − x 1.0 2 Page 6 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 3.669296668Page 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 DE LAGRANGEPage 13 > 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 DADERIVADAS 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