Решение неявного уравнения с помощью scipy.optimize.fsolvePython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Решение неявного уравнения с помощью scipy.optimize.fsolve

Сообщение Гость »


Я пришел задать этот вопрос из очень похожего вопроса, где я «научился», как использовать fsolve для решения неявных уравнений.
Мое уравнение определяется этой функцией:

def fn4(Fs): return ( np.sum( (lamL * c + lamW * np.tan(np.radians(phi))) / (np.cos(lamA) * (1 + np.tan(lamA) * np.tan(np.radians(phi)) / Fs)) ) / np.sum(lamW * np.sin(lamA)) ) где:

c = 10 фи = 30 lamela1 = {'W':887.36, 'альфа':np.radians(46.71), 'L':19.325} lamela2 = {'W':1624.8, 'альфа':np.radians(22.054), 'L':14.297} lamela3 = {'W':737.43, 'альфа':np.radians(1.9096), 'L':13.258} ламель = [ламела1, ламель2, ламель3] lamW = np.array([[i['W'] for i в ламеле]]) lamA = np.array([[i['alpha'] for i в ламеле]]) lamL = np.array([[i['L'] for i в ламеле]]) Я решил эту проблему, создав простую рекурсию:

def iterf(f, Fsi): если np.isclose(Fsi, fn4(Fsi)) == True: вернуть ФСИ еще: вернуть iterf(f, fn4(Fsi)) что дает

iterf(fn4, 1) 1,8430 Но когда я пытаюсь использовать scipy.optimize.fsolve (как fsolve(fn4, 1)), я получаю:

RuntimeWarning: деление на ноль встречается в true_divide / (np.cos(lamA) * (1 + np.tan(lamA) * np.tan(np.radians(phi)) / Fs)) Я не знаю, как именно работает fsolve (что мне хотелось бы узнать), но я предполагаю, что для оптимизации необходимо в какой-то момент ввести Fs как 0, что производит деление нуля. Как я могу использовать такую ​​функцию, чтобы получить результат?

РЕДАКТИРОВАТЬ:
Теоретической основой является устойчивость грунтовых склонов. Полученный в результате Fs является коэффициентом безопасности – мерой, значения которой составляют >1 для устойчивых склонов и
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»