Kotlin Program to Find all Roots of a Quadratic Equation

In this article, we will understand how to calculate the roots of a quadratic equation in Kotlin. A quadratic equation is an algebraic expression of the second degree or in other words, it has two results i.e., real number and an imaginary number.

Below is a demonstration of the same

Suppose our input is ?

a = 1, b = 2, c = 3

The desired output would be ?

The roots of the quadratic equation are
root1 = -1.00+1.41i
root2 = -1.00-1.41i

Algorithm

  • Step 1 ? Start

  • Step 2 ? Declare six values: inputA, inputB, inputC, root1, root2, myResult

  • Step 3 ? Define the values

  • Step 4 ? Compute ( inputB * inputB - 4.0 * inputA * inputC) and assign the result to myDeterminant

  • Step 5 ? In a for loop, check if the value of myDeterminant variable is greater than 0, and if true, use quadric formula for root1 = (-inputB + Math.sqrt(myDeterminant)) / (2 * inputA) and for root2 = (-inputB - Math.sqrt(myDeterminant)) / (2 * inputA) to find the value, and assign it to a variable.

  • Step 6 ? If the myDeterminant value is equal to 0, assign (-inputB / (2 * inputA)) to both root values.

  • Step 7 ? If the myDeterminant value is less than 0, then compute val realPart = -inputB / (2 * inputA)

val imaginaryPart = Math.sqrt(-myDeterminant) / (2 * inputA)
  • Step 8 ? Display the result

  • Step 9 ? Stop

Example 1

In this example, we will find all the Roots of a Quadratic Equation. First, declare the input variables ?

val inputA = 1.0
val inputB = 2.0
val inputC = 3.0

Now, set the variable for roots and the result ?

val root1: Double
val root2: Double
val myResult: String

Calculate the Determinant using the formula ?

b² - 4ac

Apply the above formulae to get the Determinant ?

val myDeterminant = inputB * inputB - 4.0 * inputA * inputC

Use if?elseif?else to display all the roots of a Quadratic Equation ?

<div class="code-mirror  language-kotlin" contenteditable="plaintext-only" spellcheck="false" style="outline: none; overflow-wrap: break-word; overflow-y: auto; white-space: pre-wrap;"><span class="token keyword">if</span> <span class="token punctuation">(</span>myDeterminant <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
   root1 <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token operator">-</span>inputB <span class="token operator">+</span> Math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span>myDeterminant<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> inputA<span class="token punctuation">)</span>
   root2 <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token operator">-</span>inputB <span class="token operator">-</span> Math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span>myDeterminant<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> inputA<span class="token punctuation">)</span>
   
   myResult <span class="token operator">=</span> <span class="token string">"root1 = %.2f and root2 = %.2f"</span><span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span>root1<span class="token punctuation">,</span> root2<span class="token punctuation">)</span>
<span class="token punctuation">}</span>
<span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>myDeterminant <span class="token operator">==</span> <span class="token number">0.0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
   root2 <span class="token operator">=</span> <span class="token operator">-</span>inputB <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> inputA<span class="token punctuation">)</span>
   root1 <span class="token operator">=</span> root2

   myResult <span class="token operator">=</span> <span class="token string">"root1 = root2 = %.2f;"</span><span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span>root1<span class="token punctuation">)</span>
<span class="token punctuation">}</span>
<span class="token keyword">else</span> <span class="token punctuation">{</span>
   <span class="token keyword">val</span> realPart <span class="token operator">=</span> <span class="token operator">-</span>inputB <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> inputA<span class="token punctuation">)</span>
   <span class="token keyword">val</span> imaginaryPart <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span><span class="token operator">-</span>myDeterminant<span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> inputA<span class="token punctuation">)</span>

   myResult <span class="token operator">=</span> <span class="token string">"root1 = %.2f+%.2fi and root2 = %.2f-%.2fi"</span><span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span>realPart<span class="token punctuation">,</span> imaginaryPart<span class="token punctuation">,</span> realPart<span class="token punctuation">,</span> imaginaryPart<span class="token punctuation">)</span>
<span class="token punctuation">}</span>
</div>

Let us now see the complete example ?

<div class="execute"></div><div class="code-mirror  language-kotlin" contenteditable="plaintext-only" spellcheck="false" style="outline: none; overflow-wrap: break-word; overflow-y: auto; white-space: pre-wrap;"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>

   <span class="token keyword">val</span> inputA <span class="token operator">=</span> <span class="token number">1.0</span>
   <span class="token keyword">val</span> inputB <span class="token operator">=</span> <span class="token number">2.0</span>
   <span class="token keyword">val</span> inputC <span class="token operator">=</span> <span class="token number">3.0</span>

   <span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"The input values are defined as <span class="token interpolation variable">$inputA</span>, <span class="token interpolation variable">$inputB</span> and <span class="token interpolation variable">$inputC</span> "</span><span class="token punctuation">)</span>

   <span class="token keyword">val</span> root1<span class="token operator">:</span> Double
   <span class="token keyword">val</span> root2<span class="token operator">:</span> Double
   <span class="token keyword">val</span> myResult<span class="token operator">:</span> String
   <span class="token keyword">val</span> myDeterminant <span class="token operator">=</span> inputB <span class="token operator">*</span> inputB <span class="token operator">-</span> <span class="token number">4.0</span> <span class="token operator">*</span> inputA <span class="token operator">*</span> inputC

   <span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"The roots of the quadratic equation are: "</span><span class="token punctuation">)</span>
   
   <span class="token keyword">if</span> <span class="token punctuation">(</span>myDeterminant <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
      root1 <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token operator">-</span>inputB <span class="token operator">+</span> Math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span>myDeterminant<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> inputA<span class="token punctuation">)</span>
      root2 <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token operator">-</span>inputB <span class="token operator">-</span> Math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span>myDeterminant<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> inputA<span class="token punctuation">)</span>
      myResult <span class="token operator">=</span> <span class="token string">"root1 = %.2f and root2 = %.2f"</span><span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span>root1<span class="token punctuation">,</span> root2<span class="token punctuation">)</span>
   <span class="token punctuation">}</span>
   
   <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>myDeterminant <span class="token operator">==</span> <span class="token number">0.0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
      root2 <span class="token operator">=</span> <span class="token operator">-</span>inputB <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> inputA<span class="token punctuation">)</span>
      root1 <span class="token operator">=</span> root2
      myResult <span class="token operator">=</span> <span class="token string">"root1 = root2 = %.2f;"</span><span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span>root1<span class="token punctuation">)</span>
   <span class="token punctuation">}</span>

   <span class="token keyword">else</span> <span class="token punctuation">{</span>
      <span class="token keyword">val</span> realPart <span class="token operator">=</span> <span class="token operator">-</span>inputB <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> inputA<span class="token punctuation">)</span>
      <span class="token keyword">val</span> imaginaryPart <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span><span class="token operator">-</span>myDeterminant<span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> inputA<span class="token punctuation">)</span>
      myResult <span class="token operator">=</span> <span class="token string">"root1 = %.2f+%.2fi and root2 = %.2f-%.2fi"</span><span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span>realPart<span class="token punctuation">,</span> imaginaryPart<span class="token punctuation">,</span> realPart<span class="token punctuation">,</span> imaginaryPart<span class="token punctuation">)</span>
   <span class="token punctuation">}</span>
   <span class="token function">println</span><span class="token punctuation">(</span>myResult<span class="token punctuation">)</span>
<span class="token punctuation">}</span>
</div><div class="output-wrapper"><div class="console-close"></div><div class="code-output"></div></div>

Output

The input values are defined as 1.0, 2.0 and 3.0
The roots of the quadratic equation are:
root1 = -1.00+1.41i and root2 = -1.00-1.41i

Example 2

In this example, we will find all the Roots of a Quadratic Equation using a custom function ?

<div class="execute"></div><div class="code-mirror  language-kotlin" contenteditable="plaintext-only" spellcheck="false" style="outline: none; overflow-wrap: break-word; overflow-y: auto; white-space: pre-wrap;"><span class="token keyword">fun</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
   <span class="token keyword">val</span> inputA <span class="token operator">=</span> <span class="token number">1.0</span>
   <span class="token keyword">val</span> inputB <span class="token operator">=</span> <span class="token number">2.0</span>
   <span class="token keyword">val</span> inputC <span class="token operator">=</span> <span class="token number">3.0</span>
   <span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"The input values are defined as <span class="token interpolation variable">$inputA</span>, <span class="token interpolation variable">$inputB</span> and <span class="token interpolation variable">$inputC</span> "</span><span class="token punctuation">)</span>
   <span class="token function">getRoots</span><span class="token punctuation">(</span>inputA<span class="token punctuation">,</span> inputB<span class="token punctuation">,</span> inputC<span class="token punctuation">)</span>
<span class="token punctuation">}</span>

<span class="token keyword">fun</span> <span class="token function">getRoots</span><span class="token punctuation">(</span>inputA<span class="token operator">:</span> Double<span class="token punctuation">,</span> inputB<span class="token operator">:</span> Double<span class="token punctuation">,</span> inputC<span class="token operator">:</span> Double<span class="token punctuation">)</span> <span class="token punctuation">{</span>
   <span class="token keyword">val</span> root1<span class="token operator">:</span> Double
   <span class="token keyword">val</span> root2<span class="token operator">:</span> Double
   <span class="token keyword">val</span> myResult<span class="token operator">:</span> String
   <span class="token keyword">val</span> myDeterminant <span class="token operator">=</span> inputB <span class="token operator">*</span> inputB <span class="token operator">-</span> <span class="token number">4.0</span> <span class="token operator">*</span> inputA <span class="token operator">*</span> inputC
   <span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"The roots of the quadratic equation are: "</span><span class="token punctuation">)</span>
   
   <span class="token keyword">if</span> <span class="token punctuation">(</span>myDeterminant <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
      root1 <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token operator">-</span>inputB <span class="token operator">+</span> Math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span>myDeterminant<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> inputA<span class="token punctuation">)</span>
      root2 <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token operator">-</span>inputB <span class="token operator">-</span> Math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span>myDeterminant<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> inputA<span class="token punctuation">)</span>
      myResult <span class="token operator">=</span> <span class="token string">"root1 = %.2f and root2 = %.2f"</span><span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span>root1<span class="token punctuation">,</span> root2<span class="token punctuation">)</span>
   <span class="token punctuation">}</span>

   <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>myDeterminant <span class="token operator">==</span> <span class="token number">0.0</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
      root2 <span class="token operator">=</span> <span class="token operator">-</span>inputB <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> inputA<span class="token punctuation">)</span>
      root1 <span class="token operator">=</span> root2
      myResult <span class="token operator">=</span> <span class="token string">"root1 = root2 = %.2f;"</span><span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span>root1<span class="token punctuation">)</span>
   <span class="token punctuation">}</span>

   <span class="token keyword">else</span> <span class="token punctuation">{</span>
      <span class="token keyword">val</span> realPart <span class="token operator">=</span> <span class="token operator">-</span>inputB <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> inputA<span class="token punctuation">)</span>
      <span class="token keyword">val</span> imaginaryPart <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">sqrt</span><span class="token punctuation">(</span><span class="token operator">-</span>myDeterminant<span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token punctuation">(</span><span class="token number">2</span> <span class="token operator">*</span> inputA<span class="token punctuation">)</span>
      myResult <span class="token operator">=</span> <span class="token string">"root1 = %.2f+%.2fi and root2 = %.2f-%.2fi"</span><span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span>realPart<span class="token punctuation">,</span> imaginaryPart<span class="token punctuation">,</span> realPart<span class="token punctuation">,</span> imaginaryPart<span class="token punctuation">)</span>
   <span class="token punctuation">}</span>
   <span class="token function">println</span><span class="token punctuation">(</span>myResult<span class="token punctuation">)</span>
<span class="token punctuation">}</span>
</div><div class="output-wrapper"><div class="console-close"></div><div class="code-output"></div></div>

Output

The input values are defined as 1.0, 2.0 and 3.0
The roots of the quadratic equation are:
root1 = -1.00+1.41i and root2 = -1.00-1.41i
Updated on: 2022-10-13T13:13:35+05:30

935 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements