Производная с использованием Numpy или другой библиотеки для функции лямбда-синуса

Итак, у меня есть эта проблема оптимизации Ньютона, где я должен найти значение f'(x) и f''(x), где x = 2,5 и f = 2 * sin(x) - ((x)**2/10) для вычисления, но я пытался использовать sympy и np.diff для первой и второй производной, но не знаю, потому что он продолжает получать ошибку, поэтому я возвращаюсь к ручному производному. Любая подсказка, как получить функцию f с помощью другой библиотеки, Вот код

def Newton(x0):
  x = x0
  f = lambda x : 2 * np.sin (x) - ((x)**2/10)
  f_x0 = f(x0)
  #First Derivative
  f1 = lambda x : 2 * np.cos (x) - ((x)/5)
  f_x1 = f1(x0)
  #Second Derivative
  f2 = lambda x : -2 * np.sin (x) - (1/5)
  f_x2 = f2(x0)


  x1 = x0 - (f_x1/f_x2)
  x0 = x1

  return x,f_x0,f_x1,f_x2,x0

нахождение первой и второй производной без ручного способа.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
144
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В вашем случае производные можно рассчитать с помощью библиотеки scipy следующим образом:

from scipy.misc import derivative

def f(x):
    return 2 * sin(x) - ((x)**2/10)

print("First derivative:" , derivative(f, 2.5, dx=1e-9))
print("Second derivative", derivative(f, 2.5, n=2, dx=0.02))

Здесь вычисляются первая и вторая производные для вашей функции при x=2,5.

То же самое можно сделать с библиотекой sympy, и некоторым это может показаться проще, чем описанный выше метод.

from sympy import *

x = Symbol('x')
y = 2 * sin(x) - ((x)**2/10) #function
yprime = y.diff(x) #first derivative function
ydoubleprime = y.diff(x,2) #second derivative function

f_first_derivative = lambdify(x, yprime)
f_second_derivative = lambdify(x, ydoubleprime)

print("First derivative:" , f_first_derivative(2.5))
print("Second derivative",f_second_derivative(2.5))

Обратите внимание, что существует не только 2 способа сделать одно и то же. Первый – числовая оценка производных. В то время как второй является символическим точным вычислением. Второй не будет работать ни для каких функций (иногда даже люди не знают, как вычислить производную, кроме как численно). Первый всегда работает (пока мы можем вычислить y для любого значения x), но всегда имеет ошибку.

chrslg 25.11.2022 12:02

Другие вопросы по теме