Я занят просто выполнением кода по методу деления пополам. Конечно, просто написать сценарий и запустить его. Однако трюк возникает, когда я хочу определить функцию, которая примет выражение, такое как x ** 2, как вход. Однако я сломал что-то вместе. Это похоже на работу, но затем в моем первом заявлении, в котором она жалуется, что она не может умножить функцию на функцию. Как я могу решить эту проблему? Я действительно пробовал делать домашнее задание по этой проблеме, прежде чем спрашивать и, к сожалению, не могу найти решение. Я просто хотел бы знать, как это сделать.Создайте функцию, которая принимает выражение как входной сигнал в python
from sympy.abc import x
def bisect(f, a, b):
f = lambda x: f
f_a, f_b = f(a), f(b)
tol = 1e-4
count = 0
print '\t'.join(['Step' , 'a', 'b', 'c', 'f(c) ' , '(b-a)/2)'])
while (b-a)/float(2) > tol:
c = (a+b)/2
f_c = f(c)
print '\t'.join([str(count) , str(a) , str(b) , str(c), str((b-a)/float(2))])
if f_a*f_c < 0:
b = c
f_b = f_c
else:
a = c
f_a = f_c
count = count + 1
Можете ли вы разобраться ваш отступы пожалуйста. Лучший способ, я думаю, решить то, что вы просите просто передать в f как лямбда - вы не можете передать выражение в качестве аргумента. –