Mostrando entradas con la etiqueta Programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programación. Mostrar todas las entradas

jueves, 2 de junio de 2016

Toma de contacto con dos variables

Grosso modo, decimos que una función de una variable dibuja una linea y por lo tanto, una función de dos variables dibujará una superficie. Por ejemplo la función \(f(x,y)=x^3-3y^2+5xy+x-2y+5 \) nos dibuja la siguiente superficie.

 
También recordamos que la derivada de una función nos esta indicando la inclinación de una tangente para cada punto de esa función, es decir, nos da otra función que nos va a decir la inclinación de la función original para cada punto.
¿Qué pasa con la superficie? Pues por medio de las derivadas parciales, podemos considerar una de las variables como si fuera una constante y derivar la otra. Por ejemplo si derivamos respecto a \(x\), conseguiremos una superficie que nos dice como varia la inclinación desde la vertiente \(x\). Si hiciéramos la derivada parcial respecto a \(y\), nos daría la inclinación en esa otra dirección.  Imagínese una montaña, en un mismo punto puede tener inclinaciones en el eje \(x\) (digamos delante-atrás) y el eje \(y\) (digamos derecha - izquierda).
La derivada parcial resulta en: \(\frac{\partial f(x,y)}{\partial x}=3x^2+5y+1\) y dibujando la superficie:
Vamos a verificarlo en una variable (o dimensión si se desea). Si consideramos solo el "filete" para y=0, tendremos una función al uso y representaría la primera loncha de las superficies de la imagen anterior. Así, \(f(x,0)=x^3+x+5 \) y la derivada \(f(x)'=3x^2+1\) , que mostramos abajo.


Como pueden ver, si hiciéramos lo mismo para todos los valores de \(y\), tendríamos las superficies anteriores.  

Para los gráficos se ha utilizado Wxmaxima con los siguentes códigos.

/*superficie:*/

plot3d(x^3-3*y^2+5*x*y+x-2*y+5, [x,-5,5], [y,0,5])$

/*Superficie y su derivada en x*/

expr_1:x^3-3*y^2+5*x*y+x-2*y+5$
expr_2:3*x^2+5*y+1$
plot3d([expr_1,expr_2, [x,-5,5], [y,0,5]])$

/*Funcion y derivada para y=0*/


plot2d ([x^3+x+5, 3* x^2+1], [x, -5, 5])$



viernes, 20 de febrero de 2015

Configurar colores en LaTeX.


En el preámbulo, ya sea en TexMaker o Lyx, podemos utilizar:

\definecolor{gris_x}{gray}{0.95}
\definecolor{naranja_x}{rgb}{1,0.56,0}

El primero es para gris y el segundo para color en RGB.
En estos enlaces tenemos un listado de colores y un conversor de códigos RGB. En el comando hay que indicar las proporciones de color (Red, Green, Blue, de ahí el RGB) en proporción de 0 a 1.

Códigos RGB:
https://web.njit.edu/~kevin/rgb.txt.html 

Conversor de códigos:
http://w3.unpocodetodo.info/utiles/conversor.php

domingo, 15 de febrero de 2015

Programa en C++

Un programa en C++, para practicar con cadenas y eso.
Queda más bonito con unos applets que dejan el código muy bonito, pero como hay que ponerlos en la parte HTML del post, y es un código de programación, da errores y cosas raras. Así que lo meto a la antigua usanza.  
El resultado es este:


Es una chorradita, pero haciendo un programa más complejo, se podría ayudar a despejar derivadas bastante complicadas. Si se pone la ecuación como una cadena, el programa puede ir desgranándola y aplicando las reglas de derivación iterativamente. Como ejercicio puede ser interesante. 

//##############################################
/*
Este es un programa de práctica en C++.
Si se introduce una función exponencial con base
y exponente de una solo cifra, retorna su derivada.
*/
//##############################################
//Se declaran librerias que se usaran
#include <iostream> //Esto iria con <> en vez de "" pero blogger no lo coge si no.
#include <string.h>
using namespace std;// Esto es para usar cout,cin.

int main(){


  // Declaro variables#################
   int x=0; //Como enteros. Aquí pongo x a 0 que usaré como contador.
   int base;
   int exp;
   int largo;
   char formula[30]; //Como caracteres
   char signo[2]="^";


   cout<<"La función a ingresar ha de ser de la forma x^y, donde \n";
   cout<<" x e y son enteros. P.ej. 4^6 \n";


cout<<"Ingrese la función: ";//Pregunta por la fórmula


cin>>formula; //Aquí captura la fórmula


largo=strlen(formula); //Mide la lingitud de la fórmula (auqne es siempre 3
            //Servirá para un programa más elaborado

 while (x<largo){ //Aquí empieza un bucle que busca el signo 

if (formula[x]==signo[0]){
 base=formula[x-1];//Asigna el valor del anterior a "^" como
 //base pero como numero ASCII (trabajamos con caracteres).
 exp=formula[x+1];//Aquí le asigna el valor del siguiente de ^ (exponente.

x=largo;} //Con esto se sale del bucle, si no hace cosas raras
               x++; }//Va sumando 1 a x para ir rastreando la cadena
               //Fin de while
cout<<"\n La derivada es :"<<char(exp)<<"*"<<char(base)<<"^"<<char(exp-1);
//Aquí da el resutado. Cuidado porque:
//char()es el valor del caracter en ASCII, pj char(52)=4
}

martes, 3 de febrero de 2015

Programar en C++

Compilador online:
http://cpp.sh/

Cursos:
http://www.cplusplus.com/doc/tutorial/program_structure/
http://www.c.conclase.net/curso/?cap=002b#inicio

Ejemplos:
https://saforas.wordpress.com/2008/01/04/codigos-sencillos-hechos-en%C2%A0c/

Me he instalado en el blog el  google-code-prettify, que se llama usando
<pre class="prettyprint">
Código aquí
</pre>
en el html. Lo anoto aquí como referencia.
// Programa basico
#include "iostream" //Imprime instrucciones en pantalla "" debería ser <> pero da problemas el código bonito este
using std::cout;
int main() // Siempre empieza así
{
        cout << "Hola mundo\n"; // Mensaje de salida
        return 0; //indica que el programa terminó bien
} //fin del programa

Si no ponemos en using std::cout, deberíamos ponerlo cada vez que ponemos cout (salida).



// Programa basico 2
#include "iostream" //Imprime instrucciones en pantalla
using std::cout; // se usa cout es un Out
using std::cin; // ídem pero en In
using std::endl; // ídem endl, fin de linea

int main() // Siempre empieza así
{
    int numero1; // se declara variable (entero)
    int numero2;
    cout << "Escriba dos números a sumar\n\n";
    cin >> numero1 >> numero2; // Lee los dos números
    cout << numero1 + numero2<< endl;
    return 0; //el programa terminó bi
} //fin del programa
// ####################
// # Programa basico 4#
// ####################

#include "iostream" //Imprime instrucciones en pantalla
using std::cout; // se usa cout es un Out
using std::cin; // ídem pero en In
using std::endl; // ídem endl

int main() 
{
    int numero_secreto; // se declara variable (entero)
    int numero1;
   
    srand(time(0)); // Se inicializa el random
    numero_secreto =rand()%1000; // El resto de 1000 de un número al azar
cout<< "Adivine el número secreto entre 0 y 999\n \n";
cout<< "Introduzaca su número\n";
cin>> numero1;

while ( numero1 != numero_secreto )
    {
          if ( numero_secreto > numero1 )
          {
               cout << "Su número es menor." << '\n' << endl;
              
               cout << "Intentelo de nuevo: ";
               cin >> numero1;
          }
          
          if ( numero_secreto < numero1  )
          {
               cout << "Su numero es mayor." << '\n' << endl;
              
               cout << "Intentelo de nuevo: ";
               cin >> numero1;
          }
          
          if ( numero_secreto == numero1  )
          {
               cout << "\n#####################\n"; 
                 cout << "### ¡Ha acertado! ### \n"; 
  cout << "#####################\n\n" << endl;
          }
    }
    
    return 0; 
} 
A continuación, otro código donde se introducen clases y objetos. A mi me parecen las viejas subrutinas del BASIC, pero bueno.
 // Programa de prueba
#include "iostream"
using std::cout;
using std::endl;

//Defino clase
class Letreros
{
public:
 
void correcto()
  {                                  
cout << "╔═══════════════════════╗\n║\t¡Correcto!\t║\n╚═══════════════════════╝  \n"<< endl;    
  }
void error()
  {                                  
cout << "╔═══════════════════════╗\n║\t¡Error!\t║\n╚═══════════════════════╝  \n"<< endl;    
  }
  void bravo()
  {                                  
cout << "╔═══════════════════════╗\n║\t¡Bravo!\t║\n╚═══════════════════════╝  \n"<< endl;    
  }
};

int main()
 {
 Letreros  micartel; //crea un objeto de la clase
 micartel.correcto();
 }
 
Finalmente, podemos añadirle subrutinas u objetos al código anterior.
// ####################
// # Programa basico 4#
// ####################

#include "iostream" //Imprime instrucciones en pantalla
using std::cout; // se usa cout es un Out
using std::cin; // ídem pero en In
using std::endl; // ídem endl

//#################################################
//Defino clase
class Letreros
{
public:
void correcto()
  {                                  
cout << "╔═══════════════════════╗\n║\t¡Correcto!\t║\n╚═══════════════════════╝  \n"<< endl;    
  }
void error()
  {                                  
cout << "╔═══════════════════════╗\n║\t ¡Error!\t║\n╚═══════════════════════╝ "<< endl;    
  }
};//Fin de la clase
//#################################################

int main() 
{
    int numero_secreto; // se declara variable (entero)
    int numero1;
   Letreros  micartel; //crea un objeto de la clase
    srand(time(0)); // Se inicializa el random
    numero_secreto =rand()%1000; // El resto de 1000 de un número al azar
cout<< "Adivine el número secreto entre 0 y 999\n \n";
cout<< "Introduzaca su número\n";
cin>> numero1;

while ( numero1 != numero_secreto )
    {
          if ( numero_secreto > numero1 )
          {
               cout << "Su número es menor." << '\n' << endl;
               micartel.error();
               cout << "Intentelo de nuevo: ";
               cin >> numero1;
          }
          
          if ( numero_secreto < numero1  )
          {    micartel.error();
               cout << "Su numero es mayor." << '\n' << endl;
               
               cout << "Intentelo de nuevo: ";
               cin >> numero1;
          }
          
          if ( numero_secreto == numero1  )
          {
                micartel.correcto();
          }
    }
    
    return 0; 
} 


domingo, 28 de septiembre de 2014

Topología en R. Latex.

Apuntes sobre nociones de topología en \(\mathbb{R}\) en \(\LaTeX \). Concretamente en una web llamada ShareLaTeX, que permite compartir tanto el resultado como el código del documento.

Aquí tienen:

https://www.sharelatex.com/project/53de82288ca615b04693855f#

Es muy interesante (a quien le interese) puesto que permite compartir tanto el resultado, es decir, el PDF, como el código para hacer modificaciones y obtener un PDF de alta calidad. Esta herramienta en linea permite el trabajo colaborativo dando permiso a los colaboradores para modificar el código.

Gracias pos su visita y vuelvan pronto.


miércoles, 9 de julio de 2014

Mi primer código en Maxima

/* ███▓▒░░ Primer código en Maxima ░░▒▓███ */

wxplot2d([1/x], [x,-5,5],[y,-10,10],
[style, [lines,3,2]],
[gnuplot_preamble, "set title 'Función 1/x';
set size ratio 0.6;"])

/* ███▓▒░░ COMENTARIOS ░░▒▓███*/

/*[1/x], [x,-5,5],[y,-10,10], Función y márgenes de los ejes */
/*[style, [lines,3,2]], Grosor y color de la linea */
/*[gnuplot_preamble, "set title 'Función 1/x'; Como poner un título */
/*set size ratio 0.6;"]) Anchura del grafico debajo del título */

Resultado


Recuerda a R, que se utiliza para estadística.