Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Haskell program to find all roots of a quadratic equation
In this tutorial, we discuss writing a program to find the largest among the three numbers Haskell programming language. A quadratic equation is a second-degree algebraic equation.
Example ? a quadratic equation is of the form ax^2 + bx + c, where a,b, and c are constants and x is variable. A quadratic equation has two roots.
Algorithm steps
Take a quadratic equation as input.
Implement the programming logic to compute the roots.
Display the roots.
Algorithm Logic
Take input or initialize values for a,b, and c. As the quadratic expression can be constructed with these values (ax^2 + bx + c).
Compute Discriminant D which is equal to b^2 - 4*a*c.
-
If Discriminant D is greater than or equal to zero then the roots are
root1 = (-b + sqrt(D))/2*a
root2 = (-b - sqrt(D))/2*a
We will print the roots.
If Discriminant D is less than zero then the roots are imaginary and we print the root are imaginary
Note? If the Discriminant D is zero the roots are -b/2*a and -b/2*a.
Example
Program to find all roots of a quadratic equation
<div class="execute"></div><div class="code-mirror language-haskell" contenteditable="plaintext-only" spellcheck="false" style="outline: none; overflow-wrap: break-word; overflow-y: auto; white-space: pre-wrap;"><span class="token comment">-- function declaration for function printRoots</span>
<span class="token hvariable">printRoots</span> <span class="token operator">::</span> <span class="token constant">Float</span><span class="token operator">-></span><span class="token constant">Float</span><span class="token operator">-></span><span class="token constant">Float</span><span class="token operator">-></span><span class="token constant">IO</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token comment">-- function definition for function printRoots</span>
<span class="token hvariable">printRoots</span> <span class="token hvariable">a</span> <span class="token hvariable">b</span> <span class="token hvariable">c</span> <span class="token operator">=</span> <span class="token keyword">do</span>
<span class="token builtin">print</span><span class="token punctuation">(</span><span class="token string">"a,b,c values ="</span><span class="token punctuation">,</span><span class="token hvariable">a</span><span class="token punctuation">,</span><span class="token hvariable">b</span><span class="token punctuation">,</span><span class="token hvariable">c</span><span class="token punctuation">)</span>
<span class="token keyword">let</span> <span class="token hvariable">d</span> <span class="token operator">=</span> <span class="token hvariable">b</span><span class="token operator">^</span><span class="token number">2</span> <span class="token operator">-</span> <span class="token number">4</span><span class="token operator">*</span><span class="token hvariable">a</span><span class="token operator">*</span><span class="token hvariable">c</span>
<span class="token comment">-- let d = 1</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token hvariable">d</span> <span class="token operator"><</span> <span class="token number">0</span><span class="token punctuation">)</span>
<span class="token keyword">then</span> <span class="token keyword">do</span>
<span class="token builtin">print</span> <span class="token punctuation">(</span><span class="token string">"This quadratic equation has imaginary roots"</span><span class="token punctuation">)</span>
<span class="token keyword">else</span> <span class="token keyword">do</span>
<span class="token keyword">let</span> <span class="token hvariable">root1</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token operator">-</span><span class="token punctuation">(</span><span class="token hvariable">b</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token builtin">sqrt</span> <span class="token punctuation">(</span><span class="token hvariable">d</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token number">2</span> <span class="token operator">*</span> <span class="token punctuation">(</span><span class="token hvariable">a</span><span class="token punctuation">)</span>
<span class="token keyword">let</span> <span class="token hvariable">root2</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token operator">-</span><span class="token punctuation">(</span><span class="token hvariable">b</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token builtin">sqrt</span> <span class="token punctuation">(</span><span class="token hvariable">d</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token number">2</span> <span class="token operator">*</span> <span class="token punctuation">(</span><span class="token hvariable">a</span><span class="token punctuation">)</span>
<span class="token builtin">print</span> <span class="token punctuation">(</span><span class="token string">"The roots for this quadratic are:"</span><span class="token punctuation">)</span>
<span class="token builtin">print</span> <span class="token punctuation">(</span><span class="token hvariable">root1</span><span class="token punctuation">)</span>
<span class="token builtin">print</span> <span class="token punctuation">(</span><span class="token hvariable">root2</span><span class="token punctuation">)</span>
<span class="token hvariable">main</span> <span class="token operator">::</span> <span class="token constant">IO</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token hvariable">main</span> <span class="token operator">=</span> <span class="token keyword">do</span>
<span class="token comment">-- declaring and initializing constants in quadratic equation</span>
<span class="token keyword">let</span> <span class="token hvariable">a</span> <span class="token operator">=</span> <span class="token number">1</span>
<span class="token keyword">let</span> <span class="token hvariable">b</span> <span class="token operator">=</span> <span class="token number">4</span>
<span class="token keyword">let</span> <span class="token hvariable">c</span> <span class="token operator">=</span> <span class="token number">2</span>
<span class="token comment">-- invoking the printRoots function</span>
<span class="token hvariable">printRoots</span> <span class="token punctuation">(</span><span class="token hvariable">a</span><span class="token punctuation">)</span> <span class="token punctuation">(</span><span class="token hvariable">b</span><span class="token punctuation">)</span> <span class="token punctuation">(</span><span class="token hvariable">c</span><span class="token punctuation">)</span>
</div><div class="output-wrapper"><div class="console-close"></div><div class="code-output"></div></div>
Output
("a,b,c values =",1.0,4.0,2.0)
"The roots for this quadratic are:"
-0.58578646
-3.4142137
In the above program, we declared a function printRoots as such it takes three floats as argument and returns an IO action. In its function definition, we are taking three arguments a, b, and c. We are computing the discriminant by the formula b^2 - 4*a*c and loading the discriminant into a variable d. We are checking if the discriminant is less than zero, we are printing the statement "roots are imaginary" as we know that if the discriminant is less than zero for a quadratic equation the roots are imaginary. If the discriminant is greater than zero, we are computing the roots using the formula (-b +/- sqrt(d))/2*a. We are loading the roots into variables root1 and root2. And finally, we printed the roots in the function. In the main function, we declared and initialized variables a, b and c. Finally, we invoked the function printRoots with the three numbers as the arguments.
Conclusion
In this tutorial, we discussed implementing a program to find the roots of a quadratic equation in Haskell programming Language.
