Альтернативы ограниченным функциям поиска корняPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Альтернативы ограниченным функциям поиска корня

Сообщение Anonymous »


Мой вопрос связан с проблемой поиска ограниченного корня, когда функция ведет себя странно, когда она близка к нулю.
Настройка
Я пытаюсь найти корень следующего уравнения


Изображение


где


Изображение
< /п> Каппа, ци, тета и альфа — все это параметры, которые я установил. тот переменная k представляет собой сетку 30 на 30.

Я пытаюсь найти корень для оценки h во всех k точках сетки. Корень должен возвращать значение h, находящееся между границами 0 и 1. функция возрастает, но в областях, когда h близок к нулю (обычно меньше 0,1) он дважды пересечет ось X. Это происходит у некоторых точках сетки, в которых я оцениваю, а в других этого не происходит. В теория, этого не должно произойти. Поэтому, когда я оцениваю в точках сетки, используя методы деления пополам, такие как bisect и brentq, в большинстве точек сетки работают но для некоторых я получу ошибку «f(a) и f(b) положительная».

Поэтому я вместо этого пытаюсь превратить проблему поиска корня в минимизацию проблема, когда я возвожу функцию в квадрат и использую функцию Brent. Но я все еще сталкиваюсь с такими же проблемами, как и раньше. Однако на этот раз это остановится из-за слишком большого количества итераций, и многие решения не в указанных пределах.

для i в диапазоне (nk): для j в диапазоне (nk): защита foch(n): return (каппа*n**chi - (kgrid**(альфа)*n**(1-альфа) + (1-дельта)*kgrid - кгрид[j])**(-тета)*(1-альфа)*(кгрид)**(альфа)*n**(-альфа))**2 res[i,j] =opt.brent(foch, brack=(10e-3, 1)) Вопрос Как найти корень этого уравнения, которое теоретически уникально? Является есть альтернативный метод, который я мог бы использовать вместо стандартного проблемы с поиском корня или минимизацией?
Код импортировать numpy как np импортировать scipy.optimize как опцию ##### параметры ##### бета, альфа, дельта, тета, хи = 0,988, 0,321, 0,013, 1, 0,5 #количество точек сетки. нк = 30 #настраиваем сетку kstar = (1/3)*(альфа/(1/бета - (1-дельта)))**(1/(1 - альфа)) кммин=0,25*кзвезд кммакс=1,75*кзвезд кгрид = np.linspace(кмин, кмах, нк) #установить рабочее время SS nstar=.2925 cstar = kstar**alpha*nstar**(1-alpha) - дельта*kstar #эндогенно определяем каппа каппа=(1/nstar**chi)*cstar**(-тета)*(1-альфа)*(kstar/nstar)**альфа #### решать #### res=np.empty((nk, nk)) для меня в диапазоне (nk): для j в диапазоне (nk): защита foch(n): return (каппа*n**chi - (kgrid**(альфа)*n**(1-альфа) + (1-дельта)*kgrid - кгрид[j])**(-тета)*(1-альфа)*(кгрид)**(альфа)*n**(-альфа))**2 res[i,j] =opt.brent(foch, brack=(10e-3, 1))
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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