Я пытаюсь решить функцию ниже. Я пытался использовать символический решатель и fsolve. Оба доставляют мне неприятности. При первой публикации я заранее прошу прощения, если что-то упустил в своем вопросе.
У кого-нибудь есть предложения, как это решить? Я решаю для вас, все остальное является известной переменной.
cos(y) + ((xi - tdd) / y) * sin(y)) - exp(xi - tii)
Я попытался сделать это в python двумя способами, оба не работали. Первый:
import numpy as np
from scipy.optimize import fsolve
import sympy as sym
from sympy import *
def fi(y):
return ((cos(y) + ((xi - tdd) / y) * sin(y)) - exp(xi - tii))
y = fsolve(fi,0.01)
С этим кодом я получаю эту ошибку:
AttributeError: у объекта 'ImmutableDenseNDimArray' нет атрибута 'able_extract_minus_sign'
Я тоже пробовал это:
y = symbols('y')
init_printing(use_unicode=True)
yi = solve(cos(y) + ((xi - tdd) / y) * sin(y)) - exp(xi - tii))
И получил эту ошибку:
NotImplementedError: множественные генераторы [y, tan (y / 2)] Не реализованы алгоритмы для решения уравнения y * (10000000000000000 * (- tan (y / 2) ** 2 + 1) / (tan (y / 2) ) ** 2 + 1) - 9849605264665270) - 300789470669454 * tan (y / 2) / (tan (y / 2) ** 2 + 1)
Вот как я решил это в Matlab (i и j, потому что у меня есть значения x в матрице, которые нужно решить):
fi = @(y,x) (cos(y) + (((x-tdd)/y)*sin (y))) - exp((x - tii));
yi(i) = fzero(@(y) fi(y,xi(i,j)),.01);