18/09/2019, 02:01:59 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias: LISTADO ACTUALIZADO DE CURSOS
 
 
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Algoritmo que calcula integral  (Leído 4179 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Dogod
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Colombia Colombia

Mensajes: 1.678


Ver Perfil
« : 08/10/2008, 12:52:21 pm »

Hola, hay algunas cosas que no entiendo en el siguiente algoritmo del libro yme gustaría agradecería si alguien me puede ayudar, insertandole comentarios que me ayuden a comprenderlo mejor. Dice:

 Diseñar un algoritmo que utilice la función Integral para calcular el área bajo el gráfico de las funciones f1(X) = [texx]x^3 - 6x^3 + 10x[/texx]e. Integrado por Integrado (x) = [texx]x^2 + 3x +2[/texx] para x ehtre cero y cuatro

ESTE ES EL ALGORITMO:


algoritmo Area_bajo_curvas


tipo

real funcion (E real : x) : func

var

real: a, b

entero: n

inicio

escribir (Entre qué límites?)

leer (a, b)

escribir (subintervalos?)

leer (n)

escribir (integral(f1, a, b, n))

escribir (integral (integrado, a, b, n)
fin

real FUNCÍOON f1 (E real: x)
inicio

devolver (x*x*x - 6*x*x + 10*x)
fin_funcion

real FUNCIÓN integrado (E real:x)

inicio

devolver (x*x + 3*x + 2)
fin_funcion

real FUNCION integral (E func: f; E real: a, b; E entero: n)


var
real: baserectangulo, altura, x, s

entero: i

inicio

baserectangulo [texx]\longrightarrow{}[/texx] (b - a) /n

x[texx]\longrightarrow{}[/texx] a + baserectangulo/2

s[texx]\longrightarrow{}[/texx]0

dsde i = 1 hasta n hacer

altura[texx]\longrightarrow{f(x)}[/texx]

s[texx]\longrightarrow{}[/texx] s + baserectangulo * altura

x[texx]\longrightarrow{}[/texx] x + baserectangulo

fin_desde
devolver (s)

fin_funcion

Entiendo que el algoritmo llama a los subalgoritmos para calcular la función, sin embargo, esta ultima parte no la entiendo mucho...


real FUNCION integral (E func: f; E real: a, b; E entero: n)


var
real: baserectangulo, altura, x, s

entero: i

inicio

baserectangulo [texx]\longrightarrow{}[/texx] (b - a) /n

x[texx]\longrightarrow{}[/texx] a + baserectangulo/2

s[texx]\longrightarrow{}[/texx]0

dsde i = 1 hasta n hacer

altura[texx]\longrightarrow{f(x)}[/texx]

s[texx]\longrightarrow{}[/texx] s + baserectangulo * altura

x[texx]\longrightarrow{}[/texx] x + baserectangulo

fin_desde
devolver (s)

fin_funcion


por que asignan de esa forma, por supuesto entiendo el procedmiento matematico, no tanto las asignaciones, como por ejemplo esta : x[texx]\longrightarrow{}[/texx] x + baserectangulo


Un saludo y gracias de antemano
En línea

Las cosas pasan es por algo, y no hay mal que por bien no venga dicen en mi tierra...
Luis Fuentes
el_manco
Administrador
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 44.734


Ver Perfil
« Respuesta #1 : 08/10/2008, 01:13:07 pm »

Hola

 No estoy seguro de si tu duda es sobre la notación usada, o sobre lo que hace el algoritmo.

 ¿Sabes algo de programación?.

 Cuando se pone, por ejemplo,

 x -> x +baserectangulo

 Quiere decir que [texx]x[/texx] debe de tomar el valor de [texx]x[/texx] (el antiguo) sumado al valor [texx]baserectangulo[/texx].

 Explico el algoritmo INTEGRAL. Lo que va a hacer es dividir el intervalo de integración [texx][a,b][/texx] en [texx]n[/texx] partes y aproximar la integral de la función por la suma del área de los rectangulitos de base [texx](b-a)/m[/texx] y altura [texx]f(x)[/texx] con [texx]x [/texx] en la mitad de cada intervalo de la partición.


real FUNCION integral (E func: f; E real: a, b; E entero: n)


var
real: baserectangulo, altura, x, s
entero: i

Aquí simplemente declara las variables que va a utilizar indicando si son reales o enteras.

inicio

baserectangulo [texx]\longrightarrow{}[/texx] (b - a) /n

Halla el valor de la longitud de la base de cada rectangulito.

x[texx]\longrightarrow{}[/texx] a + baserectangulo/2

Toma el primer x en la mitad del primer intervalo de la partición.

s[texx]\longrightarrow{}[/texx]0

Inicicializa la suma de las áreas a cero.

dsde i = 1 hasta n hacer

Indica que lo siguiente lo va a hacer n veces, con i tomando los valores entre 1 y n.

altura[texx]\longrightarrow{f(x)}[/texx]

La altura del rectángulo es el valor de la función en x.

s[texx]\longrightarrow{}[/texx] s + baserectangulo * altura

Le suma al área que llevamos acumulada el área del rectángulito donde estamos trabajando.

x[texx]\longrightarrow{}[/texx] x + baserectangulo

Avanza el valor de x la longitud de un rectangulito, para pasar al siguiente.

fin_desde
devolver (s)

fin_funcion

Saludos.
En línea
Dogod
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Colombia Colombia

Mensajes: 1.678


Ver Perfil
« Respuesta #2 : 09/10/2008, 03:32:50 pm »

Hola, gracias por la explicación, ahora comprendo mejor, sin embargo, aun quisiera saber, ¿calcula el area debajo de cada funcion o la que hay entre las dos curvas?



Graciassssssssss
En línea

Las cosas pasan es por algo, y no hay mal que por bien no venga dicen en mi tierra...
Luis Fuentes
el_manco
Administrador
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 44.734


Ver Perfil
« Respuesta #3 : 10/10/2008, 05:02:43 am »

Hola

 La función:

real FUNCION integral (E func: f; E real: a, b; E entero: n)

 calcula (más bien aproxima) el área bajo la función [texx]f[/texx], en el intervalo [texx][a,b].[/texx]

 Luego en el programa en estas sentencias:

escribir (integral(f1, a, b, n))

escribir (integral (integrado, a, b, n)

 se calculan por separado la integral de las dos funciones.

 Si quisieras el área comprendida entre ambas debieras de integrar la función [texx]|f(x)-g(x)|[/texx].

Saludos.
En línea
Dogod
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Colombia Colombia

Mensajes: 1.678


Ver Perfil
« Respuesta #4 : 10/10/2008, 07:15:13 pm »

Sí ya entendí, estoy empezando a ver programación que me encanta pero bueno...
gracias

un saludo
En línea

Las cosas pasan es por algo, y no hay mal que por bien no venga dicen en mi tierra...
adhemir
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Brazil Brazil

Mensajes: 268


Ver Perfil
« Respuesta #5 : 15/11/2011, 06:53:01 pm »

Hola trate implemetar este psedocodigo en c++, pero
nose como declarar , la funcion como argumento de entrada :¿eh?:
Alguein que me pueda dar una manito.



#include <cstdlib>
#include <iostream>
float f1( float x);
float integrado(float x);
//aqui abajo nose como declarar una funcion como argumento!!!
float integral(function  f,float a, float b, int n );
using namespace std;

int main()
{
  float a,b;
  int n;
  cout<<"Entre que limites?"<<endl;
  cin>>a;
  cin>>b;
  cout<<"Subinterbalos? "<<endl;
  cin>>n;
  cout<<integral(f1,a,b,n)<<endl;
  cout<<integral(integrado,a,b,n)<<endl;
 
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
float f1( float x)
{return (x*x*x-6*x*x+10*x);
}
float integrado(float x){
  return(x*x+3*x+2);   
      }
float integral(function  f,float a, float b, int n )
{
 float baserectangulo,altura,x,s;
 int i;
 baserectangulo=(b-a)/n;
 x=a+baserectangulo/2;
 s=0;
 for(i=1;i<=n;i++)
 {altura=f(x);
     s=s+baserectangulo*altura;
     x=x+baserectangulo;
                 
                  }     
    return s; 
      }
     
En línea
Phicar
Pleno*
*****

Karma: +1/-0
Desconectado Desconectado

Sexo: Masculino
Colombia Colombia

Mensajes: 514



Ver Perfil WWW
« Respuesta #6 : 15/11/2011, 11:03:30 pm »

Como asi una funcion como argumento?

si quieres llamar una funcion independiente, podrias usar un espacio nulo en memoria adecuar la funcion y pasarle el puntero para llamarla....pero estoy seguro de que eso no es lo que quieres. Asi que no entiendo a que te refieres....Si quieres usar funciones independientes, puedes usar regex....pero te tocaria programarlo o buscar alguna libreria que ya lo haga.
En línea

redinfocol.org
adhemir
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Brazil Brazil

Mensajes: 268


Ver Perfil
« Respuesta #7 : 16/11/2011, 09:26:45 am »

Es la misma pregunta que me hice ,pues nose como hacer, esta parte abajo del algoritmo.
real FUNCION integral (E func: f; E real: a, b; E entero: n)
resulta que recien estoy aprendiendo c++,
en esa sentencia arriba
 dice que la funcion tiene 3 entradas fun f, float a,b ,int n
o como tu puedes esto escribirlo en c++, para que compile,
eso es lo que no entiendo :¿eh?:
En línea
Phicar
Pleno*
*****

Karma: +1/-0
Desconectado Desconectado

Sexo: Masculino
Colombia Colombia

Mensajes: 514



Ver Perfil WWW
« Respuesta #8 : 16/11/2011, 11:34:54 am »

yo me referia a una funcion en memoria. Lo ultimo que te digo es lo que deberias hacer. Deberas construir una funcion que evalue funciones :sonrisa:
para eso se utilizan regex. o puedes hacerlo desde 0, tendras que tener cierta destreza en manejar cadenas.

En el ejemplo no tienes porque pasarle la funcion f como argumento a la funcion integral. Solo tienes que llamar a funcion f1 desde la funcion integral.

Si quisieras hacer un ejemplo estandar(sin importar la funcion) si te tocaria hacer lo que digo. Pero como solo lo quieres para esa funcion en particular, no hay ninguna necesidad de pasarla como parametro
En línea

redinfocol.org
adhemir
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Brazil Brazil

Mensajes: 268


Ver Perfil
« Respuesta #9 : 16/11/2011, 11:59:13 am »

 Ok.
Y como se escribe eso en c++, puedes escribirlo
si no es mucha molestia, es que en verdad nose como se codifica lo que escribiste :¿eh?:
Eso de la funcion regex, primera vez que la escucho, y en el libro que tengo todavia no hablan de eso.
En línea
Phicar
Pleno*
*****

Karma: +1/-0
Desconectado Desconectado

Sexo: Masculino
Colombia Colombia

Mensajes: 514



Ver Perfil WWW
« Respuesta #10 : 16/11/2011, 12:08:34 pm »

yo nunca he usado regex...pero se que es mas facil hacerlo asi. He usado cadenas, pero no me pondre a hacerlo. Por aca tengo en java una libreria que hice hace un tiempo, hace calculo y derivadas simbolicamente. Si te sirve mandame un PM con tu email y te lo mando.
En línea

redinfocol.org
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.4 | SMF © 2006, Simple Machines LLC XHTML 1.0 válido! CSS válido!