×
Samples Blogs Make Payment About Us Reviews 4.9/5 Order Now

Create a Program to Compute Numerical Methods in Java Assignment Solution

July 10, 2024
Dr. Marlowe Emberly
Dr. Marlowe
🇬🇧 United Kingdom
Java
Dr. Marlowe Emberly is a trailblazer in the field of computer science, having earned her PhD from the University of Cambridge, UK, renowned for its excellence in research and academia. With eight years of experience in the industry, Marlowe has completed over 800 Java Homework assignments with unparalleled dedication and expertise.
Key Topics
  • Instructions
  • Requirements and Specifications
Tip of the day
Familiarize yourself with OCaml's pattern matching; it simplifies handling recursive data structures like lists and trees, making your code concise and easier to debug.
News
In 2024, Girls Who Code introduced a Data Science + AI track in their free summer programs for high school students, fostering skills in cybersecurity and creative coding​

Instructions

Objective

Write a java assignment program to compute numerical methods in the Java language. Implement algorithms such as Newton-Raphson for root finding, trapezoidal rule and Simpson's rule for numerical integration, and Euler's method for solving ordinary differential equations. Utilize Java's object-oriented features to encapsulate these methods within appropriate classes. Ensure the program handles different mathematical functions and provides accurate results. This Java assignment aims to enhance your understanding of numerical techniques while strengthening your programming skills in the context of scientific computation.

Requirements and Specifications

program to compute numerical methods in java

Source Code

QUESTION 1

from sympy import * from sympy.abc import x from sympy import Symbol import numpy as np from sympy.plotting import plot import matplotlib.pyplot as plt def a(n): return (x ** (3 * n + 1)) / (3 * n + 1) def PartA(): print("*** PART A ****") # Calculate the ratio test n = symbols('n', integer = True, positive = True) # Print simplified version of a(n+1)/a(n) simplified = simplify(a(n+1)/a(n)) print("Simplified: ") print(simplified) print() # Now calculate the limit print("Limit: ") print(limit(simplified, n, float('inf'))) print() def PartB(): print("*** PART B ****") # Calculate the ratio test n = symbols('n', integer=True, positive=True) # Print simplified version of a(n+1)/a(n) simplified = simplify(a(n + 1) / a(n)) # Now calculate the limit lim = limit(simplified, n, float('inf')) # Calculate the intervals for which x**3 < 1 interval = reduce_inequalities(lim<1) print("Interval of convergence:") print(interval) print() """ Each endpoint is 1 value far from x = 0 (-1, 1)""" def PartC(): print("*** PART C ****") # Define the function of convergence eq = 1/3 *log(x+1) - 1/6 *log(x**2-x+1) + 1/sqrt(3) *atan((2*x-1)/sqrt(3)) + pi*sqrt(3)/18 # Interval of convergence is [-1,1) # Define x values xvals = np.linspace(-1, 1-0.01, 100) yvals = lambdify(x,eq)(xvals) # Now plot plt.plot(xvals, yvals, label = 'f(x)') # Compute sq s1 = a(0) + a(1) s3 = a(0) + a(1) + a(2) + a(3) s5 = a(0) + a(1) + a(2) + a(3) + a(4) + a(5) y_s1 = lambdify(x, s1)(xvals) y_s3 = lambdify(x, s3)(xvals) y_s5 = lambdify(x, s5)(xvals) plt.plot(xvals, y_s1, label = 's1') plt.plot(xvals, y_s3, label='s3') plt.plot(xvals, y_s5, label='s5') plt.grid(True) plt.legend() plt.show() print() def PartD(): print("*** PART D ****") # Define t t = symbols('t') #Define n n = symbols('n', integer=True, positive=True) integral1 = integrate(1/(1+t**3), (t, 0, x)) integral2 = integrate((-1)**n *t**(3*n), (t, 0, x)) print(integral1) print() print(integral2) xvals = np.linspace(-1, 1 - 0.01, 100) yvals1 = lambdify(x, integral1)(xvals) yvals2 = lambdify(x, integral2)(xvals) """ From Part C), we found that the series converges to the following function: 1/3 *log(x+1) - 1/6 *log(x**2-x+1) + 1/sqrt(3) *atan((2*x-1)/sqrt(3)) + pi*sqrt(3)/18 And we see that the value of the first integral is log(x + 1)/3 - log(x**2 - x + 1)/6 + sqrt(3)*atan(2*sqrt(3)*x/3 - sqrt(3)/3)/3 + sqrt(3)*pi/18 Which are the same functions. """ if __name__ == '__main__': PartA() PartB() PartC() PartD()

QUESTION 2

from sympy import * from sympy.abc import x from sympy import Symbol import numpy as np from sympy.plotting import plot import matplotlib.pyplot as plt def a(n): return x**n *factorial(2*n)/(factorial(n)**2) def PartA(): print("*** Part A ***") # Calculate the ratio test n = symbols('n', integer=True, positive=True) # Print simplified version of a(n+1)/a(n) simplified = simplify(a(n + 1) / a(n)) print("Simplified: ") print(simplified) print() # Now calculate the limit print("Limit: ") print(limit(simplified, n, float('inf'))) print() def PartB(): print("*** Part B ***") # Calculate the ratio test n = symbols('n', integer=True, positive=True) # Print simplified version of a(n+1)/a(n) simplified = simplify(a(n + 1) / a(n)) # Now calculate the limit lim = limit(simplified, n, float('inf')) # Calculate the intervals for which x**3 < 1 interval = reduce_inequalities(lim < 1) print("Interval of convergence:") print(interval) print() def PartC(): print("*** Part C ***") # Define the function of convergence eq = 1/sqrt(1-4*x) # Interval of convergence is [-1,1) # Define x values xvals = np.linspace(-1/4, 1/4 - 0.01, 100) yvals = lambdify(x, eq)(xvals) # Now plot plt.plot(xvals, yvals, label='f(x)') # Compute sq s5 = a(0) for i in range(1, 6): s5 += a(i) s10 = a(0) for i in range(1, 11): s10 += a(i) s15 = a(0) for i in range(1, 16): s15 += a(i) y_s5 = lambdify(x, s5)(xvals) y_s10 = lambdify(x, s10)(xvals) y_s15 = lambdify(x, s15)(xvals) plt.plot(xvals, y_s5, label='s5') plt.plot(xvals, y_s10, label='s10') plt.plot(xvals, y_s15, label='s15') plt.grid(True) plt.legend() plt.show() if __name__ == '__main__': PartA() PartB() PartC()

QUESTION 3

from sympy import * from sympy import Symbol import numpy as np from sympy.plotting import plot import matplotlib.pyplot as plt # Define x as positive x = symbols('x', positive = True) def a(n): return x**(-log(n)) def PartA(): print("*** Part A ***") # Calculate the ratio test n = symbols('n', integer=True, positive=True) # Print simplified version of a(n+1)/a(n) simplified = simplify(a(n + 1) / a(n)) print("Simplified: ") print(simplified) print() # Now calculate the limit print("Limit: ") print(limit(simplified, n, float('inf'))) print() """ We see that the result of the limit is 1. This means that the Ratio Test is inconclusive """ def PartB(): print("*** Part B ***") # Calculate the ratio test n = symbols('n', integer=True, positive=True) # Define bn xx = .9 bn = abs(xx**(-log(n))) # Now, find the limit print("Limit: ") print(limit(bn, n, float('inf'))) print() """ In this case, the result is that the limit goes to infinity, which means that the series diverges """ def PartC(): print("*** Part C ***") # Calculate the ratio test n = symbols('n', integer=True, positive=True) # Define bn xx = 1.1 cn = abs(xx ** (-log(n))) # Now, find the limit print("Limit: ") print(limit(cn, n, float('inf'))) print() """ In this case, the result is that the limit goes to zero. It means that for x > 1 the series converges. """ def PartD(): print("*** Part D ***") print("There is no interval of convergence") def PartE(): print("*** Part E ***") """ Using properties of logarithms, we have that, for x = e: x^(-log(n)) = exp(-log(n)) = 1/exp(log(n)) = 1/n Then the series is: (-1)^(n+1) *(1/n) = -(-1)^n *(1/n) (-1)^n (1/n) is a known series and it is known that its sum is log(2) """ xx = exp(1) # x = e # Calulate the sum n = symbols('n', integer=True, positive=True) an = (-1)**(n+1) *xx**(-log(n)) # Define the values of n from 1 to a big number nvals = np.linspace(1, 1E6, int(1E6)) sum_result = sum(lambdify(n, an)(nvals)) # Print sum print("The calculated sum of the series is: {:.5f}".format(sum_result)) print("The expected sum of the series is: {:.5f}".format(np.log(2))) # print the value of log(2) if __name__ == '__main__': PartA() PartB() PartC() PartD() PartE()

Related Samples

At ProgrammingHomeworkHelp.com, we offer a comprehensive range of Java assignment samples to assist students in mastering the language. Our curated samples cover diverse topics like object-oriented programming, data structures, GUI development, and more. Each sample is crafted to illustrate best practices and coding techniques, aiding students in understanding complex concepts and improving their programming skills. Whether you're tackling a beginner-level assignment or diving into advanced Java applications, our samples serve as invaluable learning resources to support your academic journey.