Новое в науке c python. Я получаю ошибку AttributeError: ImmutableDensNDimArray, и я не понимаю, почему - PullRequest
0 голосов
/ 31 марта 2020

Я недавно поступил в аспирантуру, и мой ПИ работает с python и хотел, чтобы я научился использовать его с помощью серии упражнений. Мне дали уравнение и сказали заставить его работать. Но я получаю ошибку, и я просто не понимаю, почему. Вот часть кода, которая вызывает проблему (я включил значения каждой функции суммирования и последовательность цифр c в качестве комментариев, поскольку я не включил код для функций):

import scipy.optimize as sciop
import sympy as sp
import math as mt


#Calculates coefficients and builds the function     
def Function(x, raw_input, N):
    sequence_numeric = sequence_numeric_value_parser(raw_input) #[0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, -1, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, -1, -1, 0, 0, -1, -1, 0, 1, 0]
    Q_summation = Q_Summation(sequence_numeric) ##-0.0011654102397665102
    O_summation = O_Summation(N) ##-3.7169446884230575
    B_summation = B_Summation(N) ##16.674533284328376
    FiTC = 3/2 ##1st term constant
    STC = ((3/(2*mt.pi))**(3/2))*O_summation ##2nd term constant
    TTC = 0.1*((3/mt.pi)**3)*(1/16)*B_summation ##3rd term constant
    FoTC = (7.2/3.8)*mt.sqrt(6/mt.pi)*Q_summation ##4th term constant
    funct = FiTC*(x-sp.log(x)) + STC*x**(-3/2) + TTC*x**(-3) + FoTC*x**(-1/2)
    print ("x = {} , funct = {}".format(x,funct))
    return funct


#Minimizes function
def Minimizer():
    x = 1.0
    result = sciop.minimize(Function, x, args=(raw_input, N))
    print("Minima at: ")
    print("x = {}, funct = {}".format(result.x, result.funct))

Minimizer()

Я получаю ошибку:

Traceback (most recent call last):

  File "C:\Users\Richard Miller\Desktop\A2v0.2.py", line 184, in <module>
    Minimizer()

  File "C:\Users\Richard Miller\Desktop\A2v0.2.py", line 178, in Minimizer
    result = sciop.minimize(Function, x, args=(raw_input, N))

  File "C:\Anaconda3\lib\site-packages\scipy\optimize\_minimize.py", line 604, in minimize
    return _minimize_bfgs(fun, x0, args, jac, callback, **options)

  File "C:\Anaconda3\lib\site-packages\scipy\optimize\optimize.py", line 1003, in _minimize_bfgs
    old_fval = f(x0)

  File "C:\Anaconda3\lib\site-packages\scipy\optimize\optimize.py", line 327, in function_wrapper
    return function(*(wrapper_args + args))

  File "C:\Users\Richard Miller\Desktop\A2v0.2.py", line 167, in Function
    funct = FiTC*(x-sp.log(x)) + STC*x**(-3/2) + TTC*x**(-3) + FoTC*x**(-1/2)

  File "C:\Anaconda3\lib\site-packages\sympy\core\function.py", line 473, in __new__
    result = super(Function, cls).__new__(cls, *args, **options)

  File "C:\Anaconda3\lib\site-packages\sympy\core\function.py", line 288, in __new__
    evaluated = cls.eval(*args)

  File "C:\Anaconda3\lib\site-packages\sympy\functions\elementary\exponential.py", line 659, in eval
    coeff = arg.as_coefficient(I)

AttributeError: 'ImmutableDenseNDimArray' object has no attribute 'as_coefficient'

Я загрузил полный файл, в который я написал: https://github.com/rmiller415/A2

...