Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Перспективы для программиста в Германии

3031   2 3 4 5 6 7 8 9 10 11 12 все
  ilghiz постоялец28.09.17 20:55
NEW 28.09.17 20:55 
в ответ Bigfoot 28.09.17 20:40

Вы много минимизировали L-M? А с BFGSом хоть теоритический опыт был? Сравнивали? Если да, то расскажате, всем будет любопытно, у меня достаточно большой опыт минимизации всяких функций до несколькимх сотен миллиардов вариируемых параметров, и часто приходится сравнивать и мой опыт как раз не в пользу L-M.


Гистерезис в Максвелле очень регулярно пользую, примерно как на картинке. Как раз недавно для своего ЯМРа надо было именно хорошее описание. Сплайн по трем отрезкам (я имею ввиду f_2(x) на трех отрезках) идеально подходит, а после этого все идеально описывается и человек на C# это все запрограммирует за час-два, и, главное, безгеморно отладит.

AlexNek патриот28.09.17 21:02
AlexNek
NEW 28.09.17 21:02 
в ответ Bigfoot 28.09.17 20:22
Проще вызывать R из своей программы в пакетном режиме для обработки или генерации данных.

Да только за подобную идею меня подвесят на толстой веревочке. Никто не будет еще и R устанавливать. А лёгкий или простой зависит от многих причин. Помню как то на Руби надо было что то писать. Ну да освоили бысто, но бывало потом приходили такие исходники, что приходилось часами разбираться с одной строчкой.


не понимаю, что такое "похожая кривая"

Вот на картинке есть кривая - на мониторе должная быть подобная по форме.


и "чтобы живой была".

В реале кривая формируется из аппаратуры и ее форма постоянно меняется.


Что нужно для тестов?

Что бы картинка на экране без аппаратуры была похожа на ту что получается с аппаратурой. Ничего больше.

Bigfoot коренной житель28.09.17 21:03
Bigfoot
NEW 28.09.17 21:03 
в ответ ilghiz 28.09.17 20:55

Л-М минимизировал много. С разной степенью успешности. Конкретно гистерезисные кривые апрроксимировал без каких-либо особых проблем. Сотен миллиардов параметров там нет и в помине, не надо усложнять без нужды. Л-М далеко не всегда хорош - это бесспорно, но в данном конкретном случае я не вижу НИКАКОГО смысла искать нечто иное. Для тестов не требуется программировать саму операцию. Требуется лишь определить параметры модели и интервал их варьирования. После чего банально генерить датасеты, налагая шум при необходимости. Предлагаю автору вопроса опубликовать тестовый набор данных и вид модели. А там решим, чей рахат-лукум слаще.

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
Bigfoot коренной житель28.09.17 21:10
Bigfoot
NEW 28.09.17 21:10 
в ответ AlexNek 28.09.17 21:02
Никто не будет еще и R устанавливать

А почему? Она - софтина - кагбэ фришная (хотя есть тонкости при использовании на фирме). Да и сильно много места не занимает. Ради теста зачем что-то большее???

Вот на картинке есть кривая - на мониторе должная быть подобная по форме

Модель (аналитический вид "формулы") известны?

В реале кривая формируется из аппаратуры и ее форма постоянно меняется.

Повторяю вопрос: есть описание формы кривой?

Что бы картинка на экране без аппаратуры была похожа на ту что получается с аппаратурой.

Сделайте скриншот картинки которая "с аппаратурой" и растягивайте/сжимайте ее по осям любым способом. Получите похожую кривую. Мамой клянусь!


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

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
AlexNek патриот28.09.17 21:12
AlexNek
NEW 28.09.17 21:12 
в ответ ilghiz 28.09.17 20:27
Далее, вам надобно потребовать

не надо. Не нужны мне какие то решения. Достаточно того что параметр 1 отвечает за "ширину" гистерезиса "внутри". Параметр 2 за "ширину снаружи". Параметр 3 за "высоту" и т.п.

Да и скорость тоже важна.

  JosefSchwejk знакомое лицо28.09.17 21:13
NEW 28.09.17 21:13 
в ответ Bigfoot 28.09.17 21:10

Не факт, что у них можно ставить даже фришный софт. Если паранойя в части политик безопасности, то установка такого софта чревата гневом богов ключей и протоколов.

Bigfoot коренной житель28.09.17 21:19
Bigfoot
NEW 28.09.17 21:19 
в ответ JosefSchwejk 28.09.17 21:13

Ну, как говорится, "Буратино, ты сам себе враг!" спок

Предполагаю, что R-скрипт для нахождения параметров кривой по известной модели займет строк 10 кода. Возможно - меньше, например, три или четыре. При условии вынесения списка подгружаемых пакетов в отдельный файл (.RProfile). Одна строка - считывание данных из текстового файла, вторая строка - фитование по известной модели, третья - сохранение результатов. Возможно, понадобится промежуточное вычисление. Или сохранение графика в каком-нибудь графическом формате. Это уже может занять строк 5-6 в зависимости от желаний клиента. Как-то так.

Но, безусловно, можно доставать левой пяткой правое ухо и переводить в C#.

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
  ilghiz постоялец28.09.17 21:20
NEW 28.09.17 21:20 
в ответ AlexNek 28.09.17 21:12

тогда напишите что наподбирали, а там и видно будет как это хояйство фитить, может и аналитически можно зафитить.

  JosefSchwejk знакомое лицо28.09.17 21:25
NEW 28.09.17 21:25 
в ответ Bigfoot 28.09.17 21:19

Ну, в принципе, я за Python, но сути дела не меняет. Если известна модель.

Bigfoot коренной житель28.09.17 21:31
Bigfoot
NEW 28.09.17 21:31 
в ответ JosefSchwejk 28.09.17 21:25

Я, увы, не спец. Хотел изучить плотнее NumPy, но руки так и не дошли. Плюс, у меня работа в основном аналитическая - мне для кого-то программить приходится довольно редко. А вот вертеть данные и вытаскивать из них информацию о процессе - ежедневно.

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
  ilghiz постоялец28.09.17 21:58
NEW 28.09.17 21:58 
в ответ AlexNek 28.09.17 16:52

Если задать функцию, которая идет из А до Е в виде трех отрезков


f(x)=fa*x^3+fb*x^2+fc*x+fd (отрезок E-D)
g(x)=ga*x^3+gb*x^2+gc*x+gd (отрезок D-C)
h(x)=ha*x^3+hb*x^2+hc*x+hd (отрезок C-A)


то коэффициенты можно посчитать в виде


fd -> (5 D^4 (3 A - 3 C + 2 E) - 3 D^3 (15 A - 17 C + 10 E) M +
15 D^2 (-2 A + C + E) M^2 - 21 C D M^3 - 6 C M^4)/(
2 (5 D^4 - 12 D^3 M + 7 D M^3 - 3 M^4)),


ha -> (5 (-A + C) D^5 +
12 (A - C) D^4 M - 3 D^3 (9 A - 10 C + E) M^2 +
D^2 (-2 (8 A + C) + 3 E) M^3 + 3 (4 A - 7 C) D M^4 +
6 C M^5)/(2 D M^3 (5 D^4 - 12 D^3 M + 7 D M^3 -
3 M^4)),


hd -> C,


fc -> (3 (5 (A - C) D^5 +
D^4 (-15 A + 17 C - 2 E) M + 5 D^3 (-C + E) M^2 +
D^2 (10 A - 13 C - 2 E) M^3 + 4 C D M^4 +
2 C M^5))/(2 D M (5 D^4 - 12 D^3 M + 7 D M^3 - 3 M^4)),


hb -> ( 3 D^3 (9 A - 10 C + E) + 3 D^2 (3 (A + C) - E) M -
9 (A - 2 C) D M^2 - 6 C M^3)/(
D (5 D^4 - 12 D^3 M + 7 D M^3 - 3 M^4)),


hc -> ( 3 (A - C + (
M^2 (-D^3 (9 A - 10 C + E) + D^2 (-3 (A + C) + E) M +
3 (A - 2 C) D M^2 + 2 C M^3))/(
D (5 D^4 - 12 D^3 M + 7 D M^3 - 3 M^4))))/(2 M),


gc -> ( 3 (A - C + (
M^2 (-D^3 (9 A - 10 C + E) + D^2 (-3 (A + C) + E) M +
3 (A - 2 C) D M^2 + 2 C M^3))/(
D (5 D^4 - 12 D^3 M + 7 D M^3 - 3 M^4))))/(2 M),


gd -> C,


ga -> ( 15 (A - C) D^4 + 2 D^3 (9 A - 7 C + 3 E) M -
3 D^2 (3 A - 8 C + 3 E) M^2 + 3 D (-2 A + 2 C + E) M^3 - 7 C M^4)/(
2 D^2 M (5 D^4 - 12 D^3 M + 7 D M^3 - 3 M^4)),


gb -> ( 3 D^3 (9 A - 10 C + E) + 3 D^2 (3 (A + C) - E) M -
9 (A - 2 C) D M^2 - 6 C M^3)/(
D (5 D^4 - 12 D^3 M + 7 D M^3 - 3 M^4)),


fa -> ( D E (4 D - 3 M) M + 15 A D^2 (D + M) -
3 C (D + M) (5 D^2 - 2 D M - M^2))/(
2 D M (5 D^4 - 12 D^3 M + 7 D M^3 - 3 M^4)),


fb -> ( 3 D E (4 D - 3 M) M + 45 A D^2 (D + M) -
9 C (D + M) (5 D^2 - 2 D M - M^2))/(
2 D (5 D^4 - 12 D^3 M + 7 D M^3 - 3 M^4))


думаю, проблем заимплементировать на С# не возникнет.


ЗЫ: мог конечно описаться в задании модели, проверьте, мне лениво проверять :)

Bigfoot коренной житель28.09.17 22:16
Bigfoot
NEW 28.09.17 22:16 
в ответ ilghiz 28.09.17 21:58, Последний раз изменено 28.09.17 22:21 (Bigfoot)

"А теперь со всей этой фигней мы попытаемся взлететь!" (с) :)

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


PS. Чертов парсер, не хочет вставлять формулки с matheboard.de

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
  ilghiz постоялец28.09.17 22:29
NEW 28.09.17 22:29 
в ответ Bigfoot 28.09.17 22:16, Последний раз изменено 28.09.17 22:35 (ilghiz)

да тривиально, ибо тождественно проходит через A, C, D, E точки, а если не понравиться, я это всяко на mathematica посчитал, засуну еще пару параметров и будет еще пара аналитических функций. Взлетит, куда денется. Не спорю, что из R можно много чего по-простому вызваать, но гемор по прикручиванию оного, и последующей оттладки параметров минимизаторов по первости отпугнет любого. У меня знакомый лапак к шарпу прикручивал, чтобы bicgstab запрограммировать. Несколько дней мучался, а R думаю, будет веселее, ибо он за собой и лапак, и еще кучу всего потянет.


ЗЫ: для себя я бы решал двумя вызовами GSL что по длине и скорости отладки примерно равно тому, как с R. Но, как вы верно подметили, тут все дело во вкусе рахат-лукумов.

Bigfoot коренной житель28.09.17 22:46
Bigfoot
NEW 28.09.17 22:46 
в ответ ilghiz 28.09.17 22:29

Ну и какой же гемор???? Написать строчку вызова R в пакетном режиме - это, пардон, как два байта переслать. Про скрипт для фитования я уже высказался. А главное я так и не понял, на кой ляд вообще нужно что-либо еще, кроме R для _генерации тестовых данных_???!!!! Я, может, чего-то не улавливаю, но мне до сих пор кажется, что автору вопроса нужно на выходе получить две колонки данных. Колонка X-ов, колонка Y-ов. Написал в R функцию, чтобы генерить с заданными параметрами, задал параметры в массивах и сгенерил хоть стопиццотыщ файлов с данными. Тестируй - хоть обтестируйся. Можно генерить в Матлабе, Математике, Мейпле, Ориджине - в чем угодно, я лишь указал R в качестве легкодоступного и небольшого по объему софта для решения задачи. Коли не нравится R - бери тот же Octave.

Вообще, автор не определил, что он понимает под тестированием - из него клещами надо вытягивать внятное описание задачи.

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
  ilghiz постоялец28.09.17 22:56
NEW 28.09.17 22:56 
в ответ Bigfoot 28.09.17 22:46, Последний раз изменено 28.09.17 23:18 (ilghiz)

> Вообще, автор не определил, что он понимает под тестированием - из него клещами надо вытягивать внятное описание задачи.

не, он писал, что надо быстро считать и не хотел использовать сторонние софты. Если это причуда, я присоединяюсь к мнению, по использованию любой сторонней софтины, той, которую он сможет или ему разрешат поставить, а там уж все это есть. Иначе - пусть летает, на том, что ему mathematica нагенерила, это при старании даже в ардуину засунуть можно :)


> Ну и какой же гемор????

да тот еще. Вы поставьте себя на его место, он ни разу ни вызывал и не программировал ни одного минимизатора, даже монтекарловку! Он смотрит на это как ужасно пугливый человек... Если его функция кривая, то как бы он не старался, у него нет шансов без танцев с бубнами по параметрам минимизатора найти правильное решение, а он в силу того, что не в теме, не будет понимать, то ли он не то вызвал, то ли еще что не так.


Вот и нам с вами, Bigfoot не простительно его запугивать умными словами по нумерике минимизации, которые мы с вами знаем в силу работы с оными, а для него - просто страшные слова. Поэтому у него должно быть простое и понятное решение - вбил координаты точек, скомпилировал, подставил иксы, и получил результат.
Bigfoot коренной житель28.09.17 23:07
Bigfoot
NEW 28.09.17 23:07 
в ответ ilghiz 28.09.17 22:56

Быстро - это как? Внятная формулировка задачи могла бы выглядеть примерно так: "Требуется генерация m наборов данных, состоящих из n точек (x,y) каждый за время t с использованием параметров, пределы варьирования которых должны быть определены по некоей измеренной кривой согласно модели, задаваемой формулой ... при уровне нормально распределенного шума z.". Только теперь мне кажется, что автор не понял, что означают параметры модели. При параметрическом (пардон за тавтологию, но не знаю как иначе) задании функции x=x(phi), y=y(phi) координаты особых точек напрямую входят в уравнение. И ей богу, мне уже надоедает заниматься телепатией.

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
AlexNek патриот28.09.17 23:19
AlexNek
NEW 28.09.17 23:19 
в ответ Bigfoot 28.09.17 21:10
Я начинаю подозревать,что на самом деле модель Вам неизвестна.

Теории то достаточно

http://www.science.unitn.it/~visintin/Elsevier2006.pdf

многие любят пользовать Preisach модель. Но это все слишком много для того что требуется.


Никто не будет еще и R устанавливать... А почему?

требуется одна единственная прога - та что нужна пользователю, не больше.


Сделайте скриншот картинки которая "с аппаратурой" и растягивайте/сжимайте ее по осям любым способом.

А смысл? На оси Х и У приходят, грубо говоря данные от АЦП. Вместо них нужно подать тестовые сигналы. Всё остальное будет другой прогой которая никому не нужна.

И Вам для начала нужно подобрать функцию, адекватно описывающую кривую

Это я нашел, а вот с параметрами как раз и нужны более глубокие знания математики (И программирования).

Например, один из параметров будут степени для синуса/косинуса, а функция POW получается медленоватой.

Надо поискать где это я делал, тогда будет более понятно, надеюсь.

AlexNek патриот28.09.17 23:22
AlexNek
NEW 28.09.17 23:22 
в ответ Bigfoot 28.09.17 21:19
Предполагаю, что R-скрипт для нахождения параметров кривой по известной модели займет строк 10 кода

Не, там больше и делает не совсем то что надо. + Занимает относительно много времени.

AlexNek патриот28.09.17 23:38
AlexNek
NEW 28.09.17 23:38 
в ответ Bigfoot 28.09.17 22:46
из него клещами надо вытягивать внятное описание задачи

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

Просто хотел узнать делалось ли что в данной области. Да и лучше было открыть новую тему. Но тепрь уже поздно.


на кой ляд вообще нужно что-либо еще, кроме R для _генерации тестовых данных_???!!!!

Заранее сгенерированные данные иметь не очень хочется. Параметры хочется задавать в проге.

AlexNek патриот28.09.17 23:51
AlexNek
NEW 28.09.17 23:51 
в ответ AlexNek 28.09.17 23:38

похоже на домашнем компе нет :(

2 3 4 5 6 7 8 9 10 11 12 все