New blog domain: kula.blog

It's still work in progress but new posts will be published on  https://kula.blog/ Thanks to 11ty base blog RSS is working from the start so it should be easy to add to your reader if you still use any :) If now then I hope you can sign up to the newsletter where I'll be publishing new posts and interesting articles to it from time to time. Please use  kula.blog  from now on.

Rozwiązywanie układu równań metodą Gaussa

Główna klasa aplikacji zawierająca przyciski, tabelę itd. oraz główne metody przez klasę wykonywane - odpowiedź na naciśniećie odpowiednich przysisków aplikacji. "Zatwierdź" powoduje stworzenie tablicy o podaych wymiarach, a oblicz powoduje( w przypadku poprawnego wprowadzenie współczynników równania) obliczenie wartości niewiadomych x1, x2, itd.
Program jest dostępny do ściągnięcia na mojej stronie: krzychukula.googlepages.com




KOD:
*
* JedendesktopView.java
*/

/**
* The application's main frame.
*/
public class JedendesktopView extends FrameView {

public JedendesktopView(SingleFrameApplication app) {
super(app);

initComponents();

// status bar initialization - message timeout, idle icon and busy a nimation, etc


/// to mniej ważne;-)

///i ważniejsze:

@Action
public void ZmieńWielkośćTablicy() {


wielkosc = jSpinner1.getValue().hashCode();
jTable1 = new javax.swing.JTable();
String[] tytuly = new String[wielkosc + 1];
for (int i = 0; i < wielkosc; i++) {
tytuly[i] = Integer.toString(1 + i);
}
tytuly[wielkosc] = "Y";

jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object[wielkosc][wielkosc + 1], tytuly) {
//
Class[] types = new Class[]{
java.lang.Double.class, java.lang.Double.class,
java.lang.Double.class, java.lang.Double.class,
java.lang.Double.class, java.lang.Double.class,
java.lang.Double.class, java.lang.Double.class,
java.lang.Double.class, java.lang.Double.class,
java.lang.Double.class, java.lang.Double.class,
java.lang.Double.class, java.lang.Double.class,
java.lang.Double.class, java.lang.Double.class,
java.lang.Double.class
};

public Class getColumnClass(int columnIndex) {
return types[columnIndex];
}
});

//jTable1.
jTable1.setCellSelectionEnabled(true);

jTable1.setName("jTableWspółczynniki"); // NOI18N



jScrollPane1.setViewportView(jTable1);
mainPanel.validate();
mainPanel.repaint();




}

@Action
public void ObliczRownania() {
//liczba kolumn i wierszy
int liczbakolumn = jTable1.getColumnCount();
int liczbawierszy = jTable1.getRowCount();
//jTextArea1.
/*jTextArea1.append("\n\n\nliczba rownań: ");
jTextArea1.append(Integer.toString(liczbawierszy));
jTextArea1.append(".\nLiczba zmiennych: ");
jTextArea1.append(Integer.toString(liczbakolumn-1));
jTextArea1.append(" + 1 kolumna wyników\n");
jTextArea1.append("\n");*/

//tablica tymczasowa
Double[][] A = new Double[wielkosc][(wielkosc + 1)];

//wczytywanie danych z komponentu do tablicy

for (int i = 0; i < liczbawierszy; i++) {
for (int j = 0; j < liczbakolumn; j++) {
A[i][j] = Double.valueOf(jTable1.getModel().getValueAt(i, j).toString());

//zapis wczytanych danych na log
//jTextArea1.append("A[" + Integer.toString(i) + "][" + Integer.toString(j) + "]=");
//jTextArea1.append(Double.toString(A[i][j]) + ", ");
}
//jTextArea1.append("\n");
}
//jTable1.getModel().getValueAt(liczbawierszy, liczbakolumn);


//działania na tablicy - mnożenie wartości

int k = 0;//zapisuje indeks kolumny

//pętla przechodzi przez wiersze od zerowego do przedostatniego
for (int i = 0; i < liczbawierszy - 1; i++) {



//dla kolejnego wiersza (1+i) - aż do ostatniego wiersza
for (int j = 1 + i; j < liczbawierszy; j++) {


//oblicza dzielnik - przez niego będe dzielił kolejne równanie
//elementy w tej samej kolumnie, element o wyższym o 1 indeksie dziele
//o element o niższym indeksie
double dzielnik = A[j][k] / A[i][k];

//zapisuje wartość dzielnika do logów
//jTextArea1.append("dzilenik: "+ Double.toString(dzielnik)+"\n");



//począwszy od numeru kolumny incrementowanego w głównej pętli
//przechodzi przez elementy wiersza
for (int l = k; l < liczbakolumn; l++) {

//zapisuje dotychczasową wartość elementu do logów
//jTextArea1.append("["+Double.toString(A[j][l])+"]");

//obliczanie wartości
A[j][l] = A[i][l] * dzielnik - A[j][l];

//zapisywanie nowej wartości do zmiennej
//jTextArea1.append("=>["+Double.toString(A[j][l])+"]");
}
//jTextArea1.append("\n");

}
//zwiększam numer kolumny
k++;
}


//wyświetlenie po operacjach!
for (int i = 0; i < liczbawierszy; i++) {
for (int j = 0; j < liczbakolumn; j++) {

jTextArea1.append("\nPo etapie obliczeń:");
//zapis wczytanych danych na log
jTextArea1.append("A[" + Integer.toString(i) + "][" + Integer.toString(j) + "]=");
jTextArea1.append(Double.toString(A[i][j]) + ", ");
}
jTextArea1.append("\n");
}


//obliczanie wartości x1 x2...itd
int liczbaSzukanych = -1 + liczbawierszy;
//zmienna przechowująca x'y - jest ich tyle co wierszy
Double[] X = new Double[1 + liczbaSzukanych];

//int numer wskazuje numer obliczanego x'a
//pętla dla każdego elementu tablicy x oblicza jego wartość
for (int numer = liczbaSzukanych; numer >= 0; numer--) {




//służy do sumowania wartości licznika
double suma = A[numer][1 + liczbaSzukanych];
jTextArea1.append("suma y=" + Double.toString(suma) + "\n");

//obliczenie licznika
int j = numer;
j++;

for (int i = numer; i < liczbaSzukanych; i++) {

/*jTextArea1.append("i="+Integer.toString(i)+", ");
jTextArea1.append("numer="+Integer.toString(numer)+", ");
jTextArea1.append("j="+Integer.toString(j)+" => ");
jTextArea1.append("x[j]="+Double.toString(X[j])+"\t");
jTextArea1.append("A[numer][i]="+Double.toString(A[numer][i])+"\n");*/
suma = suma - (A[numer][j] * X[j]);
//jTextArea1.append("suma po mnożeniu="+Double.toString(suma)+"\n");

j++;
}

//jTextArea1.append("A[num][num]="+Double.toString(A[numer][numer])+"\n ");
X[numer] = suma / A[numer][numer];

jTextArea1.append("\nWYNIKI:\n");

jTextArea1.append("numer=" + Integer.toString(numer) + ", ");
jTextArea1.append("x[" + Integer.toString(numer) + "]=" + Double.toString(X[numer]) + "\n");


}



}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSpinner jSpinner1;
private javax.swing.JTable jTable1;
private javax.swing.JTable jTable2;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;

// End of variables declaration
private javax.swing.JTable jTableK;
int wielkosc;

Comments

Popular posts from this blog

How to simulate slow connection (developer proxy in Node.js)

Safari Mobile CSS VW and VH units bug.