Как подогнать данные к неидеальному уравнению диода (неявная нелинейная функция) и получить параметры

Полностью неинтерактивная команда (1)

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

git config --global alias.amend-to '!f() { SHA=`git rev-parse "$1"`; git commit --fixup "$SHA" && GIT_SEQUENCE_EDITOR=true git rebase --interactive --autosquash "$SHA^"; }; f'

Самым большим преимуществом этой команды является то, что она не-vim.


(1), учитывая, что конфликтов во время rebase нет, конечно

Использование

git amend-to  # e.g.
git amend-to HEAD~1
git amend-to aaaa1111

Имя amend-to кажется соответствующим IMHO. Сравните поток с --amend:

git add . && git commit --amend --no-edit
# vs
git add . && git amend-to 

Объяснение

  • git config --global alias. '!' - создает глобальный псевдоним git с именем , который будет выполнять команду non-git
  • f() { }; f - «анонимная» функция bash.
  • SHA=`git rev-parse "$1"`; - преобразует аргумент в git-ревизию и присваивает результат переменной SHA
  • git commit --fixup "$SHA" - fixup-commit для SHA. См. git-commit docs
  • GIT_SEQUENCE_EDITOR=true git rebase --interactive --autosquash "$SHA^" git rebase --interactive "$SHA^" часть была покрыта другими ответами. --autosquash - это то, что используется в сочетании с git commit --fixup, см. git-rebase docs для получения дополнительной информации GIT_SEQUENCE_EDITOR=true, что делает все это неинтерактивным. Этот хак я узнал из этого сообщения в блоге .
0
задан eyllanesc 16 January 2019 в 07:00
поделиться

1 ответ

Было бы полезно опубликовать данные где-нибудь и указать характер полученной вами ошибки. То есть, дает ли Python исключение, соответствует ли сообщение об ошибке или выполняется сравнение до завершения, но это просто "не хорошо"?

Вы определенно хотите дать начальные значения для подгоночных параметров. Непонятно, что scipy.optimize.curve_fit() позволяет пользователям не указывать начальные значения - ошибочно не указывать начальные значения. Задачи нелинейного подбора кривой, как правило, , а не глобальные оптимизации, работают путем уточнения начальных значений и часто чувствительны к начальным значениям (особенно, когда имеет место экспоненциальный спад). FWIW, начальные значения, используемые, когда вы явно не указали начальные значения, равны «1» для всех параметров. Это хорошее значение по умолчанию? Нет, это не так.

Я также думаю, что у вас есть потенциально более серьезная проблема. Ваша модель для «у» трансцендентна: «у» зависит от «у». Я не распознаю формулу, которую вы используете, но я могу поверить, что кривые ВА для диодов трансцендентны. Если ваше значение для параметра d не равно < < 1, я думаю, что ваша модель будет нестабильной. Возможно, вы захотите убедиться, что d ограничено значением < < 1, и почти наверняка не хотят начинать с d = 1.

Вероятно, это не тот ответ, который вы искали, но я надеюсь, что он поможет вам выбрать правильный путь.

0
ответ дан M Newville 16 January 2019 в 07:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: