Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Numerico/P1 2019-1/numerico.docx q1 - 320400 ± 400 q2 - 2356 ± 50 q3 - 444.878160758 q7 - 1111011100 Numerico/P2 2019-1/numerico 2.docx q5 - 6.50826D-05 Numerico/P2 2019-1/Q1.sce //Dados os pontos x=1:0.1:3 e y=cos(11+2/x), encontre o polinômio P de grau 3 que melhor se ajusta a esses pontos. //Calcule P(2.11) clear x=[1:0.1:3]'; y=cos(11+2./x); n=size(x,1); p=3; //ordem do polinomio for i=1:p+1 for j=1:p+1 M(i,j)=sum(x.^(i+j-2) ) end end for i=1:p+1 b(i)=sum(y.*x.^(i-1) ) end a=inv(M)*b; p = poly(a, 'x','c') disp(p) //0.0368270576700524540000+1.6802396791208594000000*x-0.9195681633682397700000*x^2+0.142107638722791310000*x^3 //0.823072 Numerico/P2 2019-1/Q10.sce //Considere o conjunto de coordenadas V=[(5, 1.64);(6, 2.64);(7, 3.64);(8, 2.123)] Interpole o conjunto V em 6.64 clear xi = [5 6 7 8]'; yi = [1.64 2.64 3.64 2.123]'; A = [xi.^0 xi.^1 xi.^2 xi.^3]; a = A\yi; p = poly(a,'x','c') disp(p) //aplica 6.64 em 84.735 -43.8865*x +7.551*x^2 -0.4195*x^3 //3.438510592 Numerico/P2 2019-1/Q2.sce //Encontre os pesos Ai da quadratura I=A1*f(0.1)+A2*f(1.2)+A3*f(2.1) tal que o erro seja o menor possível para aproximar a integral de f no intervalo 0 a 2. Forneça como resposta A1. clear //nós t1=0.1 t2=1.2 t3=2.1 //limites a=0 b=2 A=[1 1 1 t1 t2 t3 t1^2 t2^2 t3^2] b=[b-a ((b^2)-(a^2))/2 ((b^3)-(a^3))/3]' w=inv(A)*b disp(w(1)) //0.5030303030303030500000 Numerico/P2 2019-1/Q3.sce //Seja u'=14/t com u(1)=14 Aproxime u(2) usando h=0.1 e o método de Euler. clear function y=f(t, u) y=14/t endfunction function [u]=euler(a, T, h) //T tempo final //Nint numero de intervalos t(1)=1 u(1)=a Nint=(T-t(1))/h for n=1:Nint t(n+1)=t(n)+h; u(n+1)=u(n)+h*f(t(n),u(n)) end ufinal=u(n+1); plot(t,u,'r.-');xgrid endfunction disp(euler(14,2,0.1)) //dados da pergunta e ja imprime resp.:0.3860892 //24.062799644455993000000 Numerico/P2 2019-1/Q4.sce //Aproxime integral de 2 a 3 de sin(x+9/x) com 7 dígitos significativos. clear function S=simpson(a, b, n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos S=0 for i=1:n x1=x(i) // extremo esquerdo x3=x(i+1) //extremo direito x2=x1+h/2 //ponto médio A1=1/6; A2=4/6; A3=1/6 ds=(A1*f(x1)+A2*f(x2)+A3*f(x3))*h S=S+ds end endfunction function y=f(x) y=sin(x+9/x) endfunction //no scilab, entra com o comando "simpson(a,b,n)", sendo a o limite inferior da integral, //b o limite superior da integral, e n o número de intervalos que deseja (o problema não dará //o numero de intervalos) disp(simpson(2,3,1000000)) //-0.13261582302 Numerico/P2 2019-1/Q5.sce //Seja p(x) o polinômio que interpola a função seno em 10 pontos uniformemente espaçados entre 0 e 2pi (inclusive). Determine o valor do erro absoluto cometido ao aproximarmos sin(6) por p(6): xi = [0:0.62831:2*%pi]'; yi = sin(xi); A = [xi.^0 xi.^1 xi.^2 xi.^3 xi.^4 xi.^5 xi.^6 xi.^7 xi.^8 xi.^9]; a = A\yi; p = poly(a,'x','c') disp(p) //p6=0.000000000001875951178+0.999289035007789980000*6+0.0032854548977429691000*6^2-0.1728581076103972200000*6^3+0.0063689564521590795000*6^4+0.0043387208897505249000*6^5+0.0015985067332641948000*6^6-0.0006078055875138072400*6^7+0.0000638748994253027010*6^8-0.0000022591136212016898*6^9 //p7=sin(6) //resposta -> p6-p7=0.000044 Numerico/P2 2019-1/Q6.sce //encontre os coeficientes [c1,c2c3] do método do passo multiplo Un+1 = Un + h[ C1Fn+1 + C2Fn + C3Fn-2] //forneça c1 x(1)=1 x(2)=0 x(3)=-2 //daqui pra baixo NUNCA MUDA b(1)=1 b(2)=1/2 b(3)=1/3 for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b disp(c(1)) //0.4444444444 Numerico/P2 2019-1/Q6-2.sce //os x serão os pontos onde a f(x) é calculada //usa qdo Un+1 = Un + H [ C1Fn+1 + C2Fn + C3Fn-2] x(1)=1 x(2)=0 x(3)=-2 //daqui pra baixo NUNCA MUDA b(1)=1 b(2)=1/2 b(3)=1/3 for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b disp(c(1)) Numerico/P2 2019-1/Q7.sce //Aproxime a área da região abaixo da curva h(x)=5*sin(x/4) em utilizando o método do trapézio com h=0.1. clear function S=trapezio(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos S=0 for i=1:n x1=x(i) // extremo esquerdo x2=x(i+1) //extremo direito A1=1/2; A2=1/2 ds=(A1*f(x1)+A2*f(x2))*h S=S+ds end endfunction function y=f(x) y=5*sin(x/4) endfunction //no scilab, entra com o comando "trapezio(a,b,n)", sendo a o limite inferior da integral, //b o limite superior da integral, e n o número de intervalos que deseja (o problema não dará //o numero de intervalos) //calcula o numero de intervalos com h fixo a=5 b=6 h=0.1 //h fixo n=abs((a-b)/h) disp(n) disp(trapezio(5,6,10)) Numerico/P2 2019-1/Q7-2.sce //Aproxime a área da região abaixo da curva h(x)=5*sin(x/4) em utilizando o método do trapézio com h=0.1. clear function S=trapezio(a, b, n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos S=0 for i=1:n x1=x(i) // extremo esquerdo x2=x(i+1) //extremo direito A1=1/2; A2=1/2 ds=(A1*f(x1)+A2*f(x2))*h S=S+ds end endfunction function y=f(x) y=x^3 -14 * x endfunction //no scilab, entra com o comando "trapezio(a,b,n)", sendo a o limite inferior da integral, //b o limite superior da integral, e n o número de intervalos que deseja (o problema não dará //o numero de intervalos) //calcula o numero de intervalos com h fixo a=5 b=6 h=0.1 //h fixo n=abs((a-b)/h) disp(n) disp(trapezio(5,6,10)) //90.777500 Numerico/P2 2019-1/Q8.sce //Encontre a reta c+dx que melhor se ajusta aos pontos com coordenadas x=[1,1.2,1.4,1.6,1.8,2] e y=exp(x-6) //Forneça como respostas o coeficente clear x=1:0.2:2; function y=f(x) y=exp(x-6) endfunction n=size(x,1); p=1; for i=1:p+1 for j=1:p+1 M(i,j)=sum(x.^(i+j-2)) end end for i=1:p+1 b(i)=sum(f(x).*x.^(i-1)) end a=inv(M)*b; p = poly(a,'x','c') disp(p) //-0.0054630113917696664000 +0.0114873504172930680000x //0.0114873504172930680000 Numerico/P2 2019-1/Q9.sce //Seja u'=sin(5*t-u) com u(4)=1. Aproxime u(6) com 6 dígitos significativos utilizando qualquer método. clear function y=f(t, u) y=sin(5*t-u) //função endfunction function [u]=euler(a, T, Nint) //T tempo final //Nint numero de intervalos t(1)=4 u(1)=a //qdo u(0) troca por u(1) e acrescenta 1 ao T final exemplo u(2) fica u(3) h=(T-t(1))/Nint for n=1:Nint t(n+1)=t(n)+h; u(n+1)=u(n)+h*f(t(n),u(n)) end ufinal=u(n+1); //plot(t,u,'r.-');xgrid endfunction disp(euler(1,6,100000)) //dados da pergunta e ja imprime resp.: 2.658666 //1.601547 Numerico/P2 2019-1/Q9-2.sce //Seja u'=sin(5*t-u) com u(4)=1. Aproxime u(6) com 6 dígitos significativos utilizando qualquer método. clear function y=f(t, u) y=sin(5*t-u) endfunction function y=ft(t, u) y=5*cos(5*t-u) endfunction function [u]=taylor(a, T, N) u(1)=a; //cond inicial t(1)=4; h=(T-t(1))/N for n=1:N t(n+1)=t(n)+h; F=f(t(n),u(n)); Ft=ft(t(n),u(n)); u(n+1)=u(n)+h*F+(h^2/2)*Ft+(h^3/6) end ultimo=u(N+1); //plot(t,u,'r.-');xgrid endfunction disp(taylor(1,6,100000)) //1.601547 Numerico/Programas/AREA 1/Bisseccao.sce function y=f(x) y = (cos(x)+x^2-3*x)// coloca a função endfunction a=0 // coloca o intervalo b=16 for i=1:100 //coloca de 1 até quantas vezes quer repetir m=(a+b)/2 if f(a)*f(m)<0 then b=m else a=m end disp([a b]) //aparecer os resultados de a e b lado a lado end //disp((b-a)/2) //ver o erro absoluto Numerico/Programas/AREA 1/Bisseccao1.sce function y=f(x) y = (sqrt(10*x)-exp(-x^2))// coloca a função endfunction a=0 // coloca o intervalo b=1 for i=1:100 //coloca de 1 até quantas vezes quer repetir m=(a+b)/2 if f(a)*f(m)<0 then b=m else a=m end disp([a b]) //aparecer os resultados de a e b lado a lado end Numerico/Programas/AREA 1/Exemplo Resolucao de Sistemas Triangulares Superiores.sce M = [1 2 3 4 0 5 6 7 0 0 8 9 0 0 0 10]; b = [5 4 4 2] x=solveA(M,b) disp(x) // fazer M*x para ver se realmente é a solução Numerico/Programas/AREA 1/Fatoracao LU.sce function [L,A] = fatoraLU(A) n=size(A,1) L=eye(n,n) for j=1:n-1 for i=j+1:n L(i,j)=A(i,j)/A(j,j) A(i,j+1:n)=A(i,j+1:n)-L(i,j)*A(j,j+1:n) A(i,j)=0 end end endfunction // coloca a matriz. ex: A=[1 2 3; 4 5 6; 7 8 9 ] // [L,U]=fatoraLU(A) para mostrar as matrizes L e U // L*U para saber se deu certo Numerico/Programas/AREA 1/gauss_seidel.sce function [x,deltax]=gauss_seidel(A,b,x,tol,N) n=size(A,1) xnew =x convergiu=%F //FALSE; k=1 while k<=N & ~convergiu xnew(1)= (b(1)-A(1,2:n)*x(2:n) )/A(1,1) for i=2:n-1 xnew(i)= (b(i)-A(i,1:i-1)*xnew(1:i-1) - A(i,i+1:n)*x(i+1:n))/A(i,i) end xnew(n)= (b(n)-A(n,1:n-1)*xnew(1:n-1) )/A(n,n) deltax=max(abs(x-xnew)) if deltax<tol then convergiu=%T //TRUE end k=k+1 x=xnew; //atualiza x disp([k,x',deltax]) //depuração end if ~convergiu then error ('Nao convergiu') end endfunction Numerico/Programas/AREA 1/jacobi.sce function [x,deltax]=jacobi(A,b,x,tol,N) n=size(A,1) xnew =x convergiu=%F //FALSE; k=1 while k<=N & ~convergiu xnew(1)= (b(1)-A(1,2:n)*x(2:n) )/A(1,1) for i=2:n-1 xnew(i)= (b(i)-A(i,1:i-1)*x(1:i-1) - A(i,i+1:n)*x(i+1:n))/A(i,i) end xnew(n)= (b(n)-A(n,1:n-1)*x(1:n-1) )/A(n,n) deltax=max(abs(x-xnew)) if deltax<tol then convergiu=%T //TRUE end k=k+1 x=xnew; //atualiza x disp([k,x',deltax]) //depuração end if ~convergiu then error ('Nao convergiu') end endfunction Numerico/Programas/AREA 1/M_s/M4 - 3 - Newton.sce function y=f(x) y=exp(8*x)+exp(-x)+8*x endfunction function y=fl(x) y=-8*exp(8*x)-exp(x)+8 endfunction x=-10:0.1:10 plot(x,f(x),'r.-'); xgrid x=-0.1 for n=1:10 x = x - f(x)/fl(x) disp(x) end Numerico/Programas/AREA 1/M_s/M4 - 4.sce x=1 for i=1:100 //coloca de 1 até quantas vezes quer repetir x=1/sin(x) disp(x) end Numerico/Programas/AREA 1/M_s/M4 - 5 - Newton.sce function y=f(x) y=exp(2*cos(x)-1)-1 endfunction function y=fl(x) y=-2*sin(x)*exp(2*cos(x)-1) endfunction x=-10:0.1:10 plot(x,f(x),'r.-'); xgrid x=-0.1 for n=1:10 x = x - f(x)/fl(x) disp(x) end Numerico/Programas/AREA 1/M_s/M4 - 6 - Newton.sce function y=f(x) y=cos(sqrt(x^2+1))-sin(x) endfunction function y=fl(x) y=((-x*sin(sqrt(x^2+1)))/(sqrt(x^2+1)))-cos(x) endfunction x=-10:0.1:10 plot(x,f(x),'r.-'); xgrid x=-3.8 for n=1: x = x - f(x)/fl(x) disp(x) end Numerico/Programas/AREA 1/M_s/M4 - 7 - Newton.sce function y=f(x) y=exp(5*x)-26*sqrt(x) endfunction function y=fl(x) y=5*exp(5*x)-13*x^(-1/2) endfunction x=0.5 for n=1:3 x = x - f(x)/fl(x) disp(x) end Numerico/Programas/AREA 1/M_s/M6 - 3 - Jacobi.sce A=[6 1; -1 4] b=[1 2]' x1=[2 0]' [x,deltax]=jacobi(A,b,x1,10^(-5),4) Numerico/Programas/AREA 1/M_s/M6 - 4 - Norma.sce x=[3141592,1414213] y=[%pi,sqrt(2)]*10^6 z=x-y disp(norm(z,2)) Numerico/Programas/AREA 1/M_s/M6 - 5 - Gauss_Seidel.sce A=[6 1; -1 4] b=[1 2]' x1=[2 0]' [x,deltax]=gauss_seidel(A,b,x1,10^(-25),10) Numerico/Programas/AREA 1/M_s/M6 - 6 - Jacobi.sce A=[6 1; -1 4] b=[1 2]' x1=[2 0]' [x,deltax]=jacobi(A,b,x1,10^(-25),10) Numerico/Programas/AREA 1/Newton.sce function y=f(x) y=cos(10*x)-exp(-x) endfunction function y=fl(x) y=-10*sin(10*x)+exp(-x) endfunction x=-10:0.1:10 plot(x,f(x),'r.-'); xgrid x=0.5 for n=1:10 x = x - f(x)/fl(x) disp(x) end Numerico/Programas/AREA 1/Ponto Fixo.sce A=5 x=2 for n=1:10 x=x/2 + A/(2*x) disp(x) end Numerico/Programas/AREA 1/Ponto Fixo1.sce x=2 for n=1:100 x=log(10/x) disp(x) end Numerico/Programas/AREA 1/Resolucao de Sistemas Triangulares Inferiores.sce function [x]=solveA (A,b) n=size(A,1) // pra pegar o numero de linhas da matriz x(n)=b(n)/A(n,n) for i=2:n x(i)=(b(i)-A(i,1:i-1)*x(1:i-1))/A(i,i) end endfunction Numerico/Programas/AREA 1/Resolucao de Sistemas Triangulares Superiores.sce function [x]=solveA (A,b) n=size(A,1) // pra pegar o numero de linhas da matriz x(n)=b(n)/A(n,n) for i=n-1:-1:1 x(i)=(b(i)-A(i,i+1:n)*x(i+1:n))/A(i,i) end endfunction Numerico/Programas/AREA 1/T_s/T4 - 1 - Babilonio.sce x=0.9 for n=1:1000 x=x^3-x^2+1 disp(x) end Numerico/Programas/AREA 1/T_s/T4 - 2 - Babilonio.sce x=1.1 for n=1:15 x=x^3-x^2+1 disp(x) end Numerico/Programas/AREA 1/T_s/T4 - 3 - Babilonio.sce x=0 for n=1:10 x=-1/(x^2-x-2) disp(x) end Numerico/Programas/AREA 1/T_s/T4 - 5 - Newton.sce function y=f(x) y=x^2-6 endfunction function y=fl(x) y=2*x endfunction x=1 for n=1:50 x = x - f(x)/fl(x) disp(x) end Numerico/Programas/AREA 1/T_s/T4 - 6 - Newton.sce function y=f(x) y=x-cos(x) endfunction function y=fl(x) y=sin(x) endfunction x=-10:0.1:10 plot(x,f(x),'r.-'); xgrid x=[0,3] for n=1:10 x = x - f(x)/fl(x) disp(x) end Numerico/Programas/AREA 1/T_s/T4 - 7 - Newton.sce function y=f(x) y = (log(x-1)+cos(x-1))// coloca a função endfunction a=1.3 // coloca o intervalo b=2 for i=1:20 //coloca de 1 até quantas vezes quer repetir m=(a+b)/2 if f(a)*f(m)<0 then b=m else a=m end disp([a b]) //aparecer os resultados de a e b lado a lado end Numerico/Programas/AREA 1/T_s/T4 - 8 - Newton.sce function y=f(x) y=x^3-4*x^2+5*x-2 endfunction function y=fl(x) y=3*x^2-8*x+5 endfunction x=-10:0.1:10 plot(x,f(x),'r.-'); xgrid x=2 for n=1:10 x = x - f(x)/fl(x) disp(x) end Numerico/Programas/AREA 1/T_s/T6 - 10 - Gauss-Seidel.sce A=[2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2] b =[1 1 1 1 1 1 1 1]' x1=[0 0 0 0 0 0 0 0]' //chute inicial [x,dx]=gauss_seidel(A,b,x1,10^(-7),95) //TESTA PARA QUAL NÚMERO A COLUNA 10 TERÁ 10^-7 DIGITOS SIG Numerico/Programas/AREA 1/T_s/T6 - 5 - Jacobi.sce A=[4 4; 3 4] b=[1 1]' x1=[1 0]' [x,deltax]=jacobi(A,b,x1,10^(-5),5) Numerico/Programas/AREA 1/T_s/T6 - 6 - Jacobi.sce A=[4 4; 3 4] b=[1 1]' x1=[1 0]' [x,deltax]=jacobi(A,b,x1,10^(-25),50) Numerico/Programas/AREA 1/T_s/T6 - 7 - Gauss-Seidel.sce A=[4 4; 3 4] b=[1 1]' x1=[1 0]' [x,deltax]=gauss_seidel(A,b,x1,10^(-25),50) Numerico/Programas/AREA 1/T_s/T6 - 8 - Gauss-Seidel.sce A=[2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2] b =[1 1 1 1 1 1 1 1]' x1=[0 0 0 0 0 0 0 0]' //chute inicial [x,dx]=gauss_seidel(A,b,x1,10^(-4),25) //pega os valores da iteração 26 e armazena no vetor x //copia no scilab "norm(x,%inf)" Numerico/Programas/AREA 1/T_s/T6 - 9 - Jacobi.sce A=[2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 1 2] b =[1 1 1 1 1 1 1 1]' x1=[0 0 0 0 0 0 0 0]' //chute inicial [x,dx]=jacobi(A,b,x1,10^(-4),100) //pega os valores da iteração 51 e armazena transposta no vetor x //copia no scilab "norm((b-A*x),2)" Numerico/Programas/AREA 2/Euler.sce function y=f(t,u) y=sin(u+t) endfunction function [u]=euler(N,cor) //mais pontos, mais suave a curva fica u(1)=2; //condição inicial t(1)=0; //tempo inicial T=3; //tempo final h=(T-t(1))/N for n=1:N t(n+1)=t(n)+h; u(n+1)=u(n)+h*f(t(n),u(n)) end ultimo=u(N+1); plot(t,u,cor) endfunction Numerico/Programas/AREA 2/Heun.sce function y=f(t,u) y=sin(u+t) endfunction function [u]=heun(N,cor) //mais pontos, mais suave a curva fica u(1)=2; //condição inicial t(1)=0; //tempo inicial T=3; //tempo final h=(T-t(1))/N for n=1:N t(n+1)=t(n)+h; util =u(n)+h*f(t(n),u(n)) F1=f(t(n),u(n)) F2=f(t(n+1),util) //Heun - explicito u(n+1)=u(n)+(h/2)*(F1+F2) end ultimo=u(N+1); plot(t,u,cor) endfunction Numerico/Programas/AREA 2/Interpolacao polinomial.sce xi = [2 3]'; yi = [4 7]'; A = [xi.^0 xi.^1]; a = A\yi; p = poly(a,'x','c') disp(p) Numerico/Programas/AREA 2/Lagrange.sce function y=L(X,x,k) //X é o ponto onde calculo a interpolação, x é o vetor dos pontos que quero calcular a interp, k é o indice n=size(x,1); y=1 for j=1:n if(k <> j) y=y.*(X-x(j))./(x(k)-x(j)) end end endfunction x=[1 3 4 6]'; y=sin(x); n=length(x); plot(x,y,'ro-'); xgrid X=0.5:0.1:6.5 p=0 for k=1:n p=p+y(k)*L(X,x,k) end //L(6,x,3) para testar L(3) no ponto 6, tem que ser igual a 0 Numerico/Programas/AREA 2/M_s/M10 - 1 - Quadratura Gaussiana 2 nos.sce //quadratura guassiana para 2 nós //calcula a integral da função y function S=gaussiana(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos w1=1; t1=-sqrt(3)/3; w2=1; t2=-t1; //w são os pesos //t são os nós S=0 for i=1:n alpha=(x(i+1)-x(i))/2 bet =(x(i+1)+x(i))/2 x1=alpha*t1+bet; x2=alpha*t2+bet; A=(w1*f(x1)+w2*f(x2))*h/2 S=S+A end endfunction //definição da função function y=f(x) y=sin(8*x) endfunction disp(gaussiana(1,10,7)) //esse código divide o intervalo de a até b em n intervalo, e em cada intervalo //utiliza uma quadratura gaussiana com 3 nós Numerico/Programas/AREA 2/M_s/M10 - 10 - 4 nos.sce //4 nós x1=0 x2=5/5 x3=7/5 x4=2 //Limites de integração a=0 b=2 A=[1 1 1 1; x1 x2 x3 x4; x1^2 x2^2 x3^2 x4^2;x1^3 x2^3 x3^3 x4^3] b=[b-a (b^2-a^2)/2 (b^3-a^3)/3 (b^4-a^4)/4]' w=inv(A)*b disp(norm(w,2)) Numerico/Programas/AREA 2/M_s/M10 - 2 - Quadratura Gaussiana 3 nos.sce //quadratura guassiana para 3 nós //calcula a integral da função y function S=gaussiana(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos w1=5/9; t1=-sqrt(3/5); w2=8/9; t2=0; w3=w1; t3=-t1; //w são os pesos //t são os nós S=0 for i=1:n alpha=(x(i+1)-x(i))/2 bet =(x(i+1)+x(i))/2 x1=alpha*t1+bet; x2=alpha*t2+bet; x3=alpha*t3+bet; A=(w1*f(x1)+w2*f(x2)+w3*f(x3))*h/2 S=S+A end endfunction //definição da função function y=f(x) y=sin(8*x) endfunction disp(gaussiana(1,10,7)) //esse código divide o intervalo de a até b em n intervalo, e em cada intervalo //utiliza uma quadratura gaussiana com 3 nós Numerico/Programas/AREA 2/M_s/M10 - 3 - Quadratura Gaussiana 4 nos.sce //quadratura guassiana para 4 nós //calcula a integral da função y function S=gaussiana(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos w1=(18+sqrt(30))/36; t1=sqrt((3-2*sqrt(6/5))/7); w2=(18-sqrt(30))/36; t2=sqrt((3+2*sqrt(6/5))/7); w3=w1; t3=-t1; w4=w2; t4=-t2; //w são os pesos //t são os nós S=0 for i=1:n alpha=(x(i+1)-x(i))/2 bet =(x(i+1)+x(i))/2 x1=alpha*t1+bet; x2=alpha*t2+bet; x3=alpha*t3+bet; x4=alpha*t4+bet; A=(w1*f(x1)+w2*f(x2)+w3*f(x3)+w4*f(x4))*h/2 S=S+A end endfunction //definição da função function y=f(x) y=sin(8*x) endfunction disp(gaussiana(1,10,4)) //esse código divide o intervalo de a até b em n intervalo, e em cada intervalo //utiliza uma quadratura gaussiana com 3 nós Numerico/Programas/AREA 2/M_s/M10 - 4 - Quadratura Gaussiana 2 nos.sce //quadratura guassiana para 2 nós //calcula a integral da função y function S=gaussiana(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos w1=1; t1=-sqrt(3)/3; w2=1; t2=-t1; //w são os pesos //t são os nós S=0 for i=1:n alpha=(x(i+1)-x(i))/2 bet =(x(i+1)+x(i))/2 x1=alpha*t1+bet; x2=alpha*t2+bet; A=(w1*f(x1)+w2*f(x2))*h/2 S=S+A end endfunction //definição da função function y=f(x) y=sin(7*x+1) endfunction disp(gaussiana(2,4,9)) //esse código divide o intervalo de a até b em n intervalo, e em cada intervalo //utiliza uma quadratura gaussiana com 3 nós Numerico/Programas/AREA 2/M_s/M10 - 5 - Quadratura Gaussiana 3 nos.sce //quadratura guassiana para 3 nós //calcula a integral da função y function S=gaussiana(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos w1=5/9; t1=-sqrt(3/5); w2=8/9; t2=0; w3=w1; t3=-t1; //w são os pesos //t são os nós S=0 for i=1:n alpha=(x(i+1)-x(i))/2 bet =(x(i+1)+x(i))/2 x1=alpha*t1+bet; x2=alpha*t2+bet; x3=alpha*t3+bet; A=(w1*f(x1)+w2*f(x2)+w3*f(x3))*h/2 S=S+A end endfunction //definição da função function y=f(x) y=sin(7*x+1) endfunction disp(gaussiana(2,4,72)) //esse código divide o intervalo de a até b em n intervalo, e em cada intervalo //utiliza uma quadratura gaussiana com 3 nós Numerico/Programas/AREA 2/M_s/M10 - 6 - 3 nos.sce //nós t1=0.1 t2=0.5 t3=1 A=[1 1 1 t1 t2 t3 t1^2 t2^2 t3^2] b=[1 1/2 1/3]' w=inv(A)*b disp(w) //conferir nas alternativas qual a fração se se adequa a resposta Numerico/Programas/AREA 2/M_s/M10 - 7 - 3 nos.sce //nós t1=0.1 t2=1.2 t3=2.1 A=[1 1 1 t1 t2 t3 t1^2 t2^2 t3^2] b=[1 1/2 1/3]' w=inv(A)*b disp(w) Numerico/Programas/AREA 2/M_s/M10 - 8 - 4 nos.sce //4 nós x1=0 x2=5/5 x3=7/5 x4=2 //Limites de integração a=0 b=2 A=[1 1 1 1; x1 x2 x3 x4; x1^2 x2^2 x3^2 x4^2;x1^3 x2^3 x3^3 x4^3] b=[b-a (b^2-a^2)/2 (b^3-a^3)/3 (b^4-a^4)/4]' w=inv(A)*b disp(w) resposta=w(2) disp(resposta) Numerico/Programas/AREA 2/M_s/M10 - 9 - 4 nos.sce //4 nós x1=0 x2=2/5 x3=4/5 x4=2 //Limites de integração a=0 b=2 A=[1 1 1 1; x1 x2 x3 x4; x1^2 x2^2 x3^2 x4^2;x1^3 x2^3 x3^3 x4^3] b=[b-a (b^2-a^2)/2 (b^3-a^3)/3 (b^4-a^4)/4]' w=inv(A)*b disp(w(4)) Numerico/Programas/AREA 2/M_s/M11 - 1 - Euler.sce function y=f(t,u) y=11-t^2 endfunction function [u]=euler(a,T,h) t(1)=2 u(1)=a Nint=(T-t(1))/h for n=1:Nint t(n+1)=t(n)+h; u(n+1)=u(n)+h*f(t(n),u(n)) end ufinal=u(n+1); plot(t,u,'r.-');xgrid endfunction disp(euler(1,4,0.1)) Numerico/Programas/AREA 2/M_s/M11 - 2 - Euler.sce function y=f(t,u) y=2-t^2 endfunction function [u]=euler(a,T,h) t(1)=2 u(1)=a Nint=(T-t(1))/h for n=1:Nint t(n+1)=t(n)+h; u(n+1)=u(n)+h*f(t(n),u(n)) end ufinal=u(n+1); plot(t,u,'r.-');xgrid endfunction disp(euler(1,4,0.01)) Numerico/Programas/AREA 2/M_s/M11 - 3 - Heun.sce function y=f(t,u) y=6-t^2 endfunction function [u]=heun(a,T,h) //T tempo final //Nint numero de intervalos t(1)=2 u(1)=a Nint=(T-t(1))/h for n=1:Nint t(n+1)=t(n)+h; util=u(n)+h*f(t(n),u(n)) F1=f(t(n),u(n)) F2=f(t(n+1),util) //heun u(n+1)=u(n)+(h/2)*(F1+F2) end ufinal=u(n+1); plot(t,u,'r.-');xgrid endfunction disp(heun(1,4,0.1)) Numerico/Programas/AREA 2/M_s/M11 - 4 - Heun.sce function y=f(t,u) y=5-t^2 endfunction function [u]=heun(a,T,h) //T tempo final //Nint numero de intervalos t(1)=2 u(1)=a Nint=(T-t(1))/h for n=1:Nint t(n+1)=t(n)+h; util=u(n)+h*f(t(n),u(n)) F1=f(t(n),u(n)) F2=f(t(n+1),util) //heun u(n+1)=u(n)+(h/2)*(F1+F2) end ufinal=u(n+1); plot(t,u,'r.-');xgrid endfunction disp(heun(1,4,0.01)) //dados da pergunta e ja imprime resp.:0.4456529 Numerico/Programas/AREA 2/M_s/M11 - 5 - Euler.sce function y=f(t,u) y=sin(u+t+12) endfunction function [u]=euler(a,T,h) t(1)=0 u(1)=a Nint=(T-t(1))/h for n=1:Nint t(n+1)=t(n)+h; u(n+1)=u(n)+h*f(t(n),u(n)) end ufinal=u(n+1); plot(t,u,'r.-');xgrid endfunction disp(euler(1,3,0.1)) Numerico/Programas/AREA 2/M_s/M11 - 6 - Euler.sce function y=f(t,u) y=cos(u+3) endfunction function [u]=euler(a,T,h) //T tempo final //Nint numero de intervalos t(1)=1 u(1)=a Nint=(T-t(1))/h for n=1:Nint t(n+1)=t(n)+h; u(n+1)=u(n)+h*f(t(n),u(n)) end ufinal=u(n+1); plot(t,u,'r.-');xgrid endfunction disp(euler(2,4,0.01)) //dados da pergunta e ja imprime resp Numerico/Programas/AREA 2/M_s/M11 - 7 - Heun.sce function y=f(t,u) y=cos(u+7) endfunction function [u]=heun(a,T,h) //T tempo final //Nint numero de intervalos t(1)=1 u(1)=a Nint=(T-t(1))/h for n=1:Nint t(n+1)=t(n)+h; util=u(n)+h*f(t(n),u(n)) F1=f(t(n),u(n)) F2=f(t(n+1),util) //heun u(n+1)=u(n)+(h/2)*(F1+F2) end ufinal=u(n+1); plot(t,u,'r.-');xgrid endfunction disp(heun(2,4,0.01)) //dados da pergunta e ja imprime resp.:0.4456529 Numerico/Programas/AREA 2/M_s/M11 - 8 - Taylor 2� Ordem - Dig.sce function y=f(t, u) y=cos(u+t) endfunction function y=ft(t, u) y=-sin(u+t) endfunction function [u]=taylor(a, T, N) u(1)=a; //cond inicial t(1)=1; h=(T-t(1))/N for n=1:N t(n+1)=t(n)+h; F=f(t(n),u(n)); Ft=ft(t(n),u(n)) u(n+1)=u(n)+h*F+(h^2/2)*Ft end ultimo=u(N+1); plot(t,u,'r.-');xgrid endfunction disp(taylor(0.88,2,1000000)) //resp. Numerico/Programas/AREA 2/M_s/M12 - 1 - Passo Multiplo.sce //os x serão os pontos onde a f(x) é calculada //usa qdo Un+1 = Un + H [ C1Fn + C2Fn-1 + C3Fn-2] x(1)=0 x(2)=-1 x(3)=-2 //daqui pra baixo NUNCA MUDA b(1)=1 b(2)=1/2 b(3)=1/3 for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) //resp.: 1.9166667; -1.333333; 0.4166667 Numerico/Programas/AREA 2/M_s/M12 - 10.sce //os x serão os pontos onde a f(x) é calculada //o n é a posição do termo onde esta o Fn //Fx(xn) = [C1Fn + C2F(xn+h/3) + C3Fn+2] / h n=1 x(1)=0 x(2)=1/3 x(3)=2 //daqui pra baixo NUNCA MUDA b(1)=0 b(2)=1 b(3)=2*x(n) for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) Numerico/Programas/AREA 2/M_s/M12 - 2 - Passo Multiplo.sce //os x serão os pontos onde a f(x) é calculada //usa qdo Un+1 = Un + H [ C1Fn + C2Fn-1 + C3Fn-2] x(1)=1 x(2)=-1 x(3)=-2 //daqui pra baixo NUNCA MUDA b(1)=1 b(2)=1/2 b(3)=1/3 for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) //resp.: 1.9166667; -1.333333; 0.4166667 Numerico/Programas/AREA 2/M_s/M12 - 3 - Passo Multiplo.sce //os x serão os pontos onde a f(x) é calculada //usa qdo Un+1 = Un + H [ C1Fn + C2Fn-1 + C3Fn-2] x(1)=1 x(2)=-1 x(3)=-2 //daqui pra baixo NUNCA MUDA b(1)=1 b(2)=1/2 b(3)=1/3 for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) //resp.: 1.9166667; -1.333333; 0.4166667 Numerico/Programas/AREA 2/M_s/M12 - 4 - Passo Multiplo.sce //os x serão os pontos onde a f(x) é calculada //usa qdo Un+1 = Un + H [ C1Fn + C2Fn-1 + C3Fn-2] x(1)=1 x(2)=-1 x(3)=-2 //daqui pra baixo NUNCA MUDA b(1)=1 b(2)=1/2 b(3)=1/3 for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 A=[c(1) c(2) c(3)]; B = norm(A,2) disp(B) Numerico/Programas/AREA 2/M_s/M12 - 5 - Passo Multiplo.sce x(1)=1 x(2)=0 x(3)=-1 //daqui pra baixo NUNCA MUDA b(1)=1 b(2)=0 b(3)=2/6 for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) Numerico/Programas/AREA 2/M_s/M12 - 6 - Passo Multiplo.sce x(1)=1 x(2)=0 x(3)=-1 //daqui pra baixo NUNCA MUDA b(1)=1 b(2)=0 b(3)=2/6 for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(max(c)) Numerico/Programas/AREA 2/M_s/M12 - 7.sce clear n=2 x(1)=n-1 x(2)=n x(3)=n+1 b(1)=0 b(2)=1 b(3)=2*(n+0.3) // <----------- só mudar aqui for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) Numerico/Programas/AREA 2/M_s/M12 - 8.sce clear n=2 x(1)=n-1 x(2)=n x(3)=n+1 b(1)=0 b(2)=1 b(3)=2*(n+0.8) // <----------- só mudar aqui for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) Numerico/Programas/AREA 2/M_s/M12 - 9.sce //os x serão os pontos onde a f(x) é calculada //o n é a posição do termo onde esta o Fn //Fx(xn) = [C1Fn + C2F(xn+h/4) + C3Fn+2] / h n=1 x(1)=0 x(2)=1/4 x(3)=2 //daqui pra baixo NUNCA MUDA b(1)=0 b(2)=1 b(3)=2*x(n) for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) Numerico/Programas/AREA 2/M_s/M7 - 5 - Lagrange.sce function y=L(X,x,k) n=size(x,1); y=1; for j=1:n if(k <> j) y=y.*(X-x(j))./(x(k)-x(j)) end end endfunction x=[3 4]' y=3./x n=length(x) //plot(x,y,'ro-'),xgrid X=3+36/100 p=0 for k=1:n p=p+y(k)*L(X,x,k) end disp(p) //plot(X,p,'b.-') Numerico/Programas/AREA 2/M_s/M8 - 1 //Q1: Encontre a reta y=a_1+a_2 x que melhor se ajusta aos pontos com coordenadas x=[0, 0.2, 0.4, 0.6, 0.8, 1] e y=\sin(x+32). Forneça como respostas o coeficente a_1. clear x=[0:0.2:1]'; y=sin(x+32); n=size(x,1); M=[n sum(x) sum(x) sum(x.^2)] b=[sum(y) sum(x.*y)] a=inv(M)*b p = poly(a,'x','c') disp(p) Numerico/Programas/AREA 2/M_s/M8 - 2 //Q2: Dados os pontos x=0:0.2:1 e y=cos(x+34), encontre a reta y=ax+b que melhor se ajusta a esses pontos. Forneça como resposta o coeficiente a? clear x=[0:0.2:1]'; y=cos(x+34); n=size(x,1); M=[n sum(x) sum(x) sum(x.^2)] b=[sum(y) sum(x.*y)] a=inv(M)*b p = poly(a,'x','c') disp(p) //XX = 0:0.1:10; //YY = a(1)+a(2)*XX //plot(XX,YY,'b') //plot(x,y,'r*');xgrid Numerico/Programas/AREA 2/M_s/M8 - 3 //Q8: Dados os pontos x=1:0.5:12 e y=3sin(x+10)+x^2, encontre o polinômio de grau 2 que melhor se ajusta a esses pontos. Forneça como resposta o coeficiente de x^2. clear x=[1:0.5:12]'; y=3*sin(x+10)+x^2; n=size(x,1); p=2; for i=1:p+1 for j=1:p+1 M(i,j)=sum(x.^(i+j-2)) end end for i=1:p+1 b(i)=sum(y.*x.^(i-1)) end a=inv(M)*b; disp (a) p = poly(a,'x','c') disp(p) //XX =0:0.1:10; //YY =0 //residuo =0 //for i=1:p+1 // YY=YY+a(i)*XX.^(i-1); // residuo=residuo+a(i)*x.^(i-1); //end //residuo=residuo-y; //plot(XX,YY,'b') //plot(x,y,'r*');xgrid //os coeficientes da função que melhor se ajusta aos pontos é dado pelo vetor "a" //a ordem da função é definida em "p" Numerico/Programas/AREA 2/M_s/M8 - 4 //Q4: Dados os pontos x=1:0.5:12 e y=20*sin(x)+x^2, encontre a parábola p(x) que que melhor se ajusta a esses pontos. Forneça como resposta p(3.14). clear x=[1:0.5:12]'; y=20*sin(x)+x^2; n=size(x,1); p=2; //ordem do polinomio for i=1:p+1 for j=1:p+1 M(i,j)=sum(x.^(i+j-2) ) end end for i=1:p+1 b(i)=sum(y.*x.^(i-1) ) end a=inv(M)*b; p = poly(a,'x','c') disp(p) 10.543316 -1.6482777*3.14 +0.9959846*3.14^2 //XX= 3.14;//colocar aqui o ponto que se quer determinar //YY= 0 //residuo=0 //for i=1:p+1 // YY=YY+a(i)*XX.^(i-1); // residuo=residuo+a(i)*x.^(i-1); //end //residuo=residuo-y //YY=a(1)+a(2)*XX +a(3)*XX.^2 +a(4)*XX.^3 +a(5) //plot(XX,YY,'b') //plot(x,y,'r*');xgrid //disp(a) //disp(YY) coloquei como resposta Numerico/Programas/AREA 2/M_s/M8 - 5.sce x=[1:0.1:4]'; y=sin(10+1./x); n=size(x,1); p=3; //ordem do polinomio for i=1:p+1 for j=1:p+1 M(i,j)=sum(x.^(i+j-2) ) end end for i=1:p+1 b(i)=sum(y.*x.^(i-1) ) end a=inv(M)*b; p = poly(a, 'x','c') disp(p) Numerico/Programas/AREA 2/M_s/M8 - 6 //Q6: Qual reta no formato y=k*x melhor se ajusta aos pontos com coordenadas x=-2:0.1:2 e y=exp(x/5)-1? Forneça como resposta k. x=[-2:0.1:2]' b=exp(x/3)-1 A=[x^1] c=(A'*A)\(A'*b) disp(c) Numerico/Programas/AREA 2/M_s/M8 - 7 //Q7: Qual parábola do tipo y=a+bx^2 melhor se ajusta aos pontos com coordenadas x=0:0.1:2.5 e y=\cos(x)+16. Forneça o coeficiente b. clear x=[0:0.1:2.5]' y=cos(x)+12; n=size(x,1); p=2; M=[sum(x.^0) sum(x.^2) sum(x.^2) sum(x.^4)] b=[sum(y) sum(y.*x.^2)] a=inv(M)*b; XX=0:0.1:2.5; // aqui coloca o valor do ponto que ele pede YY=a(1)+a(2)*XX^2; p = poly(a,'x','c') disp(p) //plot(XX,YY,'b') //plot(x,y,'r*');xgrid Numerico/Programas/AREA 2/M_s/M8 - 8 clear x=[0:0.1:2.5]' y=cos(x)+22; n=size(x,1); p=2; M=[sum(x.^0) sum(x.^2) sum(x.^2) sum(x.^4)] b=[sum(y) sum(y.*x.^2)] a=inv(M)*b; XX=0:0.1:2.5; // aqui coloca o valor do ponto que ele pede YY=a(1)+a(2)*XX^2; //plot(XX,YY,'b') //plot(x,y,'r*');xgrid disp(a) p = poly(a,'x','c') disp(p) Numerico/Programas/AREA 2/M_s/M9 - 1 - Riemann.sce function S=riemann(a,b,n) // n numero de intervalos h=(b-a)/n x=linspace(a,b,n+1) S=0 for i=1:n A=f(x(i))*h //m=(x(i)+x(i+1))/2; //A=f(m)*h S=S+A end endfunction function y=f(x) y=cos(2*x) endfunction //no scilab riemann(2,3,32) Numerico/Programas/AREA 2/M_s/M9 - 2 - Simpson.sce function S=simpson(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos S=0 for i=1:n x1=x(i) // extremo esquerdo x3=x(i+1) //extremo direito x2=x1+h/2 //ponto médio A1=1/6; A2=4/6; A3=1/6 ds=(A1*f(x1)+A2*f(x2)+A3*f(x3))*h S=S+ds end endfunction function y=f(x) y=sin(x+19) endfunction //no scilab, entra com o comando "simpson(a,b,n)", sendo a o limite inferior da integral, //b o limite superior da integral, e n o número de intervalos que deseja (o problema não dará //o numero de intervalos) //calcula o numero de intervalos com h fixo a=0 b=3 h=0.5 //h fixo n=abs((a-b)/h) disp(n) Numerico/Programas/AREA 2/M_s/M9 - 3 - Trapezio.sce function S=trapezio(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos S=0 for i=1:n x1=x(i) // extremo esquerdo x2=x(i+1) //extremo direito A1=1/2; A2=1/2 ds=(A1*f(x1)+A2*f(x2))*h S=S+ds end endfunction function y=f(x) y=cos(x/14) endfunction //no scilab, entra com o comando "trapezio(2,3,8)" Numerico/Programas/AREA 2/M_s/M9 - 4 - Simpson.sce function S=simpson(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos S=0 for i=1:n x1=x(i) // extremo esquerdo x3=x(i+1) //extremo direito x2=x1+h/2 //ponto médio A1=1/6; A2=4/6; A3=1/6 ds=(A1*f(x1)+A2*f(x2)+A3*f(x3))*h S=S+ds end endfunction function y=f(x) y=cos(*x) endfunction disp(simpson(2,3,64)) Numerico/Programas/AREA 2/M_s/M9 - 8 - Riemann.sce function S=riemann(a,b,n) // n numero de intervalos h=(b-a)/n x=linspace(a,b,n+1) S=0 for i=1:n A=f(x(i))*h //m=(x(i)+x(i+1))/2; //A=f(m)*h S=S+A end endfunction function y=f(x) y=1/(11*x) endfunction //no scilab, entra com o comando "riemann(a,b,n)", sendo a o limite inferior da integral, //b o limite superior da integral, e n o número de intervalos que deseja (o problema não dará //o numero de intervalos) //calcula o numero de intervalos com h fixo a=2 b=3 h=0.0025 //h fixo n=abs((a-b)/h) disp(n) Numerico/Programas/AREA 2/M_s/M9 - 9 - Trapezio.sce function S=trapezio(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos S=0 for i=1:n x1=x(i) // extremo esquerdo x2=x(i+1) //extremo direito A1=1/2; A2=1/2 ds=(A1*f(x1)+A2*f(x2))*h S=S+ds end endfunction function y=f(x) y=x^3 -14 * x endfunction //no scilab, entra com o comando "trapezio(a,b,n)", sendo a o limite inferior da integral, //b o limite superior da integral, e n o número de intervalos que deseja (o problema não dará //o numero de intervalos) //calcula o numero de intervalos com h fixo a=1 b=3.5 h=0.1 //h fixo n=abs((a-b)/h) disp(n) Numerico/Programas/AREA 2/T_s/T10 - 1 - 3 nos.sce //nós t1=0 t2=0.6 t3=1 A=[1 1 1 t1 t2 t3 t1^2 t2^2 t3^2] b=[1 1/2 1/3]' w=inv(A)*b disp(w) //conferir nas alternativas qual a fração se se adequa a resposta Numerico/Programas/AREA 2/T_s/T10 - 10 - Quad. Gaussiana 4 nos.sce //quadratura guassiana para 4 nós //calcula a integral da função y function S=gaussiana(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos w1=(18+sqrt(30))/36; t1=sqrt((3-2*sqrt(6/5))/7); w2=(18-sqrt(30))/36; t2=sqrt((3+2*sqrt(6/5))/7); w3=w1; t3=-t1; w4=w2; t4=-t2; //w são os pesos //t são os nós S=0 for i=1:n alpha=(x(i+1)-x(i))/2 bet =(x(i+1)+x(i))/2 x1=alpha*t1+bet; x2=alpha*t2+bet; x3=alpha*t3+bet; x4=alpha*t4+bet; A=(w1*f(x1)+w2*f(x2)+w3*f(x3)+w4*f(x4))*h/2 S=S+A end endfunction //definição da função function y=f(x) y=sin(sin(sin(x))) endfunction disp(gaussiana(0,10,32)) //esse código divide o intervalo de a até b em n intervalo, e em cada intervalo //utiliza uma quadratura gaussiana com 3 nós Numerico/Programas/AREA 2/T_s/T10 - 2 - 4 nos.sce //nós t1=0 t2=1/3 t3=2/3 t4=1 A=[1 1 1 1 t1 t2 t3 t4 t1^2 t2^2 t3^2 t4^2 t1^3 t2^3 t3^3 t4^3] b=[1 1/2 1/3 1/4]' w=inv(A)*b disp(w) //conferir nas alternativas qual a fração se se adequa a resposta Numerico/Programas/AREA 2/T_s/T10 - 3 - 4 nos.sce //nós t1=1/8 t2=2/8 t3=6/8 t4=7/8 A=[1 1 1 1 t1 t2 t3 t4 //integral de t de -1 a 1 t1^2 t2^2 t3^2 t4^2 t1^3 t2^3 t3^3 t4^3] b=[1 1/2 1/3 1/4]' w=inv(A)*b disp(w) //conferir nas alternativas qual a fração se se adequa a resposta Numerico/Programas/AREA 2/T_s/T10 - 4 - 3 nos.sce //nós t1=-1 t2=0 t3=1 //limites a=-1 b=1 A=[1 1 1 t1 t2 t3 t1^2 t2^2 t3^2] b=[b-a ((b^2)-(a^2))/2 ((b^3)-(a^3))/3]' w=inv(A)*b disp(w) //conferir nas alternativas qual a fração se adequa a resposta Numerico/Programas/AREA 2/T_s/T10 - 5 - 3 nos.sce //nós t1=-0.5 t2=0 t3=0.5 a=-1 b=1 A=[1 1 1 t1 t2 t3 t1^2 t2^2 t3^2] b=[b-a ((b^2)-(a^2))/2 ((b^3)-(a^3))/3]' w=inv(A)*b disp(w) //conferir nas alternativas qual a fração se adequa a resposta Numerico/Programas/AREA 2/T_s/T10 - 6 - Quad. Gaussiana 2 nos.sce //quadratura guassiana para 2 nós //calcula a integral da função y function S=gaussiana(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos w1=1; t1=-sqrt(3)/3; w2=1; t2=-t1; //w são os pesos //t são os nós S=0 for i=1:n alpha=(x(i+1)-x(i))/2 bet =(x(i+1)+x(i))/2 x1=alpha*t1+bet; x2=alpha*t2+bet; A=(w1*f(x1)+w2*f(x2))*h/2 S=S+A end endfunction //definição da função function y=f(x) y=sin(sin(sin(x))) endfunction disp(gaussiana(0,10,2)) //esse código divide o intervalo de a até b em n intervalo, e em cada intervalo //utiliza uma quadratura gaussiana com 3 nós Numerico/Programas/AREA 2/T_s/T10 - 7 - Quad. Gaussiana 2 nos.sce //quadratura guassiana para 2 nós //calcula a integral da função y function S=gaussiana(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos w1=1; t1=-sqrt(3)/3; w2=1; t2=-t1; //w são os pesos //t são os nós S=0 for i=1:n alpha=(x(i+1)-x(i))/2 bet =(x(i+1)+x(i))/2 x1=alpha*t1+bet; x2=alpha*t2+bet; A=(w1*f(x1)+w2*f(x2))*h/2 S=S+A end endfunction //definição da função function y=f(x) y=sin(sin(sin(x))) endfunction disp(gaussiana(0,10,32)) //esse código divide o intervalo de a até b em n intervalo, e em cada intervalo //utiliza uma quadratura gaussiana com 3 nós Numerico/Programas/AREA 2/T_s/T10 - 8 - Quad. Gaussiana 2 nos.sce //quadratura guassiana para 2 nós //calcula a integral da função y function S=gaussiana(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos w1=1; t1=-sqrt(3)/3; w2=1; t2=-t1; //w são os pesos //t são os nós S=0 for i=1:n alpha=(x(i+1)-x(i))/2 bet =(x(i+1)+x(i))/2 x1=alpha*t1+bet; x2=alpha*t2+bet; A=(w1*f(x1)+w2*f(x2))*h/2 S=S+A end endfunction //definição da função function y=f(x) y=sin(sin(sin(x))) endfunction disp(gaussiana(0,10,128)) //esse código divide o intervalo de a até b em n intervalo, e em cada intervalo //utiliza uma quadratura gaussiana com 3 nós Numerico/Programas/AREA 2/T_s/T10 - 9 - Quad. Gaussiana 3 nos.sce //quadratura guassiana para 3 nós //calcula a integral da função y function S=gaussiana(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos w1=5/9; t1=-sqrt(3/5); w2=8/9; t2=0; w3=w1; t3=-t1; //w são os pesos //t são os nós S=0 for i=1:n alpha=(x(i+1)-x(i))/2 bet =(x(i+1)+x(i))/2 x1=alpha*t1+bet; x2=alpha*t2+bet; x3=alpha*t3+bet; A=(w1*f(x1)+w2*f(x2)+w3*f(x3))*h/2 S=S+A end endfunction //definição da função function y=f(x) y=sin(sin(sin(x))) endfunction disp(gaussiana(0,10,64)) //esse código divide o intervalo de a até b em n intervalo, e em cada intervalo //utiliza uma quadratura gaussiana com 3 nós Numerico/Programas/AREA 2/T_s/T11 - 1 - Euler.sce function y=f(t,u) y=u*t endfunction function [u]=euler(a,T,h) //T tempo final //Nint numero de intervalos t(1)=1 u(1)=a Nint=(T-t(1))/h for n=1:Nint t(n+1)=t(n)+h; u(n+1)=u(n)+h*f(t(n),u(n)) end ufinal=u(n+1); plot(t,u,'r.-');xgrid endfunction disp(euler(0.1,2,0.1)) //dados da pergunta e ja imprime resp.:0.3860892 Numerico/Programas/AREA 2/T_s/T11 - 2 - Heun.sce function y=f(t,u) y=u*t endfunction function [u]=heun(a,T,h) //T tempo final //Nint numero de intervalos t(1)=1 u(1)=a Nint=(T-t(1))/h for n=1:Nint t(n+1)=t(n)+h; util=u(n)+h*f(t(n),u(n)) F1=f(t(n),u(n)) F2=f(t(n+1),util) //heun u(n+1)=u(n)+(h/2)*(F1+F2) end ufinal=u(n+1); plot(t,u,'r.-');xgrid endfunction disp(heun(0.1,2,0.1)) //dados da pergunta e ja imprime resp.:0.4456529 Numerico/Programas/AREA 2/T_s/T11 - 3 - Taylor 2� Ordem.sce function y=f(t,u) y=u*t endfunction function y=ft(t,u) y=(u*t^2)+u endfunction function [u]=taylor(a,T,h) u(1)=a; //cond inicial t(1)=1; N=(T-t(1))/h for n=1:N t(n+1)=t(n)+h; F=f(t(n),u(n)); Ft=ft(t(n),u(n)) u(n+1)=u(n)+h*F+(h^2/2)*Ft end ultimo=u(N+1); plot(t,u,'r.-');xgrid endfunction disp(taylor(0.1,2,0.1)) //resp.:0.4428927 Numerico/Programas/AREA 2/T_s/T11 - 4 - Taylor 3� Ordem.sce function y=f(t,u) y=u*t endfunction function y=ft(t,u) y=(u*t)*t+u endfunction function y=ftt(t,u) y=(u*t^3)+2*u*t+u*t endfunction function [u]=taylor(a,T,h) u(1)=a; //cond inicial t(1)=1; N=(T-t(1))/h for n=1:N t(n+1)=t(n)+h; F=f(t(n),u(n)); Ft=ft(t(n),u(n)) Ftt=ftt(t(n),u(n)) u(n+1)=u(n)+h*F+(h^2/2)*Ft+(h^3/6)*Ftt end ultimo=u(N+1); plot(t,u,'r.-');xgrid endfunction disp(taylor(0.1,2,0.1)) //resp.:0.4478043 Numerico/Programas/AREA 2/T_s/T11 - 5 - Taylor 2� Ordem - Dig.sce function y=f(t,u) y=u*t endfunction function y=ft(t,u) y=(u*t)*t+u endfunction function [u]=taylor(a,T,N) u(1)=a; //cond inicial t(1)=1; h=(T-t(1))/N for n=1:N t(n+1)=t(n)+h; F=f(t(n),u(n)); Ft=ft(t(n),u(n)) Ftt=ftt(t(n),u(n)) u(n+1)=u(n)+h*F+(h^2/2)*Ft+(h^3/6)*Ftt end ultimo=u(N+1); plot(t,u,'r.-');xgrid endfunction disp(taylor(0.1,2,210)) //resp.:0.4481689 Numerico/Programas/AREA 2/T_s/T11 - 6 - Euler.sce function y=f(t,u) y=sin(u) //função endfunction function [u]=euler(a,T,Nint) //T tempo final //Nint numero de intervalos t(1)=1 u(1)=a //qdo u(0) troca por u(1) e acrescenta 1 ao T final exemplo u(2) fica u(3) h=(T-t(1))/Nint for n=1:Nint t(n+1)=t(n)+h; u(n+1)=u(n)+h*f(t(n),u(n)) end ufinal=u(n+1); plot(t,u,'r.-');xgrid endfunction disp(euler(1,3,100)) //dados da pergunta e ja imprime resp.: 2.658666 Numerico/Programas/AREA 2/T_s/T11 - 7 - Heun.sce function y=f(t,u) y=sin(u) endfunction function [u]=heun(a,T,Nint) //T tempo final //Nint numero de intervalos t(1)=1 u(1)=a //qdo u(0) troca por u(1) e acrescenta 1 ao T final exemplo u(2) fica u(3) h=(T-t(1))/Nint for n=1:Nint t(n+1)=t(n)+h; util=u(n)+h*f(t(n),u(n)) F1=f(t(n),u(n)) F2=f(t(n+1),util) //heun u(n+1)=u(n)+(h/2)*(F1+F2) end ufinal=u(n+1); plot(t,u,'r.-');xgrid endfunction disp(heun(1,3,100)) //dados da pergunta e ja imprime resp.:2.655871 Numerico/Programas/AREA 2/T_s/T11 - 8 - Taylor 2� Ordem - Dig.sce function y=f(t,u) y=sin(u) endfunction function y=ft(t,u) y=cos(u) endfunction function [u]=taylor(a,T,N) u(1)=a; //cond inicial t(1)=1; h=(T-t(1))/N for n=1:N t(n+1)=t(n)+h; F=f(t(n),u(n)); Ft=ft(t(n),u(n)) Ftt=ftt(t(n),u(n)) u(n+1)=u(n)+h*F+(h^2/2)*Ft+(h^3/6)*Ftt end ultimo=u(N+1); plot(t,u,'r.-');xgrid endfunction disp(taylor(1,3,1000)) //resp.:2.6559 Numerico/Programas/AREA 2/T_s/T12 - 1.sce //os x serão os pontos onde a f(x) é calculada //usa qdo Un+1 = Un + H [ C1Fn + C2Fn-1 + C3Fn-2] x(1)=0 x(2)=-1 x(3)=-2 //daqui pra baixo NUNCA MUDA b(1)=1 b(2)=1/2 b(3)=1/3 for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) //resp.: 1.9166667; -1.333333; 0.4166667 Numerico/Programas/AREA 2/T_s/T12 - 10.sce //Encontre os coeficientes da fórmula para aproximar a derivada f_{xx}(x_n) = [c_1 f_{n} + c_2 f_{n+1}+c_3 f_{n+3}]/h^2 //Os x serão os pontos onde a f(x) é calculada x(1)=0 x(2)=1 x(3)=3 //Daqui pra baixo NUNCA MUDA b(1)=0 b(2)=0 b(3)=2 for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) Numerico/Programas/AREA 2/T_s/T12 - 2.sce //os x serão os pontos onde a f(x) é calculada //usa qdo Un+1 = Un + H [ C1Fn+1 + C2Fn + C3Fn-1] x(1)=1 x(2)=0 x(3)=-1 //daqui pra baixo NUNCA MUDA b(1)=1 b(2)=1/2 b(3)=1/3 for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) //resp.: 0.4166667; 0.6666667; -0.0833333 Numerico/Programas/AREA 2/T_s/T12 - 3.sce //os x serão os pontos onde a f(x) é calculada //usa qdo Un+1 = Un + H [ C1Fn+1 + C2Fn-1 + C3Fn-3] x(1)=1 x(2)=-1 x(3)=-3 //daqui pra baixo NUNCA MUDA b(1)=1 b(2)=1/2 b(3)=1/3 for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) //resp.: 0.6666667; 0.4166667; -0.0833333 Numerico/Programas/AREA 2/T_s/T12 - 4.sce //os x serão os pontos onde a f(x) é calculada //usa qdo Un+1 = Un-1 + H [ C1Fn + C2Fn-1 + C3Fn-2] x(1)=0 x(2)=-1 x(3)=-2 //daqui pra baixo NUNCA MUDA b(1)=2 b(2)=0 b(3)=2/3 for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) //resp.: 2.3333333; -0.6666667; 0.3333333 Numerico/Programas/AREA 2/T_s/T12 - 5.sce //os x serão os pontos onde a f(x) é calculada //usa qdo Un+1 = Un-1 + H [ C1Fn+1 + C2Fn + C3Fn-1] x(1)=1 x(2)=0 x(3)=-1 //daqui pra baixo NUNCA MUDA b(1)=2 b(2)=0 b(3)=2/3 for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) //resp.: 0.3333333; 1.3333333; 0.3333333 Numerico/Programas/AREA 2/T_s/T12 - 7.sce //os x serão os pontos onde a f(x) é calculada //o n é a posição do termo onde esta o Fn //Fx(xn) = [C1Fn-1 + C2Fn + C3Fn+1] / H n=2 x(1)=-1 x(2)=0 x(3)=1 //daqui pra baixo NUNCA MUDA b(1)=0 b(2)=1 b(3)=2*x(n) for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) //resp.: -0.5; 0; 0.5 Numerico/Programas/AREA 2/T_s/T12 - 8.sce //os x serão os pontos onde a f(x) é calculada //o n é a posição do termo onde esta o Fn //Fx(xn) = [C1Fn + C2Fn+1 + C3Fn+2] / H n=1 x(1)=0 x(2)=1 x(3)=2 //daqui pra baixo NUNCA MUDA b(1)=0 b(2)=1 b(3)=2*x(n) for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) //resp.: -1.5; 2; -0.5 Numerico/Programas/AREA 2/T_s/T12 - 9.sce //os x serão os pontos onde a f(x) é calculada //o n é a posição do termo onde esta o Fn //Fx(xn) = [C1Fn-1 + C2Fn + C3Fn+2] / H n=2 x(1)=-1 x(2)=0 x(3)=2 //daqui pra baixo NUNCA MUDA b(1)=0 b(2)=1 b(3)=2*x(n) for i=1:3 M(1,i)=1 M(2,i)=x(i) M(3,i)=x(i)^2 end c=inv(M)*b S=c(1)^2+c(2)^2+c(3)^2 disp(c) //resp.: -0.6666667; 0.5; 0.1666667 Numerico/Programas/AREA 2/T_s/T7 - 10 - Lagrange.sce //O polinômio p(x)=3L_1(x)+4L_2(x) interpola o vetor com x=[5, 6]. //Assinale a alternativa correta. //RESPOSTA: p(6)=4 x=[5 6]' y=[1 ]' n=length(x) //ou n=size(x,1) function y=L(X,x,k) n=length(x); y=1; for j= 1:n if (k <> j) y=y.*(X-x(j))./(x(k)-x(j)) end end endfunction plot(x,y,'ro.-'),xgrid X=1:0.1:20 //menor que o menor x e maior que o maior x p=0 for k=1:n p=p+y(k)*L(X,x,k) // "." multiplicação elemento a elemento end plot(X,p,'g.-') //colocar no console: //L(5,x,1) = 1. //L(6,x,1) = 0. // L(5,x,2) = 0. //L(6,x,2) = 1. //L1=L(5,x,1); //L2=L(6,x,2); //t=3*L1+4*L2 = 7. //L5=3*L1 = 3. //L6=4*L2 = 4. Numerico/Programas/AREA 2/T_s/T7 - 2 - Vandermond.sce x=[10001 10002 10003 10004 10005]'; n=size(x,1); for i=1:n for j=1:n V(i,j)=x(i)^(j-1) end end nc=norm(V,1)*norm(inv(V),1) //numero de conficionamento disp(nc) Numerico/Programas/AREA 2/T_s/T7 - 3 - Vandermond.sce x=[-1 0 1 2 3]'; n = length(x) for i=1:n for j=1:n V(i,j)=x(i)^(j-1) end end kappa = norm(V,1)*norm(inv(V),1) disp (kappa) Numerico/Programas/AREA 2/T_s/T7 - 9 - Lagrange.sce function y=L(X,x,k) n=size(x,1); y=1; for j=1:n if(k <> j) y=y.*(X-x(j))./(x(k)-x(j)) end end endfunction x=[6 7 8 9]' y=[3 4 7 6]' n=length(x) plot(x,y,'ro-'),xgrid X=5:0.1:10 p=0 for k=1:n p=p+y(k)*L(X,x,k) end plot(X,p,'b.-') //conferir no scilab qual das alternativas é falsa: //L(7,x,4)=0 verdadeiro //L(9,x,4)=0 falsa //L(6,x,4)=0 verdadeiro //L(8,x,4)=0 verdadeiro Numerico/Programas/AREA 2/T_s/T8 - 1 - Minimos Quadraticos.sce clear x=0:0.1:1; function y=f(x) y=sin(x) endfunction n=size(x,1); p=1; for i=1:p+1 for j=1:p+1 M(i,j)=sum(x.^(i+j-2)) end end for i=1:p+1 b(i)=sum(f(x).*x.^(i-1)) end a=inv(M)*b; disp(a) Numerico/Programas/AREA 2/T_s/T8 - 10 - Minimos Quadraticos.sce clear x=[0 1 2 3 5 7 8 10]'; y=[8 5 4 2 1 2 4 7]'; n=size(x,1); p=3; for i=1:p+1 for j=1:p+1 M(i,j)=sum(x.^(i+j-2)) end end for i=1:p+1 b(i)=sum(y.*x.^(i-1)) end a=inv(M)*b; XX =0:0.1:10; YY =0 residuo =0 for i=1:p+1 YY=YY+a(i)*XX.^(i-1); residuo=residuo+a(i)*x.^(i-1); end residuo=residuo-y; disp(residuo) //ver qual o número na quinta posição Numerico/Programas/AREA 2/T_s/T8 - 11 - Minimos Quadraticos.sce clear x=[0 1 2 3 5 7 8 10]'; y=[8 5 4 2 1 2 4 7]'; n=size(x,1); p=3; for i=1:p+1 for j=1:p+1 M(i,j)=sum(x.^(i+j-2)) end end for i=1:p+1 b(i)=sum(y.*x.^(i-1)) end a=inv(M)*b; XX =0:0.1:10; YY =0 residuo =0 for i=1:p+1 YY=YY+a(i)*XX.^(i-1); residuo=residuo+a(i)*x.^(i-1); end residuo=residuo-y; //os coeficientes da função que melhor se ajusta aos pontos é dado pelo vetor "a" //a ordem da função é definida em "p" disp (norm(residuo,2)) Numerico/Programas/AREA 2/T_s/T8 - 2 - Minimos Quadraticos.sce clear x=0:0.1:1; function y=f(x) y=sin(x) endfunction n=size(x,1); p=2; for i=1:p+1 for j=1:p+1 M(i,j)=sum(x.^(i+j-2)) end end for i=1:p+1 b(i)=sum(f(x).*x.^(i-1)) end a=inv(M)*b; disp(a) Numerico/Programas/AREA 2/T_s/T8 - 3 - Minimos Quadraticos.sce x=[0:0.1:1]' b=sin(x) A=[x^1] c=(A'*A)\(A'*b) disp(c) Numerico/Programas/AREA 2/T_s/T8 - 4 - Minimos Quadraticos.sce clear x=0:0.1:1; function y=f(x) y=cos(x) endfunction n=size(x,1); p=2; for i=1:p+1 for j=1:p+1 M(i,j)=sum(x.^(i+j-2)) end end for i=1:p+1 b(i)=sum(f(x).*x.^(i-1)) end a=inv(M)*b; p = poly(a,'x','c') disp(p) Numerico/Programas/AREA 2/T_s/T8 - 5 - Minimos Quadraticos.sce clear x=2:0.1:4 y=exp(x); n=size(x,1); p=2; M=[sum(x.^0) sum(x.^2) sum(x.^2) sum(x.^4)] b=[sum(y) sum(y.*x.^2)] a=inv(M)*b; p = poly(a,'x','c') disp(p) Numerico/Programas/AREA 2/T_s/T8 - 6 - Minimos Quadraticos.sce x=[0:0.1:1]; y=sin(x)+1; yi=log(y); A=[ones(11,1) x']; v=inv(A'*A)*A'*yi' a=exp(v(1)) b=v(2) disp(a,b) Numerico/Programas/AREA 2/T_s/T8 - 7 - Minimos Quadraticos.sce x=[0:0.1:1]; y=sin(x)+1; yi=1./y; A=[ones(11,1) x']; v=inv(A'*A)*A'*yi'; a=v(1) b=v(2) disp(a,b) Numerico/Programas/AREA 2/T_s/T8 - 8 - Minimos Quadraticos.sce clear x=[0 1 2 3 5 7 8 10]'; y=[8 5 4 2 1 2 4 7]'; n=size(x,1); p=2; for i=1:p+1 for j=1:p+1 M(i,j)=sum(x.^(i+j-2)) end end for i=1:p+1 b(i)=sum(y.*x.^(i-1)) end a=inv(M)*b; p = poly(a, 'x','c') disp(p) Numerico/Programas/AREA 2/T_s/T8 - 9 - Minimos Quadraticos.sce clear x=[0 1 2 3 5 7 8 10]'; y=[8 5 4 2 1 2 4 7]'; n=size(x,1); p=3; for i=1:p+1 for j=1:p+1 M(i,j)=sum(x.^(i+j-2)) end end for i=1:p+1 b(i)=sum(y.*x.^(i-1)) end a=inv(M)*b; p = poly(a, 'x','c') disp(p) Numerico/Programas/AREA 2/T_s/T9 - 1 - Riemann.sce function S=riemann(a,b,n) // n numero de intervalos h=(b-a)/n x=linspace(a,b,n+1) S=0 for i=1:n A=f(x(i))*h //m=(x(i)+x(i+1))/2; //A=f(m)*h S=S+A end endfunction function y=f(x) y=cos(2*x) endfunction disp(riemann(2,3,32)) Numerico/Programas/AREA 2/T_s/T9 - 10 - Simpson.sce function S=simpson(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos S=0 for i=1:n x1=x(i) // extremo esquerdo x3=x(i+1) //extremo direito x2=x1+h/2 //ponto médio A1=1/6; A2=4/6; A3=1/6 ds=(A1*f(x1)+A2*f(x2)+A3*f(x3))*h S=S+ds end endfunction function y=f(x) y=x^2 + exp(x) endfunction //no scilab, entra com o comando "simpson(a,b,n)", sendo a o limite inferior da integral, //b o limite superior da integral, e n o número de intervalos que deseja (o problema não dará //o numero de intervalos) //calcula o numero de intervalos com h fixo a=0 b=2 h=0.5 //h fixo n=abs((a-b)/h) disp(n) 4 disp(simpson(0,2,4)) Numerico/Programas/AREA 2/T_s/T9 - 2 - Trapezio.sce function S=trapezio(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos S=0 for i=1:n x1=x(i) // extremo esquerdo x2=x(i+1) //extremo direito A1=1/2; A2=1/2 ds=(A1*f(x1)+A2*f(x2))*h S=S+ds end endfunction function y=f(x) y=cos(2*x) endfunction disp(trapezio(2,3,8)) Numerico/Programas/AREA 2/T_s/T9 - 3 - Simpson.sce function S=simpson(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos S=0 for i=1:n x1=x(i) // extremo esquerdo x3=x(i+1) //extremo direito x2=x1+h/2 //ponto médio A1=1/6; A2=4/6; A3=1/6 ds=(A1*f(x1)+A2*f(x2)+A3*f(x3))*h S=S+ds end endfunction function y=f(x) y=cos(2*x) endfunction disp(simpson(2,3,64)) Numerico/Programas/AREA 2/T_s/T9 - 5 - Trapezio.sce function S=trapezio(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos S=0 for i=1:n x1=x(i) // extremo esquerdo x2=x(i+1) //extremo direito A1=1/2; A2=1/2 ds=(A1*f(x1)+A2*f(x2))*h S=S+ds end endfunction function y=f(x) y=sin(cos(2*x)) endfunction disp(trapezio(2,3,32)) //no scilab, entra com o comando "trapezio(a,b,n)", sendo a o limite inferior da integral, //b o limite superior da integral, e n o número de intervalos que deseja (o problema não dará //o numero de intervalos) //para essa questão, trocar o valor de n e avaliar a partir de qual o n a resposta fica //com 3 dígitos após a vírgula sem alterar Numerico/Programas/AREA 2/T_s/T9 - 8 - Riemann.sce function S=riemann(a,b,n) // n numero de intervalos h=(b-a)/n x=linspace(a,b,n+1) S=0 for i=1:n A=f(x(i))*h //m=(x(i)+x(i+1))/2; //A=f(m)*h S=S+A end endfunction function y=f(x) y=x^2 + exp(x) endfunction //no scilab, entra com o comando "riemann(a,b,n)", sendo a o limite inferior da integral, //b o limite superior da integral, e n o número de intervalos que deseja (o problema não dará //o numero de intervalos) //calcula o numero de intervalos com h fixo a=0 b=2 h=0.0078125 //h fixo n=abs((a-b)/h) disp(n) disp(riemann(0,2,256)) Numerico/Programas/AREA 2/T_s/T9 - 9 - Trapezio.sce function S=trapezio(a,b,n) h=(b-a)/n //n numero de intervalos x=linspace(a,b,n+1) //cria um vetor que vai de a até b, com n+1 pontos S=0 for i=1:n x1=x(i) // extremo esquerdo x2=x(i+1) //extremo direito A1=1/2; A2=1/2 ds=(A1*f(x1)+A2*f(x2))*h S=S+ds end endfunction function y=f(x) y=x^2 + exp(x) endfunction //no scilab, entra com o comando "trapezio(a,b,n)", sendo a o limite inferior da integral, //b o limite superior da integral, e n o número de intervalos que deseja (o problema não dará //o numero de intervalos) //calcula o numero de intervalos com h fixo a=0 b=2 h=0.0625 //h fixo n=abs((a-b)/h) disp(n) disp(trapezio(0,2,32)) Numerico/Programas/AREA 2/Taylor.sce function y=f(t,u) y=u*t endfunction function y=ft(t,u) y=(u*t)*t+u endfunction //function y=ftt(t,u) ordem 3 // y=(u*t)*t+u derivada disso //endfunction function [u]=taylor(N,cor) u(1)=2; //condição inicial t(1)=0; //tempo inicial T=3; //tempo final h=(T-t(1))/N for n=1:N t(n+1)=t(n)+h; F=f(t(n),u(n)); Ft=ft(t(n),u(n)) u(n+1)=u(n)+h*F1+(h^2/2)*Ft //ordem 2 // u(n+1)=u(n)+h*F1+(h^2/2)*Ft + (h^3/6)*Ftt //ordem 3 end ultimo=u(N+1); plot(t,u,cor) endfunction endfunction Numerico/Programas/AREA 2/Vandermond.sce x=[1 3 4 6]'; y=sin(x); n=length(x); plot(x,y,'ro-'), xgrid for i=1:n for j=1:n V(i,j)=x(i)^(j-1) end end a=inv(V)*y //para saber os coeficientes do polinômio //1.para descobrir o ponto //X=3.2 //p=0 //for k=1:n // p=p+a(k)*X^(k-1) //end //2.para fazer descobrir o polinomio que passa nos pontos //X=0.5:0.1:6.5 //p=0 //for k=1:n // p=p+a(k)*X.^(k-1) //end //plot(X,p,'b.-') //disp(a) //coeficientes do polinomio (ordem crescente de grau) nc=norm(V)*norm(inv(V)) //numero de condicionamento disp(nc) Numerico/QUESTOES.xlsx T1 QUESTÃO 1: x=(10010) um número em complemento 2 com 5 dígitos, converter para decimal SCILAB: VIDA: -1*2^7 RESPOSTA: -14 QUESTÃO 2: X = (10010) um número inteiro usando sinal e módulo, converter para decimal SCILAB: bin2dec('0010') VIDA: primeiro dígito à esquerda é o expoente que multiplica o número 1 = negativo; 0 = positivo o restante usar a lógica "normal" [(-1)^1] [(0*2^3) + (0*2^2) + (1*2^1) + (0*2^0)] = -2 RESPOSTA: -2 QUESTÃO 3: (0|1000|0100) representa qual número decimal, sabendo BIAS = 7 SCILAB: (-1)^0 *(1+2^-2)*2^(8-7) VIDA: 0 = (-1)^0 1000 = EXPOENTE = 2^3 =8 0100 = 1+ NÚMERO = 1 + 2^-2 (-1)^0 *(1+2^-2)*2^(8-7) RESPOSTA: 2.5 QUESTÃO 4: x=(101001)2 para decimal SCILAB: bin2dec('101001') VIDA: (1*2^5) + (1*2^3) + (1*2^0) RESPOSTA: 41 QUESTÃO 5: x=607.25 para Hexadecimal SCILAB: x=607 d0=modulo (x,16),x=fix(x/16) ATÉ CHEGAR A X=0 d0=15 x=37 d1=modulo (x,16),x=fix(x/16) d1=5 x=2 d2=modulo (x,16),x=fix(x/16) d2=2 x=0 x=0.25 d0=fix(16*x),x=16*x-d0 ATÉ CHEGAR A X=0 d0=4 x=0 RESPOSTA: (25F.4) QUESTÃO 6: ponto flutuante F(10, 4, -9998, 9998) = F(β,|M|,EMIN,EMAX) Considere o vetor com 3 componentes v=[v1, v2, v3] = [1+0.00001, 100000 + 1, 100000 + 1111] Qual o valor v nesta máquina? (ou seja, calcule v_1=1+0.00001, v_2=100000+1, v_3=100000+1111) VIDA: 1+0.00001 = 1.00001*10^0 100000+1 = 100001 = 1.00001*10^5 100000+1111 = 101111 = 1.01111*10^5 BASE 10 = PRECISO MOSTRAR PRIMEIRO DÍGITO 4 DÍGITOS DISPONÍVEIS CORTA 1.000*10^0 1.000*10^5 1.011*10^5 RESPOSTA: v = [1, 100000, 101100] QUESTÃO 7: Represente 12.25 em uma máquina com ponto flutuante F(2, 5, 5) e BIAS = 15 SCILAB: dec2base(12,2) 1100 y=0.25 d0=fix(2*y), y=2*y-d0 d0=0 y=0.5 d1=fix(2*y), y=2*y-d1 d1=1 y=0 (1100,01) RESPOSTA: 1.10001 * 2^10010 QUESTÃO 8: Converta x=(01D0,C)16 para decimal SCILAB: x=hex2dec('01D0') y= 12*16^-1 x+y VIDA: (0*16^3) + (1*16^2) + (13*16^1) + (0*16^0) + (12*16^-1) RESPOSTA: 464.75 QUESTÃO 9: 9^2-6+1 2*3+1 SCILAB: (9^2-6+1)/(2*3+1) VIDA: (9^2-6+1)/(2*3+1) RESPOSTA: (9^2-6+1)/(2*3+1) QUESTÃO 10: 6/1+2 6^1-2 6+1*2 6/1*2 SCILAB: - VIDA: - RESPOSTA: 8, 4, 8, 12 M1 QUESTÃO 1: Converta o número inteiro x=(101111)2 para decimal SCILAB: bin2dec('101111') VIDA: 1*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0 RESPOSTA: 47 QUESTÃO 2: Seja x=(10100) um número inteiro usando sinal e módulo, converter para decimal SCILAB: bin2dec('0100') VIDA: primeiro dígito à esquerda é o expoente que multiplica o número 1 = negativo; 0 = positivo o restante usar a lógica "normal" (-1)^1 * (1*2^2) = -4 RESPOSTA: -4 QUESTÃO 3: Seja x=(11001) um número de complemento 2 com 5 dígitos, converter x para decimal SCILAB: x=bin2dec('1001') y= (-1)*2^4 x+y VIDA: primeiro dígito à esquerda é número que multiplica 2^n-1 1 = -1; 0 = 0 o restante usar a lógica "normal" (-1)*2^4 * (1*2^2) = -7 RESPOSTA: -7 QUESTÃO 4: Converter x=(FADA.8)16 para decimal SCILAB: hex2dec('FADA') y=8*16^-1 x+y VIDA: 15*16^3 + 10*16^2 + 13*16^1 + 10*16^0 + 8*16^-1 RESPOSTA: 64218.5 QUESTÃO 5: Converter x=703168.5 para hexadecimal SCILAB: dec2base(703168,16) d=fix(16*y),y=16*y-d d=8 y=0 VIDA: - RESPOSTA: ABACO.8 QUESTÃO 6: A sequência de bits (0|1100|0010) representa qual número decimal BIAS = 8 SCILAB: (-1)^0 *(1+2^-3)*2^(12-8) VIDA: 0 = (-1)^0 1100 = EXPOENTE = 1*2^3 + 1*2^2 + 0*2^1 + 0*2^0 = 12 0010 = 1+ NÚMERO = 1 + 0*2^-1 + 0*2^-2 + 1*2^-3 + 0*2^-4 (-1)^0 *(1+2^-3)*2^(12-8) RESPOSTA: 18 QUESTÃO 7: Represente 26.5 em uma máquina com ponto flutuante F(2, 5, 5) e BIAS = 15 SCILAB: dec2base(26,2) 11010 x=0.5 d=fix(2*x),x=2*x-d d=1 x=0 (11010,1) 1.10101 * 10^4 BIAS + 4 = 19 dec2base(19,2) 10011 RESPOSTA: 1.10101*2^10011 QUESTÃO 8: ponto flutuante F(10, 4, -9998, 9998) = F(β,|M|,EMIN,EMAX) Considere v= 200000+34 Qual o valor v nesta máquina? VIDA: 200000+34 = 2,00034*10^5 BASE 10 = PRECISO MOSTRAR PRIMEIRO DÍGITO 4 DÍGITOS DISPONÍVEIS CORTA 2.000*10^5 RESPOSTA: 200000 QUESTÃO 9: Como escreve no scilab 9^2-6+1 / 2*3+1 SCILAB: (9^2-6+1)/(2*3+1) RESPOSTA: (9^2-6+1)/(2*3+1) QUESTÃO 10: Resultado de 5/1+2 5+1*2 5^1-2 5/1*2 SCILAB: 5/1+2 5+1*2 5^1-2 5/1*2 RESPOSTA: 7,3,7,10 T2 QUESTÃO 1: β=2, |M| = 5, 101.01010101010 Arredondar por proximidade VIDA: Primeiro normalizamos o número (1.0101010101010) Como em binário não precisamos guardar o primeiro dígito a mantissa do número é igual a 01010 Como o próximo número após a mantissa é 1, arredondamos pra cima RESPOSTA: 101,011 QUESTÃO 2: β=10, |M| = 5, 123.456789 Arredondar por corte VIDA: 123.45 RESPOSTA: 123.45 QUESTÃO 3: β=10, |M| = 5, 123.456789 Arredondar por proximidade VIDA: 123.46 RESPOSTA: 123.46 QUESTÃO 4: Quantos dígitos significativos possui x*=12000.00 ao aproximar x=1234.56 SCILAB: x=1234.56 x1=1200.00 erro_rel=abs((x-x1)/x) erro_rel = 0.0279938 0.0279938 < 5 * 10^-2 RESPOSTA: 2 QUESTÃO 5: Quantos dígitos significativos possui x*=0.00012 ao aproximar x=0.000121212 SCILAB: x=0.000121212 x1=0.00012 erro_rel=abs((x-x1)/x) erro_rel = 0.009999 0.009999 < 5 * 10^-2 RESPOSTA: 2 QUESTÃO 6: Quantos dígitos significativos possui x*= 1999.981928 ao aproximar x=2000 SCILAB: x=2000 x1=1999.981928 erro_rel=abs((x-x1)/x) erro_rel = 0.000009 0.000009 < 5 * 10^-5 RESPOSTA: 5 QUESTÃO 7: β=10, |M| = 10, x=3/9, y=0.333333 Haverá perda de quantos dígitos siginificativos no cálculo x-y SCILAB: x=3/9 x=0.333333333 y=0.333333 x-y 0.000000333 RESPOSTA: 6 QUESTÃO 8: Para qual x a função f(x)=sin(x^2-4) terá perda de dígitos significativos VIDA: Cancelamento catastrófico acontece quando fazemos subtrações com números muito próximos entre si RESPOSTA: x ≈ ±2 QUESTÃO 9: Para qual x a função f(x) = (x+3)/(1+x^2) terá perda de dígitos significativos VIDA: Cancelamento catastrófico acontece quando fazemos subtrações com números muito próximos entre si RESPOSTA: x ≈ -3 QUESTÃO 10: Sejam x=2^1/2 e y=18^1/2 u=x*x=2 e v= y/x = (18/2)^1/2 qual o erro relativo ao calcular x*x e y/x e o valor do epsilon de máquina SCILAB: x=sqrt(2) 1.41421D+00 y=sqrt(18) 4.24264D+00 u=x*x 2.00000D+00 v=y/x 3.00000D+00 abs((u-x)/x) 4.14214D-01 abs((v-(y/x))/(y/x)) 0.00000D+00 RESPOSTA: M2 QUESTÃO 1: máquina com base 10, precisão 9 arredondar por truncamento (corte) x=12345.678901234 VIDA: 12345.6789 RESPOSTA: 12345.6789 QUESTÃO 2: β=10, |M| = 6, 12345.678901234 Arredondar por proximidade VIDA: 12345.7 RESPOSTA: 12345.7 QUESTÃO 3: β=2, |M| = 3, x=10101.010101010101 Arredondar por truncamento (corte) VIDA: Primeiro normalizamos o número (1.0101010101010101*2^4) xc=(1.010)1010101010101*2^4 xc=1.010*2^4 deslocar de volta para notação normal (deslocar 4 casas o ponto decimal) RESPOSTA: 10100 QUESTÃO 4: β=10, |M| = 8, x=0.0012345678901234 Arredondar por proximidade VIDA: Primeiro normalizamos o número (1.2345678901234*10^-3) xp=(1.2345678)901234*10^-3 xp=1.2345678*10^-3=1.2345679*10^-3 xp=0.0012345679 RESPOSTA: 0.0012345679 QUESTÃO 5: Quantos dígitos significativos possui x=987650 ao aproximar y=987654.321123 SCILAB: y=987654.321123 x=987650 log10(abs((y-x)/y)) 5.3590083 RESPOSTA: 5 QUESTÃO 6: Quantos dígitos significativos possui x=798768.7898 ao aproximar y=798768.789789789 SCILAB: y=798768.789789789 x=798768.7898 erro_rel=abs((y-x)/y) erro_rel = 1.27834D-11 0.0000000000127834 < 5 * 10^-11 RESPOSTA: 11 QUESTÃO 7: Quantos dígitos significativos possui x=0.000333 ao aproximar y=1/3000 SCILAB: y=1/3000 x=0.000333 erro_rel=abs((y-x)/y) erro_rel = 0.001 0.001 < 5 * 10^-3 RESPOSTA: 3 QUESTÃO 8: x=10^14, y=10^-s, z=x+y qual o maior valor de 's' que permite 'z' diferente de 'x' no scilab SCILAB: RESPOSTA: QUESTÃO 9: m=((13*x+13)^1/2)-13 o cálculo de 'm' possui cancelamento catastrófico quando x for aproximado de a qual valor de a? VIDA: m=0 quando x=12 a é próximo de x RESPOSTA: 12 QUESTÃO 10: x=1234560/7 e y=176365.71428
Compartilhar