Escolar Documentos
Profissional Documentos
Cultura Documentos
CT - Centro de Tecnologia
DCA - Departamenteo de Engenharia de Computação e Automação
Haroldo de Carvalho
Nicole Rieckmann
Queda da Bolinha
• Introdução
//Metodo de RangeKutta
function[x,u] = rk4ed(a,b,h,u,v)
n =(ba)/
h;
x(1) = a;
u(1) = u;
v(1) = v;
for k = 1:n
f1 = f(x(k),u(k),v(k));
g1 = g(x(k),u(k),v(k));
g2 = g(x(k)+(h/2),u(k)+(h/2)*f1,v(k)+(h/2)*g1);
f2 = f(x(k) + (h/2),u(k) + (h/2)*f1,v(k) + (h/2)*g1);
g3 = g(x(k)+(h/2),u(k)+(h/2)*f2,v(k)+(h/2)*g2);
f3 = f(x(k) + (h/2),u(k) + (h/2)*f2,v(k) + (h/2)*g2);
f4 = f(x(k) + h,u(k) + h*f3,v(k) + h*g3);
g4 = g(x(k) +h,u(k) + h*f3,v(k)+h*g3);
x(k + 1) = x(k) + h;
u(k + 1) = u(k) + (h/6)*(f1+2*f2+2*f3+f4);
v(k + 1) = v(k) + (h/6)*(g1+2*g2+2*g3+g4);
printf("[x(k),u(k)] = [%f,%f]\n",x(k),u(k))
end
plot(x , u ,"diamondred");
plot(tempoReal,distanciaReal);
xtitle("Grafico de t vs h","tempo(s)","altura(m)");
endfunction
• Dados
Inicio: t = 0.0s
Final: t = 0.634s
Amostra:
t = 0.000s ; s = 2.00m
t = 0.100s ; s = 1.93m
t = 0.200s ; s = 1.78m
t = 0.300s ; s = 1.52m
t = 0.400s ; s = 1.17m
t = 0.500s ; s = 0.71m
t = 0.600s ; s = 0.18m
• Gráficos
Gráfico do experimento
Gráfico plotado do método de Range-Kutta4ed
• Conclusão
O vídeo serve como parâmetro real, ou seja, podemos determinar
aproximadamente a altura e em qual tempo a bolinha está, pausando o vídeo. E, então,
comparar ao cálculo realizado pelo método computacional. Como a precisão do cálculo
pode ser bem maior que a precisão dos nossos instrumentos de medição -que tem
limitações- o cálculo se aproxima bastante aos valores reais.
• Introdução
O intuito da reconstrução da Imagem consiste em recuperar pontos danificados de
uma imagem, modificando-os para obter um resultado próximo do original -sem os
respectivos defeitos.
Neste caso, utilizamos uma foto P&B (tons de preto), criamos falhas em uma
determinada imagem, e reconstruímos a imagem.
image = imread("imagem.png",-1);
mask = imread("mascara.png",-1);
if(!image.data){
std::cout << "imagem nao carregou corretamente\n";
return(-1);
}
width=image.size().width;
height=image.size().height;
imshow("original", image);
image.convertTo(image1,CV_32F);
image1.convertTo(image,CV_32F);
while(1){
for(int i=0; i<height; i++){
for(int j = 0; j < width; j++){
//if(i==0){
if( (j == 0) && (mask.at<uchar>(i, j) == 0) )
image1.at<float>(i, j) = ( image.at<float>(i, j + 1) + image.at<float>(i + 1, j) ) / 2;
else if( (j == height - 1) && (mask.at<float>(i, j) == 0) )
image1.at<float>(i, j) = ( image.at<float>(i, j - 1) + image.at<float>(i + 1, j) ) / 2;
else if(mask.at<float>(i, j) == 0)
image1.at<float>(i, j) = ( image.at<float>(i, j + 1) + image.at<float>(i + 1, j)
+ image.at<float>(i, j - 1) ) / 3;
//} else if(j == 0) {
if( (i == 0) && (mask.at<uchar>(i, j) == 0) )
image1.at<float>(i, j) = ( image.at<float>(i + 1, j) + image.at<float>(i, j + 1) ) / 2;
else if( (i == width - 1) && (mask.at<float>(i, j) == 0) )
image1.at<float>(i, j) = ( image.at<float>(i - 1, j) + image.at<float>(i, j + 1) ) / 2;
else if(mask.at<float>(i, j) == 0)
image1.at<float>(i, j) = ( image.at<float>(i + 1, j) + image.at<float>(i, j + 1)
+ image.at<float>(i - 1, j) ) / 3;
//else if(mask.at<float>(i, j) == 0)
// image1.at<float>(i, j) = ( image.at<float>(i, j + 1) + image.at<float>(i + 1, j)
+ image.at<float>(i - 1, j) + image.at<float>(i, j - 1) ) / 4;
//}//end-if-else
}//end-for
}//end-for
swap(image1, image);
image1.convertTo(im1,CV_8U);
if(waitKey(30) == 27) break;
}//end-while
imshow("processada", image);
imshow("mascara",mask);
waitKey();
return 0;
}
• Conclusão
Infelizmente, tivemos problemas com o OpenCv, portanto não temos um exemplo
ainda. Porém, podemos constatar que por mais perfeito e detalhista que seja o método de
reconstrução da imagem, a imagem a olho nu pode ficar com as falhas imperceptíveis,
porém conforme a a diferença de cores e complexidade da imagem as imperfeições são
mais visíveis.
• Introdução
O experimento consiste em soltar um carrinho de uma rampa
(superfície plana levemente inclinada) e comparar seus resultados com os
obtidos à base dos cálculos nos métodos computacionais.
• Dados:
Inicio: t = 0.0s
Final: t = 2.0s
Amostra:
t = 0.000s ; s = 1.98m
t = 0.100s ; s = 1.97m
t = 0.200s ; s = 1.94m
t = 0.300s ; s = 1.91m
t = 0.400s ; s = 1.88m
t = 0.500s ; s = 1.82m
t = 0.600s ; s = 1.78m
t = 0.700s ; s = 1.72m
t = 0.800s ; s = 1.65m
t = 0.900s ; s = 1.59m
t = 1.000s ; s = 1.50m
t = 1.100s ; s = 1.40m
t = 1.200s ; s = 1.27m
t = 1.300s ; s = 1.16m
t = 1.400s ; s = 1.00m
t = 1.500s ; s = 0.86m
t = 1.600s ; s = 0.68m
t = 1.700s ; s = 0.54m
t = 1.800s ; s = 0.37m
t = 1.900s ; s = 0.20m
t = 2.000s ; s = 0.00m
• Conclusão