@bobs32

Как разделить большое выражение на части?

Имеется страшное выражение:
5c09b9d08c01c029841100.png
Задумка, что он 'a' подставит в 'b', 'b' в 'се' и посчитает y.
я его разделил на много маленьких и хочу чтоб он поставил вместо 'с' числа от 1 до 10 и написал результат
при запуске выдается ошибка
e0=(exp(-c*t[0])-1) NameError: name 'c' is not defined

Вот код:
from sympy import *
from sympy import summation
import numpy as np
eps = np.array(
     [0.066, 0.2, 0.6, 1.1],
 )
t=np.array(
     [0.066, 0.2, 0.6, 1.1],
 )

с=0
for с in range(10):

    e0=(exp(-c*t[0])-1)
    e1=(exp(-c*t[1])-1)
    e2=(exp(-c*t[2])-1)
    bt0=(b*t[0]-eps[0])
    bt0=(b*t[1]-eps[1])
    bt0=(b*t[2]-eps[2])

    a=(2*e0*bt0+2*e1*bt1+2*e2*bt2)/(2*e0**2+2*e1**2+2*e2**2)

    a0=2*(a*e0+eps[0])*t[0]
    a1=2*(a*e1+eps[1])*t[1]
    a2=2*(a*e2+eps[2])*t[2]

    b=(a0+a1+a2)/(2*t[0]**2+2*t[1]**2+2*t[2]**2)


    b0=b*exp(t[0])*t[0]**2
    b1=b*exp(t[1])*t[1]**2
    b2=b*exp(t[2])*t[2]**2

    epst0=-exp(t[0])*t[0]*eps[0]
    epst1=-exp(t[1])*t[1]*eps[1]
    epst2=-exp(t[2])*t[2]*eps[2]

    at0=a*exp(t[0])*t[0]
    at1=a*exp(t[1])*t[1]
    at2=a*exp(t[2])*t[2]


    ce=(b0+b1+b2+epst0+epst1+epst2+at0+at1+at2)/(a*exp(2*t[0])*t[0]+a*exp(2*t[1])*t[1]+a*exp(2*t[2])*t[2])

    y=exp(c)-ce
    print(y)

В чем может быть ошибка?
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы