SOLUO DO PROBLEMA DO PARAQUEDISTA ATRAVS DE MTODOS NUMRICOS
MTODO APLICADO: EULER
#include #include #include #include
<stdlib.h> <stdio.h> <math.h> <iostream.h>
//y -> velocidade (v)
//x -> tempo (t) //double c=12.5 Kg/s //double g=9.8 m/s2 //int m=70 Kg double v(double t) /* a soluo v(t) da equao */ { return ((9.8*70)/12.5)*(1-exp(-(12.5/70)*t)); } double f(double t, double v) /* a funo f(t,v)*/ { return 9.8-(12.5/70)*v; } int main(int argc, char* argv[]) { double tn, tn1, tmax; /* variveis tn e tn+1 */ double vn, vn1; /* variveis vn e vn+1 */ double v0, t0; /* valores iniciais de y e x */ double h; /* passo */ //double v_it_anterior; double delta_v; /* Variacao da velocidade por passos*/ int n; /* nmero de iteraes */ t0 = 0.0; /* valor incial para t */ v0 = 1.0; /* valor inicial para v */ //tmax = 200.0; /* valor mximo para t */ h = 0.1; /* o valor do passo */ tn = t0; vn = v0; n = 0; /* numero de iteraes */ printf("***********************************************************\n"); printf(" Metodos Computacionais 2\n"); printf(" Aluno: Daniel Anjos e Silva\n"); printf("***********************************************************\n\n"); printf("Solucao do Problema do Paraquedista pelo metodo de Euler\n"); printf("EDO do problema: v' = g - (c/m)*v\n"); printf("Valores Iniciais: t0 = 0.0\n"); printf(" v0 = 1.0\n\n"); printf("***********************************************************\n"); printf("num. iteracoes t v v(t)\n"); printf("***********************************************************\n"); //v_it_anterior = 1.0; delta_v = 1.0;
while(delta_v >= 0.000000001){
//while(tn < tmax){ n = n+1; /* atribua os valores para a prxima iterao */ //printf(" %i %f %f %f\n",n,tn,vn,v(tn) ); /*escreva os valores das variveis*/ delta_v = h*f(tn,vn); //cout << "delta_v = " << delta_v << endl; vn1 = vn + h*f(tn,vn); tn1 = tn + h; if(vn1-vn<=0.0001) { break; } tn = tn1; vn = vn1; //}/* lao Segundo while */ }/*lao Primeiro While*/ printf(" %i %f %f %f\n",n,tn,vn,v(tn)); /*escreva os valores d as variveis*/ cout << endl << endl; printf("***********************************************************\n"); cout << " Resultados das iteracoes metodo de Euler" << endl; printf("***********************************************************\n\n"); printf("O valor converge para uma velocidade constante (consideran-\ndo 2 casas decimais)\n\n"); cout << "Erro: " << delta_v << endl; cout << "v = " << vn << " m/s" << endl << "t = " << tn << " segundos" << endl; cout << "qtd de iteracoes: " << n << endl << endl; system ("pause"); return 0; /* termina a computao */ }/* funo main */