NumPy экспонента из массивов MP C - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь определить экспоненту волнового уравнения, которая равна e^(ik(x-ct)). Для меня это ново, поэтому я пытаюсь понять массивы MP C с действительными и мнимыми числами, и что они значат. Я пытаюсь переписать код изначально в Matlab для Python.

ik*(x-ct) равно:

array([[[mpc(real='0.0', imag='0.0'), mpc(real='0.0', imag='0.0'),
         mpc(real='0.0', imag='0.0'), ..., mpc(real='0.0', imag='0.0'),
         mpc(real='0.0', imag='0.0'), mpc(real='0.0', imag='0.0')],
        [mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         ...,
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868')],
        [mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         ...,
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174')],
        ...,
        [mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         ...,
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883')],
        [mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         ...,
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838')],
        [mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         ...,
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793')]],

       [[mpc(real='0.0', imag='0.0'), mpc(real='0.0', imag='0.0'),
         mpc(real='0.0', imag='0.0'), ..., mpc(real='0.0', imag='0.0'),
         mpc(real='0.0', imag='0.0'), mpc(real='0.0', imag='0.0')],
        [mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         ...,
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868')],
        [mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         ...,
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174')],
        ...,
        [mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         ...,
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883')],
        [mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         ...,
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838')],
        [mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         ...,
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793')]],

       [[mpc(real='0.0', imag='0.0'), mpc(real='0.0', imag='0.0'),
         mpc(real='0.0', imag='0.0'), ..., mpc(real='0.0', imag='0.0'),
         mpc(real='0.0', imag='0.0'), mpc(real='0.0', imag='0.0')],
        [mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         ...,
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868')],
        [mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         ...,
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174')],
        ...,
        [mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         ...,
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883')],
        [mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         ...,
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838')],
        [mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         ...,
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793')]],

       ...,

       [[mpc(real='0.0', imag='0.0'), mpc(real='0.0', imag='0.0'),
         mpc(real='0.0', imag='0.0'), ..., mpc(real='0.0', imag='0.0'),
         mpc(real='0.0', imag='0.0'), mpc(real='0.0', imag='0.0')],
        [mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         ...,
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868')],
        [mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         ...,
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174')],
        ...,
        [mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         ...,
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883')],
        [mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         ...,
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838')],
        [mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         ...,
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793')]],

       [[mpc(real='0.0', imag='0.0'), mpc(real='0.0', imag='0.0'),
         mpc(real='0.0', imag='0.0'), ..., mpc(real='0.0', imag='0.0'),
         mpc(real='0.0', imag='0.0'), mpc(real='0.0', imag='0.0')],
        [mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         ...,
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868')],
        [mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         ...,
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174')],
        ...,
        [mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         ...,
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883')],
        [mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         ...,
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838')],
        [mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         ...,
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793')]],

       [[mpc(real='0.0', imag='0.0'), mpc(real='0.0', imag='0.0'),
         mpc(real='0.0', imag='0.0'), ..., mpc(real='0.0', imag='0.0'),
         mpc(real='0.0', imag='0.0'), mpc(real='0.0', imag='0.0')],
        [mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         ...,
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868'),
         mpc(real='3.8473413874435805e-18', imag='0.062831853071795868')],
        [mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         ...,
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174'),
         mpc(real='7.6946827748871609e-18', imag='0.12566370614359174')],
        ...,
        [mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         ...,
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883'),
         mpc(real='5.6940652534164989e-16', imag='9.2991142546257883')],
        [mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         ...,
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838'),
         mpc(real='5.7325386672909336e-16', imag='9.3619461076975838')],
        [mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         ...,
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793'),
         mpc(real='5.7710120811653693e-16', imag='9.4247779607693793')]]],
      dtype=object)

, но когда я пытаюсь взять экспоненту ik*(x-ct), появляется следующее сообщение об ошибке:

    AttributeError                            Traceback (most recent call last)
    AttributeError: 'mpc' object has no attribute 'exp'

    The above exception was the direct cause of the following exception:

    TypeError                                 Traceback (most recent call last)
    <ipython-input-29-d001448fd085> in <module>
    ----> 1 np.exp(i*k*(x - c*t))

    TypeError: loop of ufunc does not support argument 0 of type mpc which has no callable exp method

Я все еще не понимаю, на что смотрю, поэтому не знаю, с чего начать. Любые рекомендации?

...