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];
}
}