lendel
(usa Linux Mint)
Enviado em 07/05/2016 - 17:33h
Aqui estão os codigos meu amigo
utilizando a função seno
/*==========================*/
/* Método de Euler */
/*==========================*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int arc, char* argv[])
{
double tn, tn1, tmax; /* variáveis tn e tn+1 */
double xn, xn1; /* variáveis xn e xn+1 */
double x0, t0; /* valores iniciais de x e t */
double h; /* passo */
double fn; /* meu valor da minha função seno*/
int n;
FILE *arq; /*declara um arquivo que será indicado através do ponteiro *arq*/
t0 = 0.0; /* valor incial para t */
x0 = 1.0; /* valor inicial para x */
tmax = 2.0; /* valor máximo para t */
h = 0.001; /* o valor do passo */
tn = t0;
xn = x0;
n = 0; /* numero de iterações */
//arq=fopen("MetodoEuler1.dat","w"); /*cria o arquivo MetodoEuler1.dat e abre para poder escrever nele*/
while(n < tmax){
fn = sin(xn*3.14159265/180);
//fn=-xn; //A resposta deve ser uma exponencial: x(t)=exp(-t)
printf("%d %f %f %f\n",n,tn,xn,fn); /*escreva os valores das variáveis na tela*/
tn1 = tn + h;
xn1 = xn + h*fn; /* estime xn+1 pelo método de Euler */
n = n+1; /* Atribua os valores para a próxima iteração */
//fprintf(arq,"%d %f %f %f\n",n,tn1,xn1,fn); /*escreva os valores das variáveis no arquivo apontado por arq*/
xn = xn1;
tn = tn1;
}/* while */
//fclose(arq); // fecha o arquivo apontado por arq
return 0; /* termina a computação */
}/* main */
utilizanndo a função expf
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double y(double x) /* a solução y(t) da equação */
{
return (1.0/4.0)*x-(3.0/16.0)+(19.0/16.0)*expf(4.0*x);
}
double f(double x, double y) /* a função f(x,y)*/
{
return 1-x+4*y;
}
int main(int arc, char* argv[])
{
double xn, xn1, xmax; /* variáveis tn e tn+1 */
double yn, yn1; /* variáveis yn e yn+1 */
double y0, x0; /* valores iniciais de y e t */
double h; /* passo */
int n;
x0 = 0.0; /* valor incial para t */
y0 = 1.0; /* valor inicial para y */
xmax = 2.0; /* valor máximo para t */
h = 0.001; /* o valor do passo */
xn = x0;
yn = y0;
n = 0; /* numero de iterações */
while(xn < xmax){
printf("%i %f %f %f\n",n,xn,yn,y(xn)); /*escreva os valores das variáveis*/
yn1 = yn + h*f(xn,yn); /* estime yn+1 pelo método de Euler */
xn1 = xn + h;
n = n+1; /* Atribua os valores para a próxima iteração */
yn = yn1;
xn = xn1;
}/* while */
return 0; /* termina a computação */
}/* main */