I am trying to find the roots of an equation and I need to print the roots with 10 decimal points I used the following code but it produced an error. how can I tell python to print 10 decimal points?
def find_root(a1,b1,c1,d1,e1,f1,a2,b2,c2,d2,e2,f2):
coeff=[a1-a2,b1-b2,c1-c2,d1-d2,e1-e2,f1-f2]
print('%.10f' %np.roots(coeff))
Traceback (most recent call last):
File "C:\Users\Maedeh\AppData\Local\Temp\ipykernel_14412\3234902339.py", line 1, in <cell line: 1>
find_root(0.0024373075,-0.0587498671,0.4937598857,-1.7415327555,3.6624839316,20.8771496554,0.0021396943,-0.0504345999,0.4152634229,-1.4715228738,3.3049020821,20.8406692002)
File "C:\Users\Maedeh\AppData\Local\Temp\ipykernel_14412\3260022606.py", line 3, in find_root
print('%.10f' %np.roots(coeff))
TypeError: only size-1 arrays can be converted to Python scalars
CodePudding user response:
numpy.roots has no direct parameter to pass while calling function for setting up precision. It will take a array of values and returns array of elements at once. You can set precession on numpy after importing like so.
def find_root(a1,b1,c1,d1,e1,f1,a2,b2,c2,d2,e2,f2):
coeff=[a1-a2,b1-b2,c1-c2,d1-d2,e1-e2,f1-f2]
print(np.roots(coeff))
import numpy as np
np.set_printoptions(precision=10)
find_root(0.0024373075,-0.0587498671,0.4937598857,-1.7415327555,3.6624839316,20.8771496554,0.0021396943,-0.0504345999,0.4152634229,-1.4715228738,3.3049020821,20.8406692002)
which outputs #
[11.41569308 2.82260609j 11.41569308-2.82260609j 2.60173681 1.60008454j
2.60173681-1.60008454j -0.09501304 0.j]
CodePudding user response:
You probably want to use np.set_printoptions
. One of the parameters it takes is precision
.