# Exercise 2
Write a function to compute the roots of a mathematical equation of the form
\begin{align}
  ax^{2} + bx + c = 0.
\end{align}
Your function should be sensitive enough to adapt to situations in which a user might accidentally set $a=0$, or $b=0$, or even $a=b=0$.  For example, if $a=0, b\neq 0$, your function should print a warning and compute the roots of the resulting linear function.  It is up to you on how to handle the function header: feel free to use default keyword arguments, variable positional arguments, variable keyword arguments, or something else as you see fit.  Try to make it user friendly.

Your function should return a tuple containing the roots of the provided equation.

**Hint:** Quadratic equations can have complex roots of the form $r = a + ib$ where $i=\sqrt{-1}$ (Python uses the notation $j=\sqrt{-1}$).  To deal with complex roots, you should import the `cmath` library and use `cmath.sqrt` when computing square roots.  `cmath` will return a complex number for you.  You could handle complex roots yourself if you want, but you might as well use available libraries to save some work.


```python
import cmath
def find_root(a,b,c):
    if (a==0 and b==0 and c==0):
        print("warning!\n x has infinite numbers")
        return()
    elif (a==0 and b==0 and c!=0):
        print("error!\n no x")
        return()
    elif (a==0 and b!=0):
        print("warning!\n x=",-c/b)
        return(-c/b)
    else: 
        x1=(-b+cmath.sqrt(b*b-4*a*c))/(2*a)
        x2=(-b-cmath.sqrt(b*b-4*a*c))/(2*a)
        print("x1=",x1)
        print("x2=",x2)
        return(x1,x2)
   
find_root(0,0,0)
```

    warning!
     x has infinite numbers





    ()




```python

```

3ab5036975894c0b6baef7bab0dee28ea8669d18
ipynb
Jupyter Notebook
lectures/L5/Exercise_2.ipynb
crystalzhaizhai/cs207_yi_zhai
faabdc5dd1171af04eed6639225adddc26402bf1
MIT
lectures/L5/Exercise_2.ipynb
crystalzhaizhai/cs207_yi_zhai
faabdc5dd1171af04eed6639225adddc26402bf1
MIT
lectures/L5/Exercise_2.ipynb
crystalzhaizhai/cs207_yi_zhai
faabdc5dd1171af04eed6639225adddc26402bf1
MIT
Qwen/Qwen-72B
1. YES
2. YES