GaussJordan

数値を代入してから、ボタンをクリックしてください。

class GaussJordan
{
    double a[][];
           
    //コンストラクター
    GaussJordan()
    {   
        a=new double[3][4];
    }
    //1行の値をsetする
    void setA1(double a1,double a2,double a3,double a4)
    {
        a[0][0]=a1;a[0][1]=a2;a[0][2]=a3;a[0][3]=a4;
    }
    //2行の値をsetする
    void setA2(double a1,double a2,double a3,double a4)
    {
        a[1][0]=a1;a[1][1]=a2;a[1][2]=a3;a[1][3]=a4;
    }
    //3行の値をsetする
    void setA3(double a1,double a2,double a3,double a4)
    {
        a[2][0]=a1;a[2][1]=a2;a[2][2]=a3;a[2][3]=a4;
    }
    double getX()
    {
       
            int k;
            for (k=0;k<=2;k++)
            {
                double Max=0;
                int s;
                s=k;
                for(int j=k;j<=2;j++)
                {
                    if(Math.abs(a[j][k])>Max)
                    {
                        Max=Math.abs(a[j][k]);
                        s=j;
                    }
                   
                }
           
           
            for (int j=0;j<=3;j++)
            {
                double t=a[k][j];
                a[k][j]=a[s][j];
                a[s][j]=t;
            }
           
            double p=a[k][k];
           
            for ( int j=k;j<=3;j++)
            {
                a[k][j]=a[k][j]/p;
                //System.out.println(""+a[k][j]);
            }
            for(int i=0;i<=2;i++)
            {
                if(i!=k)
                {
                    double d=a[i][k];
                    for(int j=k;j<=3;j++)
                    {
                        a[i][j]=a[i][j]-d*a[k][j];
                       
                    }
                }
            }
        }
       
        return a[0][3];
    }

    double getY()
    {
        return a[1][3];
    }
    double getZ()
    {
        return a[2][3];
    }
   

}
       

/*
    A basic extension of the java.applet.Applet class
*/

import java.awt.*;
import java.applet.*;

public class Applet1 extends Applet
{
    public void init()
    {
       
        setLayout(null);
        setSize(390,174);
        textField1.setText("1");
        add(textField1);
        textField1.setFont(new Font("Dialog", Font.PLAIN, 16));
        textField1.setBounds(24,24,60,24);
        label1.setText("x +");
        add(label1);
        label1.setFont(new Font("Dialog", Font.PLAIN, 16));
        label1.setBounds(96,24,24,24);
        textField2.setText("1");
        add(textField2);
        textField2.setFont(new Font("Dialog", Font.PLAIN, 16));
        textField2.setBounds(120,24,60,24);
        textField3.setText("1");
        add(textField3);
        textField3.setFont(new Font("Dialog", Font.PLAIN, 16));
        textField3.setBounds(216,24,60,24);
        textField4.setText("2");
        add(textField4);
        textField4.setFont(new Font("Dialog", Font.PLAIN, 16));
        textField4.setBounds(312,24,60,24);
        label2.setText("y +");
        add(label2);
        label2.setFont(new Font("Dialog", Font.PLAIN, 16));
        label2.setBounds(192,24,24,24);
        label3.setText("z =");
        add(label3);
        label3.setFont(new Font("Dialog", Font.PLAIN, 16));
        label3.setBounds(288,24,24,24);
        textField5.setText("1");
        add(textField5);
        textField5.setFont(new Font("Dialog", Font.PLAIN, 16));
        textField5.setBounds(24,60,60,24);
        label4.setText("x +");
        add(label4);
        label4.setFont(new Font("Dialog", Font.PLAIN, 16));
        label4.setBounds(96,60,24,24);
        textField6.setText("-1");
        add(textField6);
        textField6.setFont(new Font("Dialog", Font.PLAIN, 16));
        textField6.setBounds(120,60,60,24);
        textField7.setText("-2");
        add(textField7);
        textField7.setFont(new Font("Dialog", Font.PLAIN, 16));
        textField7.setBounds(216,60,60,24);
        textField8.setText("-3");
        add(textField8);
        textField8.setFont(new Font("Dialog", Font.PLAIN, 16));
        textField8.setBounds(312,60,60,24);
        label5.setText("y +");
        add(label5);
        label5.setFont(new Font("Dialog", Font.PLAIN, 16));
        label5.setBounds(192,60,24,24);
        label6.setText("z =");
        add(label6);
        label6.setFont(new Font("Dialog", Font.PLAIN, 16));
        label6.setBounds(288,60,24,24);
        textField9.setText("2");
        add(textField9);
        textField9.setFont(new Font("Dialog", Font.PLAIN, 16));
        textField9.setBounds(24,96,60,24);
        label7.setText("x +");
        add(label7);
        label7.setFont(new Font("Dialog", Font.PLAIN, 16));
        label7.setBounds(96,96,24,24);
        textField10.setText("3");
        add(textField10);
        textField10.setFont(new Font("Dialog", Font.PLAIN, 16));
        textField10.setBounds(120,96,60,24);
        textField11.setText("1");
        add(textField11);
        textField11.setFont(new Font("Dialog", Font.PLAIN, 16));
        textField11.setBounds(216,96,60,24);
        textField12.setText("4");
        add(textField12);
        textField12.setFont(new Font("Dialog", Font.PLAIN, 16));
        textField12.setBounds(312,96,60,24);
        label8.setText("y +");
        add(label8);
        label8.setFont(new Font("Dialog", Font.PLAIN, 16));
        label8.setBounds(192,96,24,24);
        label9.setText("z =");
        add(label9);
        label9.setFont(new Font("Dialog", Font.PLAIN, 16));
        label9.setBounds(288,96,24,24);
        button1.setLabel("Clear");
        add(button1);
        button1.setBackground(java.awt.Color.lightGray);
        button1.setBounds(252,132,51,23);
        button2.setLabel("Calc");
        add(button2);
        button2.setBackground(java.awt.Color.lightGray);
        button2.setBounds(312,132,57,23);
        //}}
   
        //{{REGISTER_LISTENERS
        SymMouse aSymMouse = new SymMouse();
        button2.addMouseListener(aSymMouse);
        button1.addMouseListener(aSymMouse);
        //}}
    }
   
    //{{DECLARE_CONTROLS
    java.awt.TextField textField1 = new java.awt.TextField();
    java.awt.Label label1 = new java.awt.Label();
    java.awt.TextField textField2 = new java.awt.TextField();
    java.awt.TextField textField3 = new java.awt.TextField();
    java.awt.TextField textField4 = new java.awt.TextField();
    java.awt.Label label2 = new java.awt.Label();
    java.awt.Label label3 = new java.awt.Label();
    java.awt.TextField textField5 = new java.awt.TextField();
    java.awt.Label label4 = new java.awt.Label();
    java.awt.TextField textField6 = new java.awt.TextField();
    java.awt.TextField textField7 = new java.awt.TextField();
    java.awt.TextField textField8 = new java.awt.TextField();
    java.awt.Label label5 = new java.awt.Label();
    java.awt.Label label6 = new java.awt.Label();
    java.awt.TextField textField9 = new java.awt.TextField();
    java.awt.Label label7 = new java.awt.Label();
    java.awt.TextField textField10 = new java.awt.TextField();
    java.awt.TextField textField11 = new java.awt.TextField();
    java.awt.TextField textField12 = new java.awt.TextField();
    java.awt.Label label8 = new java.awt.Label();
    java.awt.Label label9 = new java.awt.Label();
    java.awt.Button button1 = new java.awt.Button();
    java.awt.Button button2 = new java.awt.Button();
    //}}

    class SymMouse extends java.awt.event.MouseAdapter
    {
        public void mouseClicked(java.awt.event.MouseEvent event)
        {
            Object object = event.getSource();
            if (object == button2)
                button2_MouseClicked(event);
            else if (object == button1)
                button1_MouseClicked(event);
        }
    }

    void button2_MouseClicked(java.awt.event.MouseEvent event)
    {
        // to do: code goes here.
        GaussJordan gj= new GaussJordan();
       
        String a00=textField1.getText();
        double a00d=new Double(a00).doubleValue();        
        String a01=textField2.getText();
        double a01d=new Double(a01).doubleValue();
        String a02=textField3.getText();
        double a02d=new Double(a02).doubleValue();
        String a03=textField4.getText();
        double a03d=new Double(a03).doubleValue();
       
       
       
        String a10=textField5.getText();
        double a10d=new Double(a10).doubleValue();
        String a11=textField6.getText();
        double a11d=new Double(a11).doubleValue();
        String a12=textField7.getText();
        double a12d=new Double(a12).doubleValue();
        String a13=textField8.getText();
        double a13d=new Double(a13).doubleValue();
       
        String a20=textField9.getText();
        double a20d=new Double(a20).doubleValue();
        String a21=textField10.getText();
        double a21d=new Double(a21).doubleValue();
        String a22=textField11.getText();
        double a22d=new Double(a22).doubleValue();
        String a23=textField12.getText();
        double a23d=new Double(a23).doubleValue();
       
       
       
        gj.setA1(a00d,a01d,a02d,a03d);
        gj.setA2(a10d,a11d,a12d,a13d);
        gj.setA3(a20d,a21d,a22d,a23d);
        System.out.println(""+gj.getX());
        System.out.println(""+gj.getY());
        System.out.println(""+gj.getZ());
       
       
        textField1.setText(""+gj.get00());
        textField2.setText(""+gj.get01());
        textField3.setText(""+gj.get02());
        textField4.setText(""+gj.getX());
       
        textField5.setText(""+gj.get10());
        textField6.setText(""+gj.get11());
        textField7.setText(""+gj.get12());
        textField8.setText(""+gj.getY());
       
        textField9.setText(""+gj.get20());
        textField10.setText(""+gj.get21());
        textField11.setText(""+gj.get22());
        textField12.setText(""+gj.getZ());
    }

    void button1_MouseClicked(java.awt.event.MouseEvent event)
    {
        // to do: code goes here.
        textField1.setText("1");
        textField2.setText("2");
        textField3.setText("-1");
        textField4.setText("1");
       
        textField5.setText("2");
        textField6.setText("3");
        textField7.setText("2");
        textField8.setText("-3");
       
        textField9.setText("-2");
        textField10.setText("1");
        textField11.setText("1");
        textField12.setText("4");
           
    }
}


       
class GaussJordan
{
    double a[][];
           
    //コンストラクター
    GaussJordan()
    {   
        a=new double[3][4];
    }
    //1行の値をsetする
    void setA1(double a1,double a2,double a3,double a4)
    {
        a[0][0]=a1;a[0][1]=a2;a[0][2]=a3;a[0][3]=a4;
    }
    //2行の値をsetする
    void setA2(double a1,double a2,double a3,double a4)
    {
        a[1][0]=a1;a[1][1]=a2;a[1][2]=a3;a[1][3]=a4;
    }
    //3行の値をsetする
    void setA3(double a1,double a2,double a3,double a4)
    {
        a[2][0]=a1;a[2][1]=a2;a[2][2]=a3;a[2][3]=a4;
    }
    double getX()
    {
       
            int k;
            for (k=0;k<=2;k++)
            {
                double Max=0;
                int s;
                s=k;
                for(int j=k;j<=2;j++)
                {
                    if(Math.abs(a[j][k])>Max)
                    {
                        Max=Math.abs(a[j][k]);
                        s=j;
                    }
                   
                }
           
           
            for (int j=0;j<=3;j++)
            {
                double t=a[k][j];
                a[k][j]=a[s][j];
                a[s][j]=t;
            }
           
            double p=a[k][k];
           
            for ( int j=k;j<=3;j++)
            {
                a[k][j]=a[k][j]/p;
                //System.out.println(""+a[k][j]);
            }
            for(int i=0;i<=2;i++)
            {
                if(i!=k)
                {
                    double d=a[i][k];
                    for(int j=k;j<=3;j++)
                    {
                        a[i][j]=a[i][j]-d*a[k][j];
                       
                    }
                }
            }
        }
       
        return a[0][3];
    }

    double getY()
    {
        return a[1][3];
    }
    double getZ()
    {
        return a[2][3];
    }
   
    double get00()
    {
        return a[0][0];
    }
   
    double get01()
    {
        return a[0][1];
    }
    double get02()
    {
        return a[0][2];
    }
    double get10()
    {
        return a[1][0];
    }
    double get11()
    {
        return a[1][1];
    }
    double get12()
    {
        return a[1][2];
    }
    double get20()
    {
        return a[2][0];
    }
    double get21()
    {
        return a[2][1];
    }
    double get22()
    {
        return a[2][2];
    }
}
  

BACK >>