// pde_nl21.java non linear PDE, second order, second degree // // The PDE to be solved for u(x) is: // Uxx(x) + 2*Ux(x) + U(x)^2 = f(x) // // for testing code: // f(x) = x^4 + 2x^2 + 4x + 3 // u(xmin=0)=1 u(xmax=1)=2 // analytic solution and boundary ub(x) = x^2+1 // thus Ux(x) = 2*x // Uxx(x) = 2 // // needs simeq_newton5.java // needs invert.java // needs rderiv.java class pde_nl21 { // number of points for descretization int nx = 5; int dof = (nx-2); // DOF, not including nonlinear terms double hx; double xg[] = new double[nx]; double ug[] = new double[nx]; // computed solution, incl boundary double uA[] = new double[nx]; // actual solution, incl boundary // Define the region for the solution: // xmin <= x <= xmax, using nx points double xmin = 0.0; double xmax = 1.0; // coefficients of derivatives double cx[][] = new double[nx][nx]; double cxx[][] = new double[nx][nx]; simeq_newton5 SN = new simeq_newton5(1.0e-4, 1.0, 12, false); // can adjust parameters eps b itr debug pde_nl21() // construct and run { double x; System.out.println("The PDE to be solved is:"); System.out.println(" Uxx(x) + 2*Ux(x) + U(x)^2 = f(x)"); System.out.println(" f(x) = x^4 + 2x^2 + 4x + 3"); System.out.println(" discrete u(xmin=0)=1 u(xmax=1)=2"); System.out.println(" analytic boundary ub(x) = x^2+1"); System.out.println(" "); // initialize hx, xg hx = (xmax-xmin)/(double)(nx-1); for(int i=0; i