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:

Calcular Determinante de una Matrix nxn con Java Netbeans + Codigo Fuente

Metodos Numericos, Analisis Numerico. Clase Deter.java  public class Deter {      static final int N = 5;      static void obtener(double A[...