public class Laplace { public static void main( String args[] ) { double cso[][] = new double[100][100]; // Toltsuk fel a fix kockakat. Eloszor az also es felso szegely jon // A tombot cso[x][y] formaban indexeljuk. cso[0][0] a bal also sarok for( int i = 0 ; i < 100 ; ++i ) { cso[i][0] = 12.0; cso[i][99] = 90.0; } // Most egyenletesen novekvo modon feltoltjuk a fuggoleges eleket for( int i = 1 ; i < 99 ; ++i ) { double hom = 12.0 + ( ( 90.0 - 12.0 ) * (double)i / 100.0 ); cso[0][i] = hom; cso[99][i] = hom; } // A maradek atlagos homersekletre toltodik for( int i = 1 ; i < 99 ; ++i ) for( int n = 1 ; n < 99 ; ++n ) cso[i][n] = 51.0; // 12 es 90 atlaga int iteracio = 1; // Az iteraciok szamlaloja double maxvalt; // Maximalis homersekletvaltozas az iteracio alatt do { maxvalt = 0; // maximalis valtozas: 0 // Egy iteracio for( int i = 1 ; i < 99 ; ++i ) for( int n = 1 ; n < 99 ; ++n ) { double ujhom = ( cso[i-1][n] + cso[i+1][n] + cso[i][n-1] + cso[i][n+1] ) / 4; double valt = Math.abs( ujhom - cso[i][n] ); if( valt > maxvalt ) maxvalt = valt; cso[i][n] = ujhom; } ++iteracio; System.out.println( "Iteracio: "+iteracio+" maximalis valtozas: "+maxvalt ); } while( maxvalt >= 0.01 ); // Kiirjuk az eredmenyt System.out.println( "Homersekleti ertekek alulrol felfele balrol jobbra 10 soronkent ugralva" ); for( int i = 0 ; i < 100 ; i += 4 ) { System.out.print( i+". sor: " ); for( int n = 0 ; n < 100 ; n += 4 ) { System.out.print( cso[n][i]+ " " ); } System.out.println(); } } }