📄 lpmatrixprocpanel.java
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class LPMatrixProcPanel extends JPanel{
double a[][] = new double[4][6];
double x[] = new double[4];
int enteredn1, enteredn2, entered;
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.white);
g.drawRect(10, 10, 250, 150);
for(int i=0; i<4; i++) {
for(int j=0; j<5; j++) {
g.drawString(String.valueOf(a[i][j]), j*50+20 , i*25+43);
}
}
g.drawString("x*=("+x[0]+", "+x[1]+", "+x[2]+", "+x[3]+")", 30, 143);
g.drawString("Z*="+a[3][0], 160, 143);
}
LPMatrixProcPanel(double c0x1, double c0x2, double c1x1, double c1x2, double c2x1, double c2x2, double r1, double r2) {
valueMatrix(c0x1, c0x2, c1x1, c1x2, c2x1, c2x2, r1, r2);
consoleShow();
}
public void valueMatrix(double c0x1, double c0x2, double c1x1, double c1x2, double c2x1, double c2x2, double r1, double r2) {
for(int i=0; i<4; i++) {
for(int j=0; j<6; j++) {
a[i][j]=0;
}
}
a[0][1]=c0x1;
a[0][2]=c0x2;
a[1][1]=c1x1;
a[1][2]=c1x2;
a[1][3]=1;
a[2][1]=c2x1;
a[2][2]=c2x2;
a[2][4]=1;
a[1][0]=r1;
a[2][0]=r2;
x[0]=0; x[1]=0; x[2]=a[1][0]; x[3]=a[2][0];
enteredn1=3; enteredn2=4;
}
public void showMatrixProc() {
int count=-1;
while(++count<50) {
for(int i=0; i<5; i++) {
a[3][i]=a[1][5]*a[1][i]+a[2][5]*a[2][i]-a[0][i];
}
double min=a[3][1];
a[0][5]=1;
for(int i=2; i<5; i++) {
if(a[3][i]<min) {
min=a[3][i];
a[0][5]=i;
}
}
if(a[1][0]/a[1][(int)a[0][5]]<a[2][0]/a[2][(int)a[0][5]]) {
a[3][5]=3;
enteredn1=(int)a[0][5];
entered=4;
}
else {
a[3][5]=4;
enteredn2=(int)a[0][5];
entered=3;
}
consoleShow();
this.paint(this.getGraphics());
try {
Thread.sleep(500);
}
catch(InterruptedException ex) {
}
if(a[3][0]>=0&&a[3][1]>=0&&a[3][2]>=0&&a[3][3]>=0&&a[3][4]>=0) break;
a[(int)a[3][5]-2][5]=a[0][(int)a[0][5]];
for(int i=1; i<5; i++) {
a[0][i]=a[3][i];
}
double temp1=a[1][(int)a[0][5]];
double temp2=a[2][(int)a[0][5]];
temp1=temp1-a[1][(int)a[3][5]];
temp2=temp2-a[2][(int)a[3][5]];
a[1][(int)a[0][5]]=a[1][(int)a[3][5]];
a[2][(int)a[0][5]]=a[2][(int)a[3][5]];
for(int i=0; i<6; i++) {
if(i!=(int)a[0][5]) {
a[1][i]=a[1][i]-temp1;
a[2][i]=a[2][i]-temp2;
if(enteredn1==(int)a[0][5])
x[enteredn2-1]=a[entered-2][0];
if(enteredn2==(int)a[0][5])
x[enteredn1-1]=a[entered-2][0];
}
}
x[(int)a[0][5]-1]=a[(int)a[3][5]-2][0];
x[(int)a[3][5]-1]=0;
}
if(count<50) {
JOptionPane.showMessageDialog(this, "You got one result!", "Result", JOptionPane.INFORMATION_MESSAGE);
}
else {
JOptionPane.showMessageDialog(this, "Tried 50 times no results!", "Result", JOptionPane.INFORMATION_MESSAGE);
}
}
public void consoleShow() {
for(int i=0; i<4; i++) {
for(int j=0; j<6; j++) {
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
System.out.println();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -