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

Простейший способ вычисления петли гистерезиса

472  1 2 3 все
AlexNek патриот29.09.17 13:51
AlexNek
29.09.17 13:51 

http://femto.com.ua/articles/part_1/0802.html

Задача относительно простая, вычислить значения для построения максимальной петли гистерезиса (1 по ссылке) из исходных данных: HC коэрцитивная сила, MR - остаточная намагниченность, MS - намагниченность насыщения. в режиме "реального времени" в среде .НЕТ на обычном ПС. Параметр HC в процессе вычислений постоянно меняется.

Правда комп может быть довольно старым и медленным. Но точность построения/расчетов не волнует особенно.

Существующая теория и модели предполагают их использование в научных расчетах, что в данном случае представляется избыточным. Требуется всего лишь "подмена" сигнала с аппаратуры на похожий сигнал от софта для тестовых целей.


Методом "научного тыка" была найден следующий более простой алгоритм:

Вычисляем предварительно таблицу cos и sin по заданной амлитуде, количеству точек (где то тыс 10 в зависимости от частоты) и фазе

COS=amplitude*cos(x+phase)

SIN=amplitude*sin(x+phase)

X{}= COS(params1)

Y1{}= COS(params2)

Y2{}= SIN(params3)


Затем используем простейшую формулу (А), где степень обязательно нечетная в данном случае 3

Y{i} = Y1{i}* Y1{i}* Y1{i}+Y2{i}


Результат вполне устраивает, но есть проблемы с привязкой исходных параметров, так как при определенных комбинациях параметров нужно увеличивать степень в формуле А, да и пересчет исходных данных в параметры (params1,2,3) сделан чисто экспериментальным путем.


#1 
Bigfoot коренной житель29.09.17 14:12
Bigfoot
NEW 29.09.17 14:12 
в ответ AlexNek 29.09.17 13:51

0. Существует с десяток модельных функций для описания петли магнитного гистерезиса.

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

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

3. Непонятно, на кой там 10 тыс.точек.? Мне сложно понять, зачем так много, но я, возможно, соглашусь, если будет определен п.2.

4. Что значит "меняется параметр "HC"? Насколько меняется? Меняется случайно или по какому-то закону? Вообще, я с трудом понимаю, как можно варьировать параметр в процессе вычислений. Параметр - он на то и параметр, что задается до вычисления. Или он варьируется от набора к набору данных (датасету)? Если его варьировать в рамках одного набора данных, то можно получить бессмысленную хрень.

5. Выбор степени должен определяться при подгонке (аппроксимации) экспериментальных данных с помощью модельной функции. Данная модельная функция представляется мне для точных расчетов слишком грубой. Впрочем, все будет определяться п.1 и 2 - требованиями к точности воспроизведения экспериментального сигнала. Кроме того, совершенно непонятно, как это требование к обеспечению точности стыкуется с предыдущей фразой "точность построения/расчетов не волнует особенно". Честно слово, Вас ООООЧЕНЬ трудно понять. Вы слишком расплывчато и сумбурно формулируете.

6. Заключительная фраза насчет "привязки исходных параметров" и "пересчета исходных данных" мне непонятна совершенно. Или параметры подгоняли методом научного тыка на глаз плюс-минус палец?


PS. Даже на ооочень слабых компах R работает достаточно шустро.

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#2 
AlexNek патриот29.09.17 14:55
AlexNek
NEW 29.09.17 14:55 
в ответ Bigfoot 29.09.17 14:12

Сорри, найти взаимопонимание достаточно непросто. Многие "значения по умолчанию" не кажутся важными.

>1. Нет четкого определения "подмены" или "похожего сигнала".

Не имею понятия как это определить чётко. Думаю Accuracy в 20-30% вполне может устроить.

Если я смотрю сигнал на осциллографе с устройства то генерится должен подобный что виден на эране осциллографа.

>2. Непонятно, что есть "тестовая цель" - от этого тоже зависит выбор модельной функции.

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

>3. Непонятно, на кой там 10 тыс.точек.?

Для этого есть другой алгоритм, который их подсчитывает в зависимости от частоты синуса и параметров аппаратуры. Может быть и 1000 и 100.

>4. Что значит "меняется параметр "HC"?

формулу изменения можно заложить любую - это пока не важно. В процессе измерений на образец подаются сигналы различной формы и амплитуды. Для начала достачно линейного увеличения.

>5. Данная модельная функция представляется мне для точных расчетов слишком грубой.

не нужны никакие точные расчеты. А. Запускаем прогу с подключенной апаратурой - видим на экране графики и цифры. Б. Запускаем прогу с "тест генератором" должны видеть на экране подобные графики и цифры.

>6. Заключительная фраза насчет "привязки исходных параметров" и "пересчета исходных данных" мне непонятна совершенно. Или параметры подгоняли методом научного тыка на глаз плюс-минус палец?

Именно подгонялось как и сама формула нашлась. Форму сигнала по осям Х и У я видел, осталось додуматься как изменить синус чтобы получить что то подобное.

>PS. Даже на ооочень слабых компах R работает достаточно шустро.

"Сигнал генератор" должен быть частью программы.


#3 
Bigfoot коренной житель29.09.17 15:25
Bigfoot
NEW 29.09.17 15:25 
в ответ AlexNek 29.09.17 14:55, Последний раз изменено 29.09.17 15:27 (Bigfoot)
Думаю Accuracy в 20-30% вполне может устроить.

20-30% чего? Площади петли? Относительной разности сигналов в определенной точке? Среднего относительного отклонения модельного сигнала от экспериментального?

Если я смотрю сигнал на осциллографе с устройства то генерится должен подобный что виден на эране осциллографа.

Ну так запостите набор данных, который соответствует сигналу, который виден на экране осциллографа. Текстовый файл, две колонки

каждый раз может быть что то разное

Дело ясное, что дело темное.

Для этого есть другой алгоритм, который их подсчитывает в зависимости от частоты синуса и параметров аппаратуры. Может быть и 1000 и 100.

Кого подсчитывает? Зачем подсчитывает? У вас там что, плавающая частота съема/генерации данных (sampling rate, Abtastrate)? Она что, меняется в процессе генерации? Что такое "частота синуса"?

формулу изменения можно заложить любую - это пока не важно. В процессе измерений на образец подаются сигналы различной формы и амплитуды. Для начала достачно линейного увеличения.

Едрена шишь, ну объясните тогда, что же такое есть процесс измерений? КАК ИМЕННО ФОРМИРУЕТСЯ СИГНАЛ???? HC меняется от измерения к измерению или уже в процессе формирования сигнала для одного измерения??? Мое терпение вот-вот лопнет. Я не могу вытягивать из Вас клещами _ПРИНЦИПИАЛЬНО ВАЖНЫЕ_ для решения задачи сведения. А Вы упорно продолжаете невнятно формулировать

не нужны никакие точные расчеты.

Ага, а как тогда быть с точностью в "20-30%"??? То нужны, то не нужны... Если не нужны, то какая Вам нафиг разница, если модельная петля слегка будет отличаться по форме от экспериментальной? Критерия "подобности" как не было, так и нет.


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

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#4 
  ilghiz постоялец29.09.17 16:07
NEW 29.09.17 16:07 
в ответ AlexNek 29.09.17 14:55

> Не имею понятия как это определить чётко. Думаю Accuracy в 20-30% вполне может устроить.


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

#5 
Bigfoot коренной житель29.09.17 16:13
Bigfoot
NEW 29.09.17 16:13 
в ответ ilghiz 29.09.17 16:07

Подозреваю, что решение тут гораздо проще: нужна гибкая модельная функция с ясно задаваемыми параметрами, которые будут соответствовать измеряемым величинам. Нужно лишь подобрать по экспериментальным данным те параметры, которые будут определять форму (профиль) петли, а потом варьировать "экстенсивные" типа H_c.

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#6 
AlexNek патриот29.09.17 16:56
AlexNek
NEW 29.09.17 16:56 
в ответ Bigfoot 29.09.17 15:25
Я не могу вытягивать из Вас клещами _ПРИНЦИПИАЛЬНО ВАЖНЫЕ_ для решения задачи сведения.

тут получается так - что то важное для математика меня как то совсем не интересует или я об этом не задумывался.

Ну вот подобие сигналов - для меня как то никогда не представяло проблемы. Вижу сигнал на экране, срисовал его на бумажку вот и подобие. Ну типа как художники рисуют с натуры - зачем подсчитывать насколько рисунок будет отличаться от оригинала? Достаточно того что похож или не похож.

Как это подобие описать математически не имею представления. Ну может если оба каким то образом перевести в табличное представление, взять разницу по модулю, найти мах и СКО.


20-30% чего? Площади петли? Относительной разности сигналов в определенной точке? Среднего относительного отклонения модельного сигнала от экспериментального?

Да без разницы. Скорее "Среднего относительного отклонения модельного сигнала от экспериментального?"


Ну так запостите набор данных, который соответствует сигналу, который виден на экране осциллографа. Текстовый файл, две колонки

И это сделать практически? Ну да ладно могу стащить один период в определенный момент времени. Но что это даст? Получится какая то определенная кривая гистерезиса никак принципиально не отличающаяся от теоретической формы.

Да и сделать это смогу только на работе.


каждый раз может быть что то разное...Дело ясное, что дело темное.

Сигнал меняется в зависимости от заданных параметров измерения. Параметры задаются клиентом.


Что такое "частота синуса"?

Возможно это слэнг, но мы почти всегда так говорим. Ну ка измени мне частоту синуса (или частоты пилы)

http://sernam.ru/book_phis_t2.php?id=154


Едрена шишь, ну объясните тогда, что же такое есть процесс измерений?

можно конечно только зачем нужна лишняя информация? Там целый ПДФ с описанием.

Вот что то подобное

http://www.introtest.com/usr/06/MK4E/MK4E_apparat_Epshtein...


сорри... позже допишу.

#7 
  ilghiz постоялец29.09.17 17:03
NEW 29.09.17 17:03 
в ответ Bigfoot 29.09.17 16:13

> Подозреваю, что решение тут гораздо проще: нужна гибкая модельная функция с ясно задаваемыми параметрами


ну так правильно, я именно это и сделал, только разжевал в уже готовую функцию, которую просто надо воткнуть в шарп. Я с шарпами не в ладах, то есть не умею от слова никак, посему оставил формулы на съедение ТС. А так в моих формулах явно задаются точки Mr, Mc, HC (мне б телепатом подрабатывать?) и есть готовая функция, (одна из трех, в зависимости от диапазона аргумента) то осталось ее вбить в шарп, скомпилить и радоваться. В точках MR и HC имеется гладкость до второго порядка, а на краю в одном случае нулевая производная, а в другом случае - нулевая вторая производная. Собственно, как и должно быть во всех кривых намагничивания.


Если немного пооптимизировать, то можно в формулах заметить одинаковые члены, которые правильно вычислить заранее, тогда формулы станут еще короче. Надеюсь, что ТС это сам осилит, если что, готов подсказать как проще.

#8 
Bigfoot коренной житель29.09.17 17:54
Bigfoot
NEW 29.09.17 17:54 
в ответ ilghiz 29.09.17 17:03

Это - не "готовая функция", а в лучшем случае, сложный для использования полуфабрикат. Готовая функция должна задаваться аналитически (и, желательно, компактно) на всей области определения, а не кусочно, примеры таких функций можно найти здесь. Вводить многокилометровые "простыни" с кучей непонятных (кодеру) коэффициентов чревато.

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#9 
  ilghiz постоялец29.09.17 21:06
NEW 29.09.17 21:06 
в ответ Bigfoot 29.09.17 17:54

> Вводить многокилометровые "простыни" с кучей непонятных (кодеру) коэффициентов чревато.

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

Я спустился до уровня обычного программиста, предоставив готовый листинг функций. Не сконвертировать это с шарп - мне эта позиция не понятна. Могу в фортране аутпут предоставить. Как я уже говорил, правильная группировка членов приведет к компактному коду на 50 арифметических операций. Я регулярно применяю аналогичные подходы, и имею простыни кода большей длины. Да, у меня есть достаточно тулсов и экспириенса для оценки устойчивости таких простыней, и я некоторые проверки за ТС уже сделал. Работать должно.


Раз этот подход у ТС не вызвал интереса, и даже не сгенирил в моем направлении ни единого спасиба хотя бы из-за уважения, что я что-то для него делал, а не филосовствовал, надеюсь, что L-M или еще чем он таки решит свою задачу, а на вас Bigfoot, я очень полагаюсь, что вы ему за адекватную сумму поможете это сделать ибо по уровню его вопросов я полностью уверен, что сам он испольовать или вызывать нумерику не сможет.

#10 
Bigfoot коренной житель29.09.17 21:46
Bigfoot
NEW 29.09.17 21:46 
в ответ ilghiz 29.09.17 21:06, Последний раз изменено 29.09.17 21:47 (Bigfoot)

Ему не нужен Л-М. Ему не нужны численные методы. Все, что ему нужно - это вид функции плюс подходящие параметры, позволяющие адекватно описывать форму петли. Остальное он будет варьировать в процессе. Если он запостит данные, то я готов ему сделать все забесплатно. Это займет минут 15-20, вряд ли больше. Но я не вижу попытки запостить данные, хотя я, вроде, предельно понятно все написал. Да и описалове софта, которое запостил ТС, явно указана возможность сохранения данных в файле.

Ладно, фиг с ним, с текстовым файлом. Скриншот тоже пойдет. Оцифрую, не впервой - займет минут 5-10. Но желательно тогда картинку большого размера и с толстыми линиями.

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#11 
AlexNek патриот29.09.17 23:50
AlexNek
NEW 29.09.17 23:50 
в ответ Bigfoot 29.09.17 15:25
Едрена шишь, ну объясните тогда, что же такое есть процесс измерений? КАК ИМЕННО ФОРМИРУЕТСЯ СИГНАЛ????

Фиг это можно просто объяснить

http://files.stroyinf.ru/Index2/1/4294838/4294838822.htm

Да и не вижу связи с тем что требуется. Грубо говоря, на экране компа видна кривая гистерезиса форма которой меняется по времени. Как именно, сейчас неважно.

Меня интересует как мне менять форму этой кривой использую приведенную формулу (или что получше). Точнее, как форму немного менять я нашел, но чисто путем размышлений и экспериментов.


Кого подсчитывает? Зачем подсчитывает?

Алгоритм подсчитывает количество точек и еще пару параметров. Зачем можно пояснить, но к задаче оно никак не относится.

На карте ЦАПа есть кварц на 20 Мегагерц. Если параметры брать на шаруто эти 20000 не получится разделить нацело и сигнал не будет "гладким".


не нужны никакие точные расчеты....Ага, а как тогда быть с точностью в "20-30%"???

а 20-30% эти разве точность? Вот 0.1% - это да.


то какая Вам нафиг разница, если модельная петля слегка будет отличаться по форме от экспериментальной?

так и нет разницы пусть себе немного отличается.


Про временнЫе рамки генерации сигнала ничего сказано не было.

Цифра небось нужна - абсолютно точно не знаю, пока не мерял. Картинка должна быть "живой". Скажем 0.1 сек на генерацию.

Ппоробую завтра видео сделать из того что есть.

#12 
AlexNek патриот30.09.17 00:18
AlexNek
NEW 30.09.17 00:18 
в ответ ilghiz 29.09.17 21:06
не захотел задуматься о производных и остальных свойствах апппроксимируемых функций

Как Вы правильно подметили нужно вначале знать зачем об этом думать.


предоставив готовый листинг функций

Спасибо конечно, но кроме какого то непонятного набора символов я там ничего не заметил. Ни формулы, ни псевдокода.


или еще чем он таки решит свою задачу

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

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

#13 
AlexNek патриот30.09.17 00:32
AlexNek
NEW 30.09.17 00:32 
в ответ Bigfoot 29.09.17 21:46
Но я не вижу попытки запостить данные

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

Но опять таки непонятно, что даст один период.

#14 
Bigfoot коренной житель30.09.17 04:25
Bigfoot
NEW 30.09.17 04:25 
в ответ AlexNek 29.09.17 23:50
Скажем 0.1 сек на генерацию.

Снова меня терзают смутные сомнения, что посчитать "честно" 10к точек за такое время на дохлом компе нереально. Тогда останется только интерполяция степеней косинусов. Впрочем, дерзайте, мне лень оценивать выч.затраты.

Меня интересует как мне менять форму этой кривой использую приведенную формулу (или что получше).

Я привел ссылку на статью. Там есть формулы с понятными параметрами. Например, (30). Ваша же модель слишком жесткая. Надо отдельно вычислять X и Y для заданного фазового угла - это и есть параметрический способ задания функции. Можно взять X=H_x * [cos(alpha)]^3+H_c*sin(alpha), Y=M_s*cos(alpha), M_s - намагниченность насыщения, H_c - коэрцитивная сила, H_x - напряженность поля в точке насыщения (максимальное значение намагничивающего поля), 0<alpha<2*Pi - параметр. Пробуйте.

Ппоробую завтра видео сделать из того что есть.

Ненене, не надо видео. "Ша, уже никто никуда не идет!" (с)

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#15 
AlexNek патриот30.09.17 10:09
AlexNek
NEW 30.09.17 10:09 
в ответ Bigfoot 30.09.17 04:25
Надо отдельно вычислять X и Y

ну так именно это мне и надо, так как есть еще отдельные графики для Х и У

И не вижу отличий в приведенной формуле от моей, разве что по другому записано.

Проблема в "[cos(alpha)]^3", для некоторых значений нужно использовать cos(alpha)]^7 или даже 11.

#16 
Bigfoot коренной житель30.09.17 10:27
Bigfoot
NEW 30.09.17 10:27 
в ответ AlexNek 30.09.17 10:09

Если не видите отличий, то флаг в руки. Я тут бессилен. Вроде, все разжевал и в рот положил, но, видать, этого недостаточно. Посчитайте, сколько РАЗНЫХ множителей перед тригонометрическими функциями у Вас, и сколько у меня. Может, озарит. И да, дьявол кроется в деталях. Количество подгоночных параметров таки-может кардинально менять гибкость функции. А показатель степени косинуса - это как раз тот самый параметр, который нужно оптимизировать по экспериментальным данным, используя нелинейную аппроксимацию. Для чего я их и испрашивал. Но Вам ведь не нужна точность. Чего тогда заморачиваться с этим параметром-то?

В общем, успехов.

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#17 
AlexNek патриот30.09.17 10:48
AlexNek
NEW 30.09.17 10:48 
в ответ Bigfoot 30.09.17 10:27

Спасибо и пож. не злитесь. Я просто не думаю как математик. И получается что мы "говорим" на абсолютно разных языках.


это как раз тот самый параметр, который нужно оптимизировать по экспериментальным данным,

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


Кстати, ссылки в Ваших постах что то не могу найти.

#18 
Bigfoot коренной житель30.09.17 11:42
Bigfoot
NEW 30.09.17 11:42 
в ответ AlexNek 30.09.17 10:48

Постинг #9 со ссылкой


для этого нужен целый набор различных данных, а не одна таблица для одного периода

Для оценки будет достаточен один набор XY-данных, описывающий характерную петлю гистерезиса. Повторяю, если точность Вам непринципиальна, то зачем заморачиваться с этим параметром? Для варьирования петли гистерезиса в широких пределах достаточно тех ТРЕХ параметров (а не одного-единственного, как в Вашей исходной модели), которые я указал.

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#19 
AlexNek патриот30.09.17 12:39
AlexNek
NEW 30.09.17 12:39 
в ответ Bigfoot 30.09.17 11:42
Постинг #9 со ссылкой

Спасибо, а я искал только в ответах мне. Не попадалось подобной статьи. Попробую еще 30 формулу.


а не одного-единственного, как в Вашей исходной модели

а у меня не один. (params подразумевает набор параметров), я просто с кода списал строки. Там как раз вызов функции с параметрами. Если переписать в виде формулы то получится одинаково.

Просто то что у Вас получилось скажем за минут 10 у меня заняло дни (не непрерывно, но достаточно долго).


зачем заморачиваться с этим параметром?

грубо говоря в процессе измерения "усы" растут/уменьшаются

#20 
1 2 3 все