
Explore how to use Java for scientific computing and math. Understand what's available and how you can add or write your own code for scientific computing in Java.
Explore scientific computing with Java by using open source libraries, Eclipse workflows, and a GitHub repository to learn math-focused Java libraries and practical coding in Java.
Explore Java 8 scientific computing topics, from a math library and expression evaluation to complex numbers, polynomials, plotting with JFreeChart, and numerical methods.
Explore Java's built-in math class for real numbers, its static methods and constants pi and e, its relationship with strict math and native libraries, and practical usage in engineering calculations.
Learn to evaluate string expressions in Java using the Exp4j library, handling real numbers and variables with a value map, and using predefined functions and the expression builder.
Explore Java expression evaluation with explore J, building expressions, managing variables, tokenization, and the shunting algorithm, and extend with custom functions and operators.
This lecture benchmarks an expression evaluator against the native math sine in Java, measuring one million evaluations with a timer, and shows a large performance gap.
Build a Swing-based graphical user interface in Eclipse to evaluate expressions with a Java expression library, defining variables and functions and displaying results, while exploring model-view-controller design.
Learn how Java uses boxing and unboxing for operator overloading only with built-in wrappers, and how Eclipse plugins enable custom overloading for user defined objects via valueOf.
Explore operator overloading across Java, C++, and Python with a point class, comparing C++ global and member overloads, Python __add__ and __radd__, and Java’s plugin-driven approach to enable it.
Explore how Java handles operator overloading behind the scenes by converting vector1 minus vector2 into vector1.subtract(vector2) and inspecting the generated bytecode in Eclipse.
Explore 2d vector representation in java by applying operator overloading with x_hat and y_hat as basis, constructing vectors via A times x_hat plus B times y_hat, and testing in eclipse.
Explore operator overloading in Java to build a symbolic math engine with an abstract function class, constant and identity functions, and a valueOf factory.
Build a symbolic single-variable function space in Java using an abstract function class and operator overloading. Create constants, identity, sine, cosine, and function composition with get value methods.
Explore composition of functions in Java for scientific computing by implementing symbolic functions with operator overloading, chain rule, and derivative rules to build composite functions.
Explore building a symbolic function framework in java for scientific computing, enabling addition, subtraction, multiplication, and division, with string representations for x, sine, cosine, and compositions.
Explore symbolic functions and their string representation in Java for scientific computing, implementing addition, subtraction, multiplication, division, and negation, with constants and elementary functions like sine and cosine.
Explore complex numbers in Java by modeling them as immutable objects on the complex plane, covering real and imaginary parts, magnitude, phase, conjugate, and Euler's identity for practical computation.
Model polynomials as algebraic expressions in Java by implementing a single-variable polynomial class with coefficients and degree, and produce a readable string representation while exploring roots and division.
Learn how to evaluate polynomials efficiently with Horner's method in Java for scientific computing, and implement polynomial algebra—addition, subtraction, multiplication, and composition—via operator overloading.
Explore operator overloading for polynomials in Java, implementing addition, subtraction, and multiplication by convolution, Horner's method for evaluation, composition, division with rational forms, and roots using the Flanagan library.
Learn polynomial division in java, computing quotient and remainder with remainder degree less than the divisor, via the polynomial long division algorithm and a java Polynomial class.
Explore sequences and series and how they map indices to real or complex values in Java. Use a functional interface to implement sequences with anonymous classes, lambda expressions, and recursion.
explores sequences and series, defines sigma notation for finite and infinite sums with initial and final indices, and demonstrates a Java series implementation with caching, convergence, and error tolerance.
Learn to test convergence of numerical sequences and series in Java by implementing a generating sequence, caching results, and using absolute and relative error criteria.
Explore Taylor expansion to approximate a smooth function around x0 with a polynomial derived from derivatives, using factorial coefficients and convergence illustrated by the exponential example.
Explore how to model sequences and series in Java, implement recursion and memoization, and accelerate convergence with transformations like Shanks and Euler to improve numerical accuracy.
Explore convergence acceleration of series in Java by applying sequence transforms (Aiken, Shanks, Richardson), using partial sums, forward differences, and distinguishing oscillating from non-oscillating sequences.
Explore sequence transformations for convergence acceleration in Java, comparing Shanks and Richardson methods, handling alternating versus monotone sequences, with examples and Romberg integration connections.
Explore Java-based methods for manipulating sequences and series, including operator overloading, delta and unit-step sequences, delay and shift, convolution, and running averages for discrete systems.
Explore how perturbation theory converts a hard problem into a power series in epsilon, yielding a convergent or divergent series that can be accelerated by sequence transformations.
Explore Romberg integration by applying fourth-order Richardson extrapolation to trapezoid and rectangle methods, accelerating convergence in numerical integration through sequence transformations.
Explore rate and order of convergence for sequences, including linear, sub linear, super linear, and quadratic convergence, and learn how Richardson transformation accelerates convergence without changing the rate.
Explain how Taylor series approximate smooth functions, derive coefficients from derivatives and factorials, and show how the radius of convergence limits where the series converges, with Java symbolic math examples.
Explore how discrete sequences converge, apply ratio and root tests, learn series acceleration with Euler, Shanks, and Richardson transforms, and implement concepts in Java, including perturbation theory.
Find real roots of continuous one-dimensional functions on a given interval using root bracketing, the by-section method, and faster convergence via Newton-type and generalized Taylor approaches.
Learn the by section method for root finding using bracketing and sign changes, with recursive interval halving. Apply absolute and relative error criteria for stopping in Java.
Explore how to locate all real roots of a continuous function on an interval using the binary search (bisection) method, by subdividing the range and testing each subinterval.
Examine the tri-section method for root finding by dividing the interval into three parts, using recursion and initial guesses to accelerate convergence, compared with binary and by-section methods.
Explore root-finding techniques that blend bracketing, secant methods, and Brent’s method, with quadratic interpolation and fallback to by-section when needed for reliable convergence.
discover the improved secant method that maintains a valid root bracket by using x_{n-2} to x_n, and explore bracketing, bisection, and Newton methods for faster, reliable root finding in Java.
Demonstrate the Newton-Raphson method for root finding, using tangent lines, close initial guesses, and center, forward, or backward derivative approximations for fast quadratic convergence.
Apply Newton's method in Java with an initial guess, no bracketing, and a refined convergence check using absolute and relative errors to rapidly locate multiple roots.
Compare root-finding methods for polynomials, including bisection, bracketing, Brent's method, and Newton's method, through a Java demonstration, highlighting convergence, initial bracket requirements, and method reliability.
Explore root finding in Java for scientific computing, covering generalized Taylor methods and Newton's method, and using Michael Flanagan's Java Scientific Library for real roots of polynomials and functions.
Explore particle swarm optimization, a derivative-free, iteration-based method that uses a swarm of particles to optimize a fitness function by tracking each particle's and the swarm's best positions.
Explore a Java implementation of particle swarm optimization. Learn how to initialize particles, update velocity and position, and track personal and swarm bests to optimize a fitness function.
Explore particle swarm optimization on one-dimensional functions, visualizing how 20 particles move across iterations to maximize or minimize a fitness function in 0 to 2π, with convergence and animation.
Apply particle swarm optimization to locate real roots by minimizing the absolute value of f(x) in one dimension, without derivatives or continuity requirements, using a simple fitness-driven PSO.
Learn to implement particle swarm optimization in Java for n-dimensional function minimization and root finding, and enforce bounded optimization to keep particles within defined intervals.
Explore how to convert constrained inequalities into a fitness function and solve them with bounded particle swarm optimization in Java, using circles and lines as concrete examples.
Visualize and interact with Java code by auto-generating a graphical interface from a class constructor using a reflections-based Swing framework, enabling function subtype selection, data plotting, and runnable JAR export.
Whether you are an experienced java developer or a high-school or college student, if you are a java enthusiast then this course is for you. This course will equip you with an in-depth understanding of the fundamental concepts of scientific computing such as optimization, finding roots, and solving differential equations. The lectures and the accompanying powerpoint slides are designed and prepared with the utmost quality.