Студент застрял на конкретном вопросе решателя уравнений

#python #equation-solving

#python #решение уравнений

Вопрос:

Я должен выяснить время, необходимое для того, чтобы один из моих входных данных утроился, используя уравнение со сложными процентами. Пользователи должны ввести ожидаемую годовую доходность и начальную цену акций, и предполагается, что код выдает количество лет (округленное до целого числа), необходимое для того, чтобы начальная цена акций утроилась. Однако с написанным мной кодом это просто ничего мне не дает, и я понятия не имею, что делать.

Мой код:

 from sympy.solvers import solve
from sympy import Symbol


x = Symbol('x')
Stock_Ticker = input("Enter the stock ticker: ")
EAR = float(input("Enter Expected Annual Return: "))
ISP = float(input("Enter initial stock price: "))

expr = ISP * (1 EAR)**x

solve(ISP *(1 EAR)**x,x)

sol = solve(ISP *(1 EAR)**x,x)

print ("The price of", Stock_Ticker, "tripled after", sol, "years")
  

Мой вывод:

 The price of (Stock_Ticker) tripled after [] years
  

Ответ №1:

Проблема

  • Выражение sol = solve(ISP *(1 EAR)**x,x) никогда не стремится к нулю.
  • Вы хотите sol = solve(ISP *(1 EAR)**x,x) - 3*ISP , чтобы значение равнялось нулю, когда значение становится 3 * ISP

Код

 from sympy.solvers import solve
from sympy import Symbol

x = Symbol('x')
Stock_Ticker = input("Enter the stock ticker: ")
EAR = float(input("Enter Expected Annual Return: "))
ISP = float(input("Enter initial stock price: "))

expr = ISP * (1 EAR)**x - 3*ISP   # subtract 3*initial price since we want to find when expression becomes zero

sol = solve(expr, x)              # Find root (zero) of expression expr

print ("The price of", Stock_Ticker, "tripled after", sol, "years")
  

Тестовый запуск

 Enter the stock ticker: xxxx
Enter Expected Annual Return: .1
Enter initial stock price: 1
The price of xxxx tripled after [11.5267046072476] years