Numeri c решить с помощью scipy - PullRequest
1 голос
/ 11 июля 2020

У меня есть некоторый опыт программирования с Python, но не с научными c приложениями. Я знаю, что scipy предоставляет функцию fsolve (func, initial_guess) для численного решения уравнений. Однако я не знаю, как реализовать это с помощью моего уравнения. Используя программное обеспечение TI CAS, это будет выглядеть так, тогда как, конечно, «0,196» - это изменяющееся значение: nSolve (1 / 3tan (100 / 73,85t) + 1 / 3t ^ (2) -1 / 10t = 0,196, t)

1 Ответ

0 голосов
/ 16 июля 2020

Из scipy документации это кажется довольно простым, просто измените уравнение в ожидаемый формат func(x) = 0 сначала.

\ frac {1} {3} \ cdot \ tan (\ frac {100} {73.85} \ cdot t) + \ frac {1} {3} \ cdot t ^ {2} - \ frac {1} {10} \ cdot t = 0,196

\ frac {1} {3} \ cdot \ tan (\ frac {100} {73.85} \ cdot t) + \ frac {1} {3} \ cdot t ^ {2} - \ frac {1} {10} \ cdot t - 0,196 = 0

1/3.0*np.tan(100/73.85*t)+1/3.0*pow(t,2)-1/10.0*t - 0.196
from scipy.optimize import fsolve
import numpy as np

def func(t,k):
    return 1/3.0*np.tan(100/73.85*t)+1/3.0*pow(t,2)-1/10.0*t - k

k = 0.196
root = fsolve(func, 1, args=(k))
print(root)

# [0.37653542]
...