Programar Heun de 2 etapas
Publicado por Maria (1 intervención) el 14/11/2012 23:23:39
Necesito entregar esta practica: Es una funcion que haga lo que pone en la descripcion.
void f???rk2e(int n,double (*der)(),double (*ver)(),double y[], int npas,double *error,double trabajo[])
/*
DESCRIPCION:
integra en [0,1] un sistema autonomo de n ecuaciones de primer orden
con n funciones incognita,
y1’ = f1 ( y1, ..., yn)
.......................
yn’ = fn ( y1, ..., yn)
con una condicion inicial en 0
y1(0) = z1, ..., yn(0) = zn
Para ello emplea el metodo ’de HEUN de 2 etapas’. La integracion se realiza en [0,1] , dando npas pasos. A la entrada, el argumento y[] contiene los valores de z1,...,zn ; a la salida, contiene el valor de la solucion en 1 . Ademas, la variable error devuelve a la salida la norma euclídea del error de la solucion numerica obtenida respecto del valor en 1 de
la verdadera solucion que en 0 vale (z1,...,zn)
PRECISION: doble
DESCRIPCION DE LOS ARGUMENTOS:
La funcion posee vectores de tamano arbitrario (pasado por el usuario) y[] y trabajo[] . Cualquier otro vector o matriz con que se desee trabajar en la funcion debera ser de tamano constante
Como hay que utilizar la raiz cuadrada sera necesario #include <math.h>
int n contiene el numero de ecuaciones y de funciones incognita
double (*der)() puntero de una funcion que se encarga de evaluar las derivadas f1, ...,fn . La funcion der() debe ser creada por el usuario en la siguiente forma
double der(int n,int k,double y[])
A la salida, der() debe devolver el valor de la derivada fk en y[1],...,y[n] sin modificar los argumentos
double (*ver)() puntero de una funcion que se encarga de evaluar la
verdadera solucion. La funcion ver() debe ser creada
por el usuario en la siguiente forma
double ver(int n,int k,double t)
A la salida, ver() debe devolver el valor en t de la
componente k de la verdadera solucion que en 0 vale
(z1,...,zn)
double y[] vector de n+1 componentes que pasa el usuario.
A la entrada, y[k] contiene el valor zk de la solucion yk en 0 . A la salida, y[k] contiene el valor de la solucion yk en la abscisa final 1
int npas contiene el numero de pasos que se van a dar en [0,1]
double *error puntero que apunta a la variable double error. A la entrada, el valor de *error es irrelevante. A la salida, *error contiene la norma euclidea del error de la solucion numerica
obtenida respecto del valor en 1 de la verdadera solucion que en 0 vale (z1,...,zn)
double trabajo[]vector de n+1 componentes que pasa el usuario. Es un vector
de trabajo de la rutina. Sus valores a la entrada y a la salida son irrelevantes
void f???rk2e(int n,double (*der)(),double (*ver)(),double y[], int npas,double *error,double trabajo[])
/*
DESCRIPCION:
integra en [0,1] un sistema autonomo de n ecuaciones de primer orden
con n funciones incognita,
y1’ = f1 ( y1, ..., yn)
.......................
yn’ = fn ( y1, ..., yn)
con una condicion inicial en 0
y1(0) = z1, ..., yn(0) = zn
Para ello emplea el metodo ’de HEUN de 2 etapas’. La integracion se realiza en [0,1] , dando npas pasos. A la entrada, el argumento y[] contiene los valores de z1,...,zn ; a la salida, contiene el valor de la solucion en 1 . Ademas, la variable error devuelve a la salida la norma euclídea del error de la solucion numerica obtenida respecto del valor en 1 de
la verdadera solucion que en 0 vale (z1,...,zn)
PRECISION: doble
DESCRIPCION DE LOS ARGUMENTOS:
La funcion posee vectores de tamano arbitrario (pasado por el usuario) y[] y trabajo[] . Cualquier otro vector o matriz con que se desee trabajar en la funcion debera ser de tamano constante
Como hay que utilizar la raiz cuadrada sera necesario #include <math.h>
int n contiene el numero de ecuaciones y de funciones incognita
double (*der)() puntero de una funcion que se encarga de evaluar las derivadas f1, ...,fn . La funcion der() debe ser creada por el usuario en la siguiente forma
double der(int n,int k,double y[])
A la salida, der() debe devolver el valor de la derivada fk en y[1],...,y[n] sin modificar los argumentos
double (*ver)() puntero de una funcion que se encarga de evaluar la
verdadera solucion. La funcion ver() debe ser creada
por el usuario en la siguiente forma
double ver(int n,int k,double t)
A la salida, ver() debe devolver el valor en t de la
componente k de la verdadera solucion que en 0 vale
(z1,...,zn)
double y[] vector de n+1 componentes que pasa el usuario.
A la entrada, y[k] contiene el valor zk de la solucion yk en 0 . A la salida, y[k] contiene el valor de la solucion yk en la abscisa final 1
int npas contiene el numero de pasos que se van a dar en [0,1]
double *error puntero que apunta a la variable double error. A la entrada, el valor de *error es irrelevante. A la salida, *error contiene la norma euclidea del error de la solucion numerica
obtenida respecto del valor en 1 de la verdadera solucion que en 0 vale (z1,...,zn)
double trabajo[]vector de n+1 componentes que pasa el usuario. Es un vector
de trabajo de la rutina. Sus valores a la entrada y a la salida son irrelevantes
Valora esta pregunta


0