domingo, 17 de febrero de 2013

Resolver la integral indefinida     $\displaystyle \int {\dfrac{1}{x^2+x}\,dx}$

Enunciado:
Resolver la integral indefinida
    $\displaystyle \int {\dfrac{1}{x^2+x}\,dx}$

Solución:
La función integrando
    $f(x)=\dfrac{1}{x^2+x}$
es una función racional, que, habiéndo factoritzado su denominador, puede escribirse de la forma
    $\dfrac{1}{x\,(x+1)}$
y es, por tanto, del tipus
    $\dfrac{1}{(x+b)(x+a)}$
luego se puede expresar como una suma de fraccions
    $\dfrac{1}{(x+b)(x+a)}=\dfrac{m}{x+a}+\dfrac{n}{x+b}$
Reduciendo a común denominador la expresión del segundo miembro, llegamos a
    $\dfrac{m\,(x+b)+n\,(x+a)}{(x+a)(x+b)}$
y, operando el numerador, nos queda
    $\dfrac{(m+n)\,x+m\,b+n\,a}{(x+a)(x+b)}$
es decir
    $\dfrac{1}{(x+b)(x+a)}=\dfrac{(m+n)\,x+m\,b+n\,a}{(x+a)(x+b)}$
igualando, ahora, los coeficients de los términos del mismo grado entre ambos miembros de la igualdad, obtenemos el siguiente sistema de ecuaciones
    $\left.\begin{matrix} m\,b &+&n\,a&=&1 \\ m & +&n&=&0 \end{matrix}\right\}$
y, resolviéndolo, vemos que
    $m=\dfrac{1}{b-a}$
i
    $n=\dfrac{1}{a-b}$

En nuestro caso, tenemos que $b=0$ i $a=1$, por lo que encontramos la solución: $m=1$ y $n=-1$
Entonces
    $\dfrac{1}{x\,(x+1)}=\dfrac{1}{x}-\dfrac{1}{x+1}$
y podremos escribir
    $\displaystyle \int \dfrac{1}{x^2+x}\,dx=\int \dfrac{1}{x}\,dx-\int \dfrac{1}{x+1}\,dx$
cualculando las integrales inmediatas
    $\displaystyle \int {\dfrac{1}{x^2+x}\,dx}=\ln{\left|x\right|}-\ln{\left|x+1\right|}+C$
que, por las propiedades de los logaritmos, también podemos expresar así
    $\displaystyle \int {\dfrac{1}{x^2+x}\,dx}=\ln{\left|\dfrac{x}{x+1}\right|}+C$

Nota:   $C$, que puede ser cualquier número real, representa la constante de integración, o constante de la familia de funciones primitivas de la función del del integrando
    $F(x)=\ln{\left|\dfrac{x}{x+1}\right|}+C$
$\square$


[nota del autor]

lunes, 11 de febrero de 2013

Dada las funciones $y=9-x^2$ y $y=2x+1$ se pide: a) Dibujar las gráficas de las dos funciones, identificando el recinto acotado por ambas. b) Calcular el área de dicho recinto acotado c) Hallar el volumen del cuerpo de revolución obtenido al hacer girar alrededor del eje de abscisas el recinto acotado de la gráfica de $y=9-x^2$ y el propio eje de abscisas.

Enunciado:
Dada las funciones $y=9-x^2$ y $y=2x+1$ se pide:
a) Dibujar las gráficas de las dos funciones, identificando el recinto acotado por ambas.
b) Calcular el área de dicho recinto acotado
c) Hallar el volumen del cuerpo de revolución obtenido al hacer girar alrededor del eje de abscisas el recinto acotado de la gráfica de $y=9-x^2$ y el propio eje de abscisas.


Resolución:



Obtenemos las coordenadas de los puntos de intersección A i B resolviendo el sistema de ecuaciones

$\left. \begin{matrix} 9-x^2=y\\ 2x+1=y\\ \end{matrix}\right\}$

obteniendo como solución

$A(-4,-7)$

$B(2,5)$

El área del recinto acotado és igual a

$\displaystyle \left|\int_{-4}^{2}\,\big( (9-x^2)-(2x+1)\big)\,dx \right| = \ldots = 36 \quad \text{unidades de \'area}$

Abordemos, ahora, la última parte del problema. El recinto acotado entre la parábola y el eje de abscisas genera, al girarlo alrededor de dicho eje, un cuerpo de revolución. Calcularemos su volumen teniendo en cuenta la simetria de dicho cuerpo.



Considerando el disco de radio $r(h)$ y de grosor $dh$ podemos sumar dichos infintos elementos diferencials de volumen de manera continua calculando la integral

$V=\int_{D}\,\pi\,\big(r(h)\big)^2\,dh$

puesto que $r$ representa la ordenada de un punto del recinto $9-x^2$; el grosor de dicho disco es la cantidad diferencial $dx$, y que los límites de integración (del recinto) són las abscisas de los puntos de corte de la parábola con el eje de abscisas

$9-x^2=0 \Rightarrow x=\pm 3$

podemos concretar el cálculo así

$\displaystyle V=\int_{-3}^{3}\,\pi\,\big(9-x^2)^2\,dx = \ldots = \dfrac{1296}{5}\, \pi \quad \text{unidades de volumen}$

$\square$


[nota del autor]

sábado, 8 de septiembre de 2012

fotografia d'unes cases



Cases del poble de Cuideiru [Cudillero] (Asturies) enfilant-se turó amunt per tal d'aprofitar l'espai de l'estreta cala on s'ubica el poble i, a la vegada, abocant-se vers el port de pescadors (que no es veu a la imatge, situat on em vaig posar per fer la fotografia).

[autoría]

viernes, 7 de septiembre de 2012

Algunes espirals con GeoGebra: e. de Fermat, e. de Fibonacci o de Bernoulli (e. logarítmica), e. de Arquímedes




Lectura y almacenamiento de datos numéricos en disco en lenguaje C [ los comentarios están escritos en catalán ]

Un artículo más de ampliación sobre programación y cálculo con ordenadores por si es de utilidad a los alumnos que deseen ampliar destrezas

ESCRIPTURA

#include <stdio.h>
#include <string.h>
#include <conio.h>
main()
  {
    FILE *fp;
    int i,n;
    float a;
    float v[10];
    char s[80];

    clrscr();
    printf("nom del fitxer ?\n ");gets(s);
    printf("nombre de dades numèriques ?\n");scanf("%d",&n);

    fp=fopen(s,"w+t");
    for(i=0;i<n;++i)
      {
    printf("v[%d]=",i);scanf("%f",&v[i]);
    fprintf(fp,"%f\n",v[i]);
      }

    fclose(fp);
    printf("\nDades guardades en el fitxer de disc");
    getch();
}


===
LECTURA

#include <stdio.h>
#include <string.h>
#include <conio.h>
main()
  {
    FILE *fp;
    int i,n;
    float a;
    float v[10];
    char s[80];

    clrscr();
    printf("nom del fitxer que vols recuperar?\n ");gets(s);
    printf("nombre de dades numèriques ?\n");scanf("%d",&n);

    fp=fopen(s,"r+t");
    for(i=0;i<n;++i)
      {
    fscanf(fp,"%f\n",&v[i]);
    printf("\nv[%d]=%f",i,v[i]);
      }

    fclose(fp);
    printf("\nLectura efectuada");
    getch();
}

[autoría]

Almacenando un conjunto de números enteros en el disco ( ampliación de destrezas de cálculo con ordenador ) [ los comentarios están escritos en catalán ]

Este pequeño programa puede ser de utilidad para los alumnos que necesiten ampliar destrezas de cálculo con ordenadores

import java.io.*;
/**
* Programa per a enregistrar al disc deu nombres enters
*/
public class EnregistraEnters {

public static void main(String[] args) throws IOException {
FileOutputStream fitxer = new FileOutputStream(
"enters.dat");
DataOutputStream filtre = new DataOutputStream(fitxer);

try {
   for (int n=0; n<10; n++) { filtre.writeBytes(n+"\n"); }
}
catch (IOException e) {
  System.out.println(e.getMessage()); }
finally {
  fitxer.close(); }

}

}


Al fitxer s'hi guarden els següents nombres
0
1
2
3
4
5
6
7
8
9

[autoría]

miércoles, 30 de septiembre de 2009

Generando puntos al azar en R^3. Una práctica de programación en DERIVE (de hace muchos años)

puntos(a):=
PROG
 (
   llista:=[],
   i:=0,
   LOOP
     (
       x:=a·RANDOM(1),
       y:=a·RANDOM(1),
       z:=a·RANDOM(1),
       lista:=APPEND([[[x, y, z]]], lista),
       i :+ 1,
       IF(i > 10, exit)
      ),
    RETURN lista
  ) 

domingo, 7 de septiembre de 2008

Problemas para el tercer milenio ( Artículo escrito en catalán )



A l'escrit anterior us he presentat un dels problemes (el que fa referència a la investigació sobre la no linealitat de les equacions de Navier-Stokes les quals serveixen per explicar la dinàmica de fluïds) i que, juntament amb altres sis problemes, el Clay Mathematics Institute va proposar l'any 2000. Per la resolució de cadascun d'aquests 7 problemes (Wikipedia), l'institució va dotar un premi corresponent d'un milió de dòlars.

Entre aquests problemes apareix també el problema conegut amb el nom d'hipòtesi de Riemann, que ja constava a la llista de 23 problemes que David Hilbert va proposar l'any 1900 en el famós Congrès Internacional de Matemàtics que es cel·lebrà aquell any a Paris, un any abans que el segle XIX i la seva panoràmica científica donés pas al nou segle XX, en aquell moment, amb un panorama crític i a la vegada ric en idees i nous problemes en molts camps del coneixement científic fonamental, especialment en el camp de la Física i la Matemàtica.

Els problemes de Hilbert van ser - i són encara, molts d'ells - problemes de referència emblemàtica; alguns han estat resolts (el gran teorema de Fermat (demostrat el 1994) i la conjectura de Poincaré (fa molt poc), per exemple; altres, encara no (la conjectura de Goldbach, n'és un de molt famós, de la qual ja n'he parlat en d'altres escrits).

Un dels set problemes que figuren a la llista dels Problemes del Mil·leni, amb la qual els matemàtics que estan al capdavant de la recerca fonamental miren de perfilar un futur panorama matemàtic per al segle XXI alhora que proposar motivacions, i reptes de progrès continu en la investigació matemàtica pura i aplicada, ja ha estat resolt: la conjectura de Poincaré.

Com molts dels problemes de la llista de Hilbert, els set problemes del Clay van més enllà de la matemàtica, incideixen de ple en els problemes de la física: desenvolupar la mecànica quàntica per poder entendre l'univers físic i agermanar els diversos nivells d'observació, entendre la dinàmica no lineal, copsar la impredictibilitat fonamental de la naturalesa, matematitzar la complexitat ... Entre els problemes d'una llista, la de Hilbert, i l'altra, la del Clay, no es pot pas dir que falten reptes de primer ordre.

Per llegir més sobre els problemes, a més a més del vincle de la Wikipedia que he resenyat a dalt, també podreu trobar informació en aquest altre lloc [ http://personales.ya.com/casanchi/mat/milenio00.htm ] informació sobre la naturalesa i estat de la qüestió d'aquests problemes.


Aquests són els 7 problemes:

  • Problema P versus NP[computabilitat, complexitat algorísmica]
  • La conjectura de Hodge [àlgebra, espais projectius]
  • La no linealitat de les equacions de Navier-Stokes [dinàmica de fluïds, dinàmica no lineal]
  • La conjectura de Poincaré ( problema de topologia resolt per Grigori Perelman el 2003 [ aquesta nota és posterior a l'entrada original del blog ] )
  • La hipòtesis de Riemann [distribució dels nombres primers, teoria de nombres: la part real de tot zero no trivial de la funció zeta de Riemann és igual a 1/2]
  • La teoria de Yang-Mills [mecànica quàntica, topologia]
  • La Conjetura de Birch i Swinnerton-Dyer [teoria de nombres, equacions diofàntiques (equacions amb nombres enters)]

[autoría]

martes, 1 de octubre de 2002

Implementación de la ley d'Hondt. Un ejercicio de programación en C/C++

/*
 La llei d'Hondt per al repartiment d'escons a partir dels nombres de vots
Joan Aranès Clua
http://www.xtec.cat/~jaranes
jaranes@xtec.cat
19/02/2002
  
Procediment:
El primer escó s'assigna al partit més votat, els altres s'assignen, pas a pas, 
al partit que li correspongui el valor més gran de la següent funció: vots[P]/(esc[P]+1)
aplicada en cada pas del repartiment a cada un dels partits {P} tenint en compte
el nombre de vots nominal.

Cas que a dos partits els correspongui el mateix valor per aquesta funció, l'escó
s'assigna al partit més votat; i, cas que els partits que tinguin el mateix valor
per a la funció vots[P]/(esc[P]+1 i també tinguin també el mateix nombre
de vots (cosa molt poc probable), l'assignació es fa per sorteig la primera vegada 
que es doni l'empat, i per a la resta d'empats, l'escó s'assigna alternativament.

Exemple:
Suposem tres partits: A, B i C amb els següents nombres de vots: 200, 100, 80
Es volen repartir 4 escons. Vegem, pas a pas el procés:

A				B			C    		escons ...
200/(1+0)=200 		100/(1+0)		80/(1+0)  	A ->1; B->0; C->0
200/(1+1)=100		100/(1+0)		80/(1+0)  	A-> 1+1=2; B->0; C->0  
200/(2+1)~67		100/(1+0)		80/(1+0)  	A-> 2; B->1; C->0  
200/(2+1)~67		100/(1+1)=50	80/(1+0)  	A-> 2; B->1; C->1  

En aquest cas, correspondrien dos escons a A, un a B i un a C 
*/

#include <stdio.h>
    #define N_ESC 20 // nombre d’escons
    #define N_PAR 30 // nombre de partits

    int nou_esc(int *, int *, int);

    void main(void){

        int ct;
        int esc[N_PAR]={0}; // esc{[N_ESC]= nomb. d’esc per partit
        int vots[N_PAR]; // vots[N_PAR]= nomb. de vots per partit
		int np,ne; //np = nombre de partits, ne = nombre d'escons

		printf("nombre de partits = ");
		scanf("%d", &np);
		printf("nombre d'escons = ");
		scanf("%d", &ne);


        printf("Tecleja el nombre de vots de cada partit.\n");

        for (ct=0; ct<np; ++ct) {
            printf("\nPartit %d: ", ct+1);
            scanf("%d", &vots[ct]);
        }

        for(ct=0; ct<ne; ++ct) esc[nou_esc(vots, esc, np)]++;
        for (ct=0; ct<np; ++ct)
        printf("\nEl partit %d ha obtingut %d escons.", ct+1,
                esc[ct]);
    }

     

    int nou_esc( int vots[], int esc[], int np) 
	{

        int imax=0, ct;
        int max=0;
		int maxvots=0;

		// nombre màxim de vots
        for (ct=0;ct<np;++ct)
		{if (maxvots<vots[ct]) maxvots=vots[ct];}

        for (ct=0; ct<np; ++ct) 
		{
			if( max<=(vots[ct]/(esc[ct]+1)) ) 
			{
				if (max<(vots[ct]/(esc[ct]+1)))
                {
					max=vots[ct]/(esc[ct]+1);
					imax=ct;
				}
				if (max==(vots[ct]/(esc[ct]+1)))
				{
					if (maxvots<vots[ct]) {imax=ct;}
				}								
            }
			
        }
        return imax;
    }


lunes, 1 de octubre de 2001

Comprobando las leyes de Morgan. Un ejercicio de programación en C/C++

//-----------------------------------------------------------------
//lleis de Morgan 
//
// Joan Aranès Clua
// data: 15/12/2001
// 
//Comprovació de lleis de Morgan per comparació de les taules de 
// veritat 
//(no (p i q)) equival a ((no p) o (no q))
//(no (p o q)) equival a ((no p) i (no q))
// 
//-----------------------------------------------------------------

#define V 1
#define F 0

#include <stdio.h>


void main()

{

    printf("1a llei de Morgan\n");
    printf("Taula de veritat de !(p||q) \n");
    printf("!(F||F) = %d\n",!(F ||F) );
    printf("!(F||V) = %d\n",!(F ||V) );
    printf("!(V||F) = %d\n",!(V ||F) );
    printf("!(V||V) = %d\n",!(V ||V) );

    printf("Taula de veritat de !p&&!q \n");
    printf("!F&&!F = %d\n",!F && !F );
    printf("!F&&!V = %d\n",!F && !V );
    printf("!V&&!F = %d\n",!V && !F );
    printf("!V&&!V = %d\n",!V && !V );
    
    printf("------------\n");    

    printf("2a llei de Morgan\n");
    printf("Taula de veritat de !(p&&q) \n");
    printf("!(F&&F) = %d\n",!(F && F));
    printf("!(F&&V) = %d\n",!(F && V) );
    printf("!(V&&F) = %d\n",!(V && F) );
    printf("!(V&&V) = %d\n",!(V && V) );

    printf("Taula de veritat de !p||!q \n");
    printf("!F||!F = %d\n",!F || !F );
    printf("!F||!V = %d\n",!F || !V );
    printf("!V||!F = %d\n",!V || !F );
    printf("!V||!V = %d\n",!V || !V );

}