• Autor de blog

  • Visitantes

    • 1,675 hits
  •  

    Febrero 2010
    L M X J V S D
    « Dic    
    1234567
    891011121314
    15161718192021
    22232425262728

Newton-Rapshon [Métodos numéricos]

Programa que permite encontrar la solución a un conjunto de ecuaciones, mediante el uso de iteraciones. Para dudas y aclaraciones clicale aquí, el método programado es para multiples ecuaciones(mmm 2 en E caso).

Se toman dos funciones, se convierten a ceros y se obtienen sus derivadas con respecto a X y con respecto a Y. Aplicando unas sencilas formulas y repitiendo el proceso, llegamos a la solución.

Programa en acción:

Ojo, no es el mismo de la entrada anterior; como se puede observar en la imagen x=1, y Y=1. Mención especial a el hecho de que el código es mas complejo que los anteriores puesto que se necesitan las derivadas de las funciones, mismas que deben ser integradas en el código al igual que las funciones. Estaras de acuerdo que hacer que el programa obtenga las derivadas es otro nivel de dificultad.

Saludos, si lo necesitas descargalo de este enlace.

Método falsa posición hecho en Java [Métodos numéricos]

Como siempre vamos(…vamos, no se porque escribo en 4ta persona si solo soy yo) a agregar un código mas a la colección porque seguramente  alguien lo va a necesitar algún día.

El problema a resolver es el método método de regula falsi (regla falsa) o falsa posición que la wikipedia explica perfectamente aqui.

Este programa como muchos que hay en “la vida” se encarga de obtener raices de ecuaciones mediante iteraciones.

Este programa no fué hecho por el puro placer si no que es una tarea pendiente en el ITSH.

A continuación unas capturas de su funcionamiento.

Para esto debemos indicar los valores entre los que creemos que se encuentra el resultado, como se puede ver la raíz de 15 es 3.87, los valores que hemos dado son 3 y 4.  La captura está confusa el 15 que se encuetra en Es es el nivel de error con el cual se pretende llegar al resultado. Internamente el el código se encuentra trabajando una función que se encarga de obtener la raíz cuadrada de 15. En caso de necesitar otra función debe modificarse directamente el código.

Como todo programa  le faltan cosas al inicio que en futuras vesiones se pueden ir mejorando o corrigiendo, por ejemplo el hecho de ingresar la función dentro del código.

El código fuente aqui.

Actualización: Programa corregido aumentado aquí, agregado un mecanismo para terminar dando una cantidad límite de iteraciones para las funciones que no convergen.

De senos y similares…

¿Alguna vez te has preguntado que es un seno? o un coseno o todas esas funciones similares que nos dan dolor de cabeza en algunas materias. Si eres de los que se lo han preguntado sigue leyendo, de lo contrario este post no es para ti.

Bien no vamos a definir que es un seno o como funciona el punto que me interesa es explicar el código Java o para cualquier otra “lengua” en que se requiera para calcular un seno.

Ejemplo: Si tenemos una calculadora de esas comunes que usamos en la escuela y pulsamos la tecla  sin 5, seguramente nos arrojara un resultado como -0.95892427466313846889315440615599… configurada en radianes(insisto en que si no sabes que es un radian cambiate de página o continua tu camino).  El asunto de esto es elaborar un programa que nos arroje ese mismo resultado usando una serie(una de las series de Taylor para ser mas especificos) la serie es la siguiente:

Serie de Taylor para el seno

Esta serie es valida para cualquier valor. Y cabe mencionar que entre mas veces se repita el resultado es mas exacto, el error disminuye.

El proyecto fué desarrollado en Netbeans para facilitar la parte gráfica, el desarrollo debe ser pensado y programado por uno mismo. A continuación una captura usando el seno de 5 como ejemplo.

Programa para calcular el seno de un número.Donde Es representa el indice de error o el error minimo con el que se pretende dar el resultado.

X es el número al que se le desea calcular el seno.

Las tres columnas muestran los resultados expresados en radianes, la columna del error debe ir disminuyendo hasta que el error sea menor a Es.

Y el resultado real se muestra obviamente en la columna de en medio.

El código a continuación:


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/


/*
* Serie5.java
*
* Created on 2/09/2009, 11:37:53 PM
*/

import javax.swing.*;

/**
*
* @author luis
*/
public class Serie5 extends javax.swing.JFrame {
public double x;
public double Es;

/** Creates new form Serie5 */
public Serie5() {


initComponents();
areaR.setText(null);
areaR.setText("Término\tResultado(Radianes)\t\t\tError");
}


/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {

lblEs = new javax.swing.JLabel();
txtEs = new javax.swing.JTextField();
lblX = new javax.swing.JLabel();
txtX = new javax.swing.JTextField();
txtResolver = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
areaR = new javax.swing.JTextArea();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();


setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Series");

lblEs.setText(“Es=”);

txtEs.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtEsActionPerformed(evt);
}
});

lblX.setText("x=");


txtResolver.setText("Resolver");
txtResolver.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtResolverActionPerformed(evt);
}
});


areaR.setColumns(20);
areaR.setEditable(false);
areaR.setRows(5);
jScrollPane1.setViewportView(areaR);


jLabel1.setText("%");

jLabel2.setText(“Serie valida para”);

jLabel3.setText(“-infinito<x<infinito”);

jButton1.setText(“Nuevos datos”);
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

jLabel5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/last.gif"))); // NOI18N

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 980, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel5)
.addGap(41, 41, 41)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(lblX)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtX))
.addGroup(layout.createSequentialGroup()
.addComponent(lblEs)
.addGap(1, 1, 1)
.addComponent(txtEs, javax.swing.GroupLayout.PREFERRED_SIZE, 138, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 572, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addGap(145, 145, 145)
.addComponent(txtResolver, javax.swing.GroupLayout.PREFERRED_SIZE, 207, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 162, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(58, 58, 58)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 402, Short.MAX_VALUE))))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(56, 56, 56)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblEs)
.addComponent(txtEs, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblX)
.addComponent(txtX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addComponent(jLabel5))
.addGap(24, 24, 24)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtResolver)
.addComponent(jButton1)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel3)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 381, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

pack();
}// </editor-fold>//GEN-END:initComponents

private void txtEsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtEsActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_txtEsActionPerformed

private void txtResolverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtResolverActionPerformed
// TODO add your handling code here:
//Primero validamos la función


try{
x=Double.parseDouble(txtX.getText());
Es=Double.parseDouble(txtEs.getText());

areaR.setText(null);
areaR.setText(“Término\tResultado(Radianes)\t\t\tError”);

areaR.setText(areaR.getText() + “\n1\t1\t\t\t\t0\n”);

double [][]er=new double[3][10000];
er[0][1]=1;
er[1][1]=x;
er[2][1]=0;
int l1=40;
int l2=40;
String cad1=”";
String cad2=”";

double n=0;
int k=2;
int exponente=3;
do{

cad1=”";
cad2=”";

areaR.setText(areaR.getText() + k + “\t”);
if (k%2==0){
er[1][k]=er[1][k-1] – (Math.pow(x, exponente)/factorial(exponente));
}
else{
er[1][k]=er[1][k-1] + (Math.pow(x, exponente)/factorial(exponente));
}

cad1=cad1 + er[1][k];
l1=40-cad1.length();

for (int i=0; i<l1; i++) cad1 = cad1 + “  “;

areaR.setText(areaR.getText() + cad1);
er[2][k]= Math.abs((er[1][k] – er[1][k-1])/er[1][k]*100);
areaR.setText(areaR.getText() + er[2][k] + “\n”);

k++;
exponente+=2;
}
while (er[2][k-1]>=Es);

}
catch(NumberFormatException e){
JOptionPane.showMessageDialog(null, “Formato de número inválido\npor favor verifique.”, “Error”,JOptionPane.ERROR_MESSAGE);
}
}

public double factorial(int n){
double f=1;
for (int i=n; i>=1; i--){
f*=i;
}
return f;
}//GEN-LAST:event_txtResolverActionPerformed

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
txtX.setText(null);
txtEs.setText(null);
areaR.setText(null);
areaR.setText(“Término\tResultado(Radianes)\t\t\tError”);

}//GEN-LAST:event_jButton1ActionPerformed

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Serie5().setVisible(true);
}
});
}

// Variables declaration - do not modify//GEN-BEGIN:variables
public javax.swing.JTextArea areaR;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel lblEs;
private javax.swing.JLabel lblX;
public javax.swing.JTextField txtEs;
public javax.swing.JButton txtResolver;
public javax.swing.JTextField txtX;
// End of variables declaration//GEN-END:variables

}

No he logrado acomodar el código para ser mas legible,…ustedes disculparan.

Y en resumen : Se hace un ciclo hasta que el error encontrado sea menor al error dado por el usuario. He usado un arreglo espantoso para ir almacenando los resultados. El código tiene seguramente muchas mejoras.

Saludos. Si alguien gusta el compilado (.jar) o el proyecto en netbeans completo solo comenten

Halo la película…

¿Eres de los que esperaba con ansias la película de Halo? Yo si, y al parecer esta vez va mas en serio, o al menos ese es el rumor que anda circulando.798_0003

Después de que Peter Jackson nos dejara un poco alborotados y nomas nada de nada, ahora parece que Spielberg tomará el proyecto y cierto es que la historia es tremenda y no cualquiera lo puede andar rechazando, además dicen que el Señor Steven Spielberg es aficionado a los videojuegos así que la cosa pinta mejor.

Según la página ecetia, el país.com y eurogamer.es las cosas van en serio. Ojala y no nos desilusionemos con el resultado, creo que después de estar tantas horas jugando como tontos muchos de nosotros lo mínimo que nos pueden ofrecer es la historia bien desarrollada sin eliminar tantos detalles o “reinventar cosas”.

Principales sitios web…

IntPeopleeresante dibujo, aunque google creo que quedo demasiado serio… (vía alt1040)

Código para la conexión Access – HTML via Asp

Este post estaba pendiente, estoy seguro que le hace falta a muchas personas como yo  hace unos dias.

<%@ Language=VBScript %>
<html>
<head>
<title>Registro de Empleados</title>
</head>
<body>
<font face="MS Gothic">
<h2>Ingrese sus datos por favor</h2>
<%
If Not Request.QueryString("Message") = "True" Then
%>
<p>
<FORM NAME="GuestBook1" METHOD="GET" ACTION="Agregar.asp">
<table>
<tr>
<td><font face="MS Gothic">Nombre:</td><td><INPUT TYPE="TEXT" NAME="nombre"></td>
</tr><tr>
<td><font face="MS Gothic">Apellidos:</td><td><INPUT TYPE="TEXT" NAME="apellidos"></td>
</tr><tr>
<td><font face="MS Gothic">Edad:</td><td><INPUT TYPE="TEXT" NAME="edad"></td>
</tr><tr>
<td><font face="MS Gothic">Ocupacion:</td><td><INPUT TYPE="TEXT" NAME="ocupacion"></td>
</tr><tr>
<td><font face="MS Gothic">Fecha:</td><td><INPUT TYPE="TEXT" NAME="fecha"></td>
</tr>
</table>
</p>
<p>
<INPUT TYPE="HIDDEN" NAME="Message" VALUE="True">
<INPUT TYPE="SUBMIT" VALUE="Enviar información">
</FORM>
</p>
<%
Else
dim strTB1, strTB2, strTB3, strTB4, strMB1, strCommand
strTB1 = Server.HTMLEncode(Request.QueryString("nombre"))
strTB2 = Server.HTMLEncode(Request.QueryString("apellidos"))
strTB3 = Server.HTMLEncode(Request.QueryString("edad"))
strTB4 = Server.HTMLEncode(Request.QueryString("ocupacion"))
strMB1 = Server.HTMLEncode(Request.QueryString("fecha"))
strProvider = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\InetPub\Wwwroot\Proyecto\Empleados.mdb;"
Set objConn = server.createobject("ADODB.Connection")
objConn.Open strProvider
strCommand = "INSERT INTO empleados (nombre,apellidos,edad,ocupacion,fecha) VALUES ('"
strCommand = strCommand & strTB1 & "','" & strTB2 & "','" & strTB3 & "','" & strTB4 & "','" & strMB1
strCommand = strCommand & "')"
objConn.Execute strCommand
Response.Write("Gracias. Se agregaron sus datos.")
End If
%>
</font>
</body>
</html>

Todo el código es entendible, una parte importante pero se nota a simple vista es la dirección de la base de datos, en este caso llamada Empleados.mdb.

Un dragón en el garage

Dragon21Acabo de terminar de leer el libro Carl Sagan “El mundo y sus demonios” y es un fabuloso libro, de los mejores que he leido, de esos libros que te hacen abrir los ojos y dices “caramba es cierto…” o “que equivocado estaba”.

El título de este post hace referencia al capitulo número 10 del libro donde toma este ejemplo(el del título) para explicarnos muchas situaciones parecidas pero que la gente cree que son verdad.

Ahora lo pongo a disposición en formato PDF, que hes como yo lo he leido. De verdad es fabuloso, si te consideras en parte científico o te interesa minimamente la ciencia creeme que vas a quedar fascinado.

Algo que se me viene a la mente en este momento es una parte que afirma que cuando leemos un libro es como si el autor te hablara dentro de tu cabeza aún cuando el ya haya muerto como en este caso, Carl Sagan falleció en 1996 y sin embargo ahora en pleno 2009 me entero de lo que el creia.

El link para que descarguen el libro es este:

http://www.mediafire.com/?sharekey=380aa2c5b53fa669b94117dade8fc295e04e75f6e8ebb871

o dando clic aqui.

Aunque fácil pueden encontrarlo en varios sitios con una búsqueda sencilla en google. Después de conocer todo este libro me siento como con la obligación de hacerlo llegar a otras personas que viven aun en la obscuridad se que les agradaría.

Actualización:

Los links están corregidos (Gracias gblas).

De como se diseño una web entre asp y access.

De como se diseño una aplicación enviar datos desde una página web hasta una base de datos de Access.

Hace aproximadamente unos dos meses me vi en la oportunidad de diseñar una aplicación que permitiera guardar los datos recopilados por una página web en una base de datos de Access, muchas veces he enseñado como diseñar los formularios usando HTML puro; y siempre decía “para que los datos viajen al servidor el HTML se apoya de otros lenguajes” y ahí quedaba la cosa ya que no daba tiempo ver esos otros lenguajes.

Muy bien pues esta vez se presento la oportunidad para aprender o usar esos otros lenguajes oportunidad para mi, necesidad para mis compañeros de universidad ya que con esa aplicación pasarían la materia.

Ok iniciare mencionando que Asp no es un lenguaje si no una tecnología propiedad de Microsoft que utiliza Visual Basic Script como lenguaje, y se apoya de un servidor llamado IIS el procedimiento básicamente fue el siguiente:

1. Instalar el servidor IIS (Internet Information Service), el cual en Windows 7 no me funcionó por mas que intente, al fin se terminó diseñando en Windows Xp.

2. Para esto se debe tener un disco de instalación de Xp a la mano, el IIS se instala desde Agregar o quitar programas del panel de control en la sección Componentes de Windows.

3. Una vez instalado el IIS nos damos cuenta que crea una carpeta en nuestro disco C:  llamada inetpub en la cual existen otras mas carpetas, la que nos interesa es : wwwroot en la que debemos colocar las páginas que deben ejecutarse.

4. Dentro de esta carpeta podemos colocar páginas con la extensión .ASP para hacer pruebas. Las páginas deben llamarse desde el explorador usando localhost para indicar que se ejecutaran en el servidor local.

Por ejemplo:

<% Response.Write(“Hola mundo”) %>

El código necesario para enviar los datos desde una página HTML hasta la base de datos viene incluido en la documentación sobre IIS.

Pero lo colocaré en el siguiente post.

El mundo y sus demonios

200px-Carl_Sagan_Planetary_Society
Bien pues en estas vacaciones estoy aprovechando un poco el tiempo  leyendo el libro de Carl Sagan “El mundo y sus demonios”,   me doy cuenta que las  recomendaciones que el hace para enseñar la ciencia y bueno creo que aplica  a cualquier conocimiento que se desee transmitir son muy buenas para dejarlas en el libro  y podemos resumir en lo siguiente:

  1. Explicar que en un momento uno mismo tuvo dificultades para aprender eso mismo que ahora enseña.
  2. Usar un lenguaje sencillo y porsupuesto adaptarlo al público a que se pretende hacer llegar. A veces estamos acostumbrados a hablar entre colegas usando términos conocidos entre nosotros pero poco usuales para otras personas.
  3. Usar anecdotas o analogías apropiadas para lo que se pretende explicar.
  4. Por encima de todo, recuerde lo que pensaba antes de entender usted mismo lo que está explicando. Recuerde los malentendido en los que estuvo a punto de caer y señalelos explicitamente.
  5. Recapitule los pasos que lo llevaron de la ignorancia al conocimiento

Es obvio que estos pasos van después del estar preparados respecto al tema que se pretende enseñar si no todo lo anterior no serviría de mucho. Si alguien conoce a los Ingenieros del tecnológico que por favor se las haga llegar.
Algo que él menciona muy seriamente es que no hay preguntas estúpidas , todas son igual de importantes.

7 cosas que no sabían de mi! (meme) y que no me importa si no les interesan.

1. He tenido tres blogs hasta el momento. Uno en msnspaces que fué donde supe que eran los blogs. Ahora el que sigo atendiendo es el de wordpress.

2. Odio a los habladores, hay gente escandalosa o que habla demasiado. Aunque es agradable ver en ocaciones como se contradicen o caen en la verdad.

3. Ultimamente soy un poco adicto a los videojuegos en Pc. Si alguien gusta “echamos la reta”, como solemos decir.

4. Me gusta ver mucho peliculas y buenas series de Tv, claro cuando hay tiempo como ahora en vacaciones.

5. No se andar en bicicleta y casi nadie lo sabe jeje, creo que eso es terrible. Me siento un fracaso. Pero no pierdo esperanzas.

6. Estoy atrazado como 4 años en la vida, antes me veia casado a los 23 ahora veo que aun falta mucho, tambien ya debería haber terminado la carrera y no lo he hecho.

7. He leido mucho, principalmente ficción, aunque ahora veo que había otras cosas mas importantes.

El meme viene de (Polito).

Ahora lo paso a quien guste contestarlo.