sábado, 24 de enero de 2015

Metodo de Newton - Metodos Numericos con Java

package pktNewton;
import javax.swing.table.DefaultTableModel;
public class frmNewton extends javax.swing.JFrame {
    DefaultTableModel modelo=new DefaultTableModel();
    public frmNewton() {
        initComponents();
        tblCoe.setModel(modelo);
        tblCoe.setVisible(false);
    }
 private void btnGenActionPerformed(java.awt.event.ActionEvent evt) {                                      

        int i;
        int n=Integer.parseInt(txtN.getText());
        String titu[]=new String[n+1];
        String dato[]=new String[n+1];
        for(i=0;i<=n;i++){ titu[i]="X^"+(n-i); dato[i]="1"; }
        tblCoe.setVisible(true);
        modelo.setColumnIdentifiers(titu);
        modelo.addRow(dato);
    }                                     
    private double df(double x0){
        double n=Double.parseDouble(txtN.getText());
        double s=0;
        for(int i=0;i<modelo.getColumnCount();i++){
            if ((n-i)!=0){
            s=s+(n-i)*Double.parseDouble(modelo.getValueAt(0, i).toString())*Math.pow(x0,n-1-i);
            }
        }
        return s;
    }
    private double f(double x0){
        double n=Double.parseDouble(txtN.getText());
        double s=0;
        for(int i=0;i<modelo.getColumnCount();i++){
            s=s+Double.parseDouble(modelo.getValueAt(0, i).toString())*Math.pow(x0, n-i);
        }
        return s;
    }
    private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) {                                           
        double x0,x1;
        double error=1,e=0.01;
        double n=6,i=0;
        if (mayor()+menor()==0){ x0=mayor();
        }else{ x0=(mayor()+menor())/2; }
        while (error>=e || i==n){
            x1=x0-f(x0)/df(x0);
            i=i+1;
            error=Math.abs((x1-x0)/x1);
            txtR.setText(txtR.getText()+"iteraccion="+i+"\n"+"x1="+x1+"\n"+"f(x1)="+f(x1)+"\n");
            if (f(x1)==0){ txtR.setText(txtR.getText()+"Raiz="+x1+"\n"); break; }
            x0=x1;
        }
        lblF.setText("f(x0):"+f(x0)+" mayor:"+mayor()+" menor:"+menor()+" x0="+x0+" df(x0)="+df(x0));
    }                                          
    private double mayor(){
        double may;
        may=Double.parseDouble(modelo.getValueAt(0, 0).toString());
        for(int i=1;i<modelo.getColumnCount();i++){
            if (Double.parseDouble(modelo.getValueAt(0, i).toString())>may){
                may=Double.parseDouble(modelo.getValueAt(0, i).toString());
            }
        }
        return may;
    }
    private double menor(){
        double men;
        men=Double.parseDouble(modelo.getValueAt(0, 0).toString());
        for(int i=1;i<modelo.getColumnCount();i++){
            if (Double.parseDouble(modelo.getValueAt(0, i).toString())<men){
                men=Double.parseDouble(modelo.getValueAt(0, i).toString());
            }
        }
        return men;
    }
El programa calcula una raiz del polinomio ingresado en la tabla, se ingresan los coheficientes.
el metodo f evalua un valor x0, el metodo df evalua un valor en la derivada del polinomio, el metodo mayor calcula el coheficiente mayor del polinomio, el metodo menor calcula el coheficiente menor del polinomio.
Se realizan Proyectos de Programacion de Computadoras en Java, Visual Basic, SQL, MySql.
e-mail: minuvasoft10@gmail.com

1 comentario:

Hallar las raizes de Cualquier Ecuacion con Excel 365

  Se establece un intervalo de x de -20 a 20 para hallar los f(x) que cambian de signo, X aumenta en 1.   Se halla el cambio de signo de f(x...