Как рассчитать вывод многомерного уравнения - PullRequest
1 голос
/ 20 июня 2019

У меня есть функция,

f(x,y)=4x^2*y+3x+y 

отображается как

four_x_squared_y_plus_three_x_plus_y = [(4, 2, 1), (3, 1, 0), (1, 0, 1)]

, где первый элемент в кортеже - это коэффициент, второй элемент - это показатель степени x, а третий элемент - это показатель степени y. Я пытаюсь рассчитать выход при определенном значении х и у

Я попытался разбить список терминов на то, что они представляют, и затем вводить значения x и y при вводе их, однако я получаю неподдерживаемый тип операнда относительно ** кортежей - хотя я пытался разбить их в отдельные значения в сроки

Это эффективный метод разбиения кортежей, как этот, если я пропустил трюк?

def multivariable_output_at(list_of_terms, x_value, y_value):
    coefficient, exponent, intersect = list_of_terms
    calculation =int(coefficient*x_value^exponent*y_value)+int(coefficient*x_value)+int(y_value)
    return calculation


multivariable_output_at(four_x_squared_y_plus_three_x_plus_y, 1, 1) # 8 should be the output

Ответы [ 2 ]

1 голос
/ 20 июня 2019

пожалуйста, попробуйте это:

four_x_squared_y_plus_three_x_plus_y = [(4, 2, 1), (3, 1, 0), (1, 0, 1)]


def multivariable_output_at(list_of_terms, x_value, y_value):
    return sum(coeff*(x_value**x_exp)*(y_value**y_exp) for coeff,x_exp,y_exp in list_of_terms)


print(multivariable_output_at(four_x_squared_y_plus_three_x_plus_y, 1, 1))

ПРИМЕЧАНИЕ:

это отличается от того, как ваш код первоначально рассматривал переменные, и основано на моем понимании значения термина в данном примере.

Если у вас есть больше примеров ввода -> вывода, вы должны проверить мой ответ со всеми из них, чтобы убедиться, что я сделал правильно.

0 голосов
/ 20 июня 2019

Первая строка кода распаковывает список кортежей в три разных кортежа:

coefficient, exponent, intersect = list_of_terms
# coefficient = (4, 2, 1)
# exponent = (3, 1, 0)
# intersect = (1, 0, 1)

Оператор продукта * не поддерживается кортежами, видите ли вы проблему?

...