# BBM 104 Lab 1 – Introduction to Java on Eclipse Platform Math with Java1

\$30.00

## Description

1 INTRODUCTION
LEARNING OBJECTIVES
The learning objective of this lab is to let student warm up for Java programing language on Eclipse platform. Furthermore,
you will have a chance to implement some mathematical operations at Java using recursive and iterative programming
approaches. Additionally, you will learn how to read a file and parse it in java 1.8. Throughout the experiment, we will use
Eclipse Neon IDE (Integrated Development Environment) for coding activities. Other environments are not being accepted
for this assignment.
MARKING SCHEME
The marking scheme is shown below. Evaluation of code section will involve different aspects. Moreover, the report for

1 Required environment: Eclipse Neon2 + JDK 8
BBM 104 Lab 1 Page 2 of 5
Component Mark %
Code file evaluation
 Short main function implementation
 Concordance to variable name convention
 Correct results
80%
Lab report evaluation
 Aim
 Software usage
 Sample results
– difficulties you have faced
– what you have learned from this assignment
20%
Total 100%
Note: In your solutions, your algorithm and code should be as simple as possible. Algorithms, which are more complicated
than what should be, will get reduced marks.
2 AN OVERVIEW OF THE APPLICATION
In this assignment, we will develop a very simple application which do some mathematical calculations. Briefly, you will
write a Java application which covers the following operations:
 Integral computation via middle Riemann sum with in a range
 Numerical approximation of arcsinh(x) function by Maclaurin series
 Finding the Armstrong (narsist) numbers within a range
In order to make these operations, you will read your input.txt (commands) file. Remember that, this file will be provided
as a command argument and the name of the file may vary. You can use Scanner object to read your file. Information about
using command arguments and file I/O via Scanner object will be given in next sections.
THEORY
In this section, details of the commands along with their theory have been provided.
2.1.1 Riemann Sum
Another numerical method for approximating an integral is Riemann sum which has been named after German
mathematician Bernhard Riemann. The sum is calculated by dividing the region up into shapes (rectangles, trapezoids,
parabolas, or cubics) that together form a region that is similar to the region being measured, then calculating the area for
each of these shapes, and finally adding all of these small areas together. This approach can be used to find a numerical
approximation for a definite integral even if the fundamental theorem of calculus does not make it easy to find a closedform solution [2].
Left
Let f : D → R be a function defined on a subset, D, of the real line, R. Let I = [a, b] be a closed
interval contained in D, and let
be a partition of I, where
A Riemann sum of f over I with partition P is defined as
BBM 104 Lab 1 Page 3 of 5
Right
Middle
Notice the use of “a” instead of “the” in the previous sentence. This is due to the fact that the
choice of 𝑥𝑖

in the interval [𝑥𝑖−1
, 𝑥𝑖
]is arbitrary, so for any given function f defined on an interval
I and a fixed partition P, one might produce different Riemann sums depending on which 𝑥𝑖

is
chosen, as long as 𝑥𝑖−1 < 𝑥𝑖
∗ < 𝑥𝑖 holds true.
 If 𝑥𝑖
∗ = 𝑥𝑖−1
for all i, then S is called left Riemann sum
 If 𝑥𝑖
∗ = 𝑥𝑖
for all i, then S is called right Riemann sum
 If 𝑥𝑖
∗ =
1
2
(𝑥𝑖 + 𝑥𝑖−1) for all i, then S is called middle Riemann sum
In this experiment, you are supposed to employ middle Riemann sum rule.
2.1.2 Maclaurin Series for approximation of Arcsinh(x)
Maclaurin Series are special cases of Taylor Series where the series are centered at zero. Each of these series are sum of
infinite number of terms and used for calculating a special function.
For this operation, you will implement arcsinh(x) function as Maclaurin Series. For function arcsinh(x) value of “x” will be
given by user. After calculating result using formula above, you will print it to the console. Although the formula contains
infinite number of terms, you need to add only first 30 terms. This will give you a precise enough result. Keep in mind that
the formula is defined in |𝑥| < 1
𝑎𝑟𝑐𝑠𝑖𝑛ℎ(𝑥) = ∑
(−1)
𝑛(2𝑛)!
4
𝑛(𝑛!)2(2𝑛+1)
𝑥
∞ 2𝑛+1
𝑛=0
for |𝑥| < 1
2.1.3 Armstrong Numbers
In recreational number theory, a narcissistic number (also known as an Armstrong number, after Michael F. Armstrong) is
a number that is the sum of its own digits each raised to the power of the number of digits [3]. For example 407 and 153 are
both Armstrong numbers since,
407 = 43 + 03 + 73
153 = 13+ 53+ 33
In this assignment one of your task is to find out and print the Armstrong numbers whose digit number is below or equal
to the given digit parameter (e.g 3, 5)
SOFTWARE USAGE
Your program will be a console application and read the input file. For each line there will be command to be executed.
Upon execution, result of each command must be printed to console by using System.out.println function. Keep in
mind that, your input file will be located at the same directory where .classpath and .project files are being located.
Upon clicking the “Run” button, it must immediately execute/output the result of the listed commands and exit without
any prompt or user interaction. Note that there is no limit for the number of commands and they will be syntax-error free.
Moreover, each command is delimited by the character of whitespace.
DETAILS OF THE COMMANDS
In this experiment, your input file will have 4 kinds of commands with varying number of parameters. For each command,
output must involve both command (with parameters) and its result. Please refer to the table below for the details.
BBM 104 Lab 1 Page 4 of 5
1. IntegrateRiemann
Command syntax:
IntegrateRiemann name_of_function a b number_of_partitions
String String int int int
Sample Input:
IntegrateRiemann Func2 2 7 100
IntegrateRiemann Func3 0.2 0.5 10
Sample Output:
IntegrateRiemann Func2 2 7 100 Result: 126.84545266999328
IntegrateRiemann Func3 0.2 0.5 10 Result: 0.10264104641331061
2. Arcsinh
Command syntax:
Arcsinh value
String double
Sample Input:
Arcsinh 0.8
Sample Output:
Arcsinh 0.8 Result: 0.73298321768061
3. Armstrong
Command syntax:
Armstrong value
String int
Sample Input:
Armstrong 3
Sample Output:
Armstrong 3 Result: 0 1 2 3 4 5 6 7 8 9 153 370 371 407
FUNCTIONS
For the numerical method based integrations you will use 3 different functions (Func1, Func2 and Func3). Their formulas
are given below. Keep in mind that you must implement these functions as hardcoded. For the Func3, you have to use your
own arcsinh(x) function.
Func1(x) = 𝑥
2 − 𝑥 + 3 Func2(x) = (3 sin(𝑥)− 4)
2 Func3(x) = arcsinh(x) |𝑥| < 1
There exist various ways to read a text file in Java. However, in this experiment you are supposed to use the most basic one.
Scanner is a simple text scanner which can parse primitive types and strings using regular expressions. A Scanner breaks
its input into tokens using a delimiter pattern, which by default matches whitespace. The resulting tokens may then be
converted into values of different types using the various next methods. Since you are a beginner in Java, the example code
has been given below.
BBM 104 Lab 1 Page 5 of 5
public static void main(String[] args) {
try {
Scanner scanner = new Scanner(new File(args[0]));
while(scanner.hasNextLine()){
String line = scanner.nextLine();
// do something with your line
}
scanner.close();
}
catch (FileNotFoundException ex) {
System.out.println(“No File Found!”);
return;
}
}
4 SAMPLE INPUT & OUTPUT
Input.txt
IntegrateReimann Func1 2 7 10
IntegrateReimann Func1 2 7 100
IntegrateReimann Func2 2 7 10
IntegrateReimann Func2 2 7 100
IntegrateReimann Func3 0.2 0.5 10
Arcsinh 0.8
Armstrong 3
Output window
IntegrateReimann Func1 2 7 10 Result: 104.0625
IntegrateReimann Func1 2 7 100 Result: 106.43190624999957
IntegrateReimann Func2 2 7 10 Result: 126.77543832897483
IntegrateReimann Func2 2 7 100 Result: 126.84545266999328
IntegrateReimann Func3 0.2 0.5 10 Result: 0.10264104641331061
Arcsinh 0.8 Result: 0.73298321768061
Armstrong 3 Result: 0 1 2 3 4 5 6 7 8 9 153 370 371 407
5 SPECIAL NOTES
 Send your submission via a zip file. The zip file must contain your code “HelloJava.java” and “report.pdf”. On the