Как рассчитать х ^ 2 в симпы гамма - PullRequest
0 голосов
/ 19 октября 2019

Я очень новичок в программировании на Python и использовании django.

Мой вопрос: возможно ли вычислить x ^ 2 в sympy gamma? В моей программе x ** 2 работает, но x ^ 2не работает.

^ не работает.

мой код -

from django.shortcuts import render, redirect
from django.http import HttpResponse
from sympy import *
from sympy.parsing.sympy_parser import *
import sympy as sp

# Create your views here.

def index(request):

    if request.method == "POST":

        x = symbols('x')
        init_printing()
        transformations = (standard_transformations + (implicit_multiplication_application,))
        eq = parse_expr(request.POST['equ'], transformations=transformations)       
        sympifyy = latex(sympify(eq, evaluate=False))
        sympifyy1 = Eq(eq)
        derivative = latex(sp._eval_derivative(eq,x))
        integration = latex(sp.integrate(eq, x))
        # integration = integrate(eq, x)
        # pretty(latex(Integral(eq, x)),use_unicode=False)
        # print(pretty(Integral(sqrt(1/x), x), use_unicode=False))
        rootss = solve(eq)
        limits = limit(eq, x, 0)        
        seriess = latex(series(eq, x, 0, 10))

        data = {
            'Sympify' : sympifyy,
            'Sympify1' : sympifyy1,
            'Derivative' : derivative,
            'Integration' : integration,
            'Roots' : rootss, 
            'Limit' : limits,
            'Series' : seriess
            }

        return render(request, 'index.html', {'data':data})

    return render(request, 'index.html')

Например, когда пользователь дает ввод, работает ** (x 2 + x + 2) **, но пользователь дает ввод (x ^ 2 + x + 2) , тогда возникает ошибка

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

Как описано в интерактивной документации SymPy SymPy соответствует стандарту Python, где ^ используется для эксклюзив или (Xor).

Итак, ваше заявлениечто ^ не работает, неточно. Это только делает что-то еще, как вы предполагали. Xor - довольно неприятная функция, так как она определена только для логических значений, а не для неограниченных целых чисел и нецелых типов чисел.

Поэтому при вызове parse_expr вы можете добавить convert_xor в список преобразований, как в

transformations = standard_transformations + (implicit_multiplication_application,) + (convert_xor,)

Эта функция явно преобразует ^ в **.

0 голосов
/ 19 октября 2019

Ответ кажется довольно простым. Просто .replace("^", "**") ваше входящее уравнение.

eqn = request.POST['equ'].replace("^", "**")
eq = parse_expr(eqn, transformations=transformations)

Кроме того, я думаю, что в вашем коде есть ошибка, если она будет:

derivative = latex(sp.diff(eq,x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...