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 
Bigfoot коренной житель30.09.17 13:43
Bigfoot
NEW 30.09.17 13:43 
в ответ AlexNek 30.09.17 12:39
а у меня не один

Один-единственный - amplitude. Других согласно приведенному описанию НЕТ! А у меня вместо него ТРИ параметра - H_c, H_s и M_s, которые могут быть измерены прямо с графика экспериментальных данных.

Вы либо приводите ТОЧНЫЙ код, из которого станут понятны ВСЕ параметры вызовов функций, либо пишите ФОРМУЛУ. А пока Вы заставляете упражняться в телепатии - ну откуда мне знать, что означают param1, param2 и param3, и какое отношение они имеют к amplitude?!!! Поверьте, этот сумбур очень раздражает. Пока Вы не научитесь четко формулировать задачу, помочь Вам будет затруднительно.

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

Это как раз и описывается изменением параметров H_c (полуширины петли на при нулевой намагниченности), H_s и M_s (координаты точки насыщения - кончика "уса"). Задавайте закон изменения оных от цикла к циклу, и будет вам счастие.

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#21 
AlexNek патриот30.09.17 15:06
AlexNek
NEW 30.09.17 15:06 
в ответ Bigfoot 30.09.17 13:43
Поверьте, этот сумбур очень раздражает

Вполне могу Вас понять, но для этого мне нужно вначале представлять как "мыслит" математик. Уже не раз сталкивался на работе - что то объясняешь, а коллега в упор не понимает. Только потом выясняется что он оперирует совершенно другими "понятиями".

И как врубаешся в то, что чел. ожидает, то уже идет проще.

Потому как для меня важной была именно конечная формула, а уж как туда попадают параметры - дело вторичное и неважное.

Но одно отличие я нашел. У меня [а*ф(х)]^3 - у Вас а*[ф(х)]^3


в процессе измерения "усы" растут/уменьшаются ..Это как раз и описывается изменением параметров H_c

видимо неправильно пояснил. На графике нет букв в точках перегиба. При постоянных H_c, M_r и визуально незаметным изменением M_c "ус" вытягивается довольно прилично. И это вытягивание можно изменить только изменением степени. Иначе у меня никак не получалось.

Если не путаю, то производная в точке M_r меняется.


#22 
Bigfoot коренной житель30.09.17 15:40
Bigfoot
NEW 30.09.17 15:40 
в ответ AlexNek 30.09.17 15:06
При постоянных H_c, M_r и визуально незаметным изменением M_c "ус" вытягивается довольно прилично.

У меня нет никаких М_г. Значения M_s и H_s - это ТОЧНЫЕ координаты кончика "уса". Если задать функцию так, как _ОПИСАЛ Я_ - с ТОЧНЫМ соблюдением всех степеней, множителей и т.д. - то НИКАКИХ "довольно приличных" вытягиваний "уса" не наблюдается. Эта точка - точка насыщения - ЖЕСТКО задается указанными параметрами. А вот в _Вашей_ реализации функции все может быть как угодно. Потому как я до сих пор не знаю, как и что Вы там задаете. Внесение множителя под знак степени РАДИКАЛЬНО меняет поведение функции при варьировании параметра. Уф...

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

Я с этого рисунка сдираю названия

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


Сейчас вот начал тестовую прогу делать, будет попроще

#24 
AlexNek патриот30.09.17 23:07
AlexNek
NEW 30.09.17 23:07 
в ответ AlexNek 30.09.17 16:10, Последний раз изменено 02.10.17 16:02 (AlexNek)

Сделал я тест. Если кому надо могу выложить исходники с ехе.

По пути нашел еще одну ошибку в моем генераторе.


А вот с arctang-енсом ничего не получается.

Преобразовал я формулу 30 в следующее - выдает какую то ерунду.

private void CreateYPoints()
{
   _chartPointsY.Clear();
   double rx = Math.Tan(Math.PI * _valueMr / (2 * _valueMs));
   for (int i = 0; i < PointCount / 2 - 1; i++)
   {
       _pointsY(i) = (2 / Math.PI) * _valueMs * Math.Atan((i + _valueHc) / _valueHc * rx);
   }
   for (int i = PointCount / 2; i < PointCount; i++)
   {
        _pointsY(i) = (2 / Math.PI) * _valueMs * Math.Atan((i - _valueHc) / _valueHc * rx);
   }
}

Здешний скрипт квадратные скобки что то не воспринимает

#25 
Murr_0002 знакомое лицо02.10.17 10:20
Murr_0002
NEW 02.10.17 10:20 
в ответ AlexNek 30.09.17 23:07

Эээ...

В гистерезис Я не полезу, но дам простой совет.

Когда описываешь проблему математику, то начинай с простого - обозначим "ЭТО" как парам1...

Сам по себе математик не способен сделать эту привязку - для него "физика" процесса за пределами понимания и пока ты ему не дашь привязку ему фактически нечего делать...


Самый страшный, для математика, анекдот:

Военная кафедра, полковник читает лекцию по своему профилю.

...таким образом для выполнения задачи необходимо соблюдать условие. Вот пример:

Возьмем Н как условие... нет, Н - мало, возьмем М...

#26 
Murr_0002 знакомое лицо02.10.17 10:26
Murr_0002
NEW 02.10.17 10:26 
в ответ Murr_0002 02.10.17 10:20

П.С. Как Я понял - он не понимает, что у тебя меняются испытуемые материалы - потому считает намагниченность насыщения и прочие для тебя переменные - константами.


П.П.С. Подумай еще раз над тем, чтобы нарисовать гистерезис как картинку 100х100... даже 20х20 - при запросах - 20% точности - этого хватит...

#27 
Bigfoot коренной житель02.10.17 12:28
Bigfoot
NEW 02.10.17 12:28 
в ответ AlexNek 30.09.17 23:07, Последний раз изменено 02.10.17 12:49 (Bigfoot)
выдает какую то ерунду

Если писать ерунду, то оно и выдаст ерунду

Уравнения там для верхней y_h и нижней y_l ветвей. И это обычные функциональные зависимости y=y(x), а не параметрические!


x(это напряженность поля H) = -H_max...H_max = deltaH*(i-[(N-1)/2]-1),

deltaH= 2*H_max/(N-1) i=1...N, N=2*k+1, k - натуральное число (а у Вас индекс складывается с величиной, имеющей размерность!!! это могло бы быть верным только в одном случае: если шаг по x равен единичному значению напряженности, что вряд ли адекватно условиям, плюс, у Вас половина точек является отрицательной областью одной ветви, а другая половина - положительной областью другой ветви)

y_h=A*atan((x/H_cs+1)*_tan_)

y_l=A*atan((x/H_cs-1)*_tan_),

где A=2*M_s/Pi, _tan_=tan(Pi*M_rs/M_r/2)


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


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


ЗЫ. Комментарии мурра смело пропускайте мимо ушей. Он несет отчаянную ахинею насчет того, что и как я понимаю. Да и вообще, не особо въезжает в тему. У него до сих пор все еще 100x100...

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#28 
AlexNek патриот02.10.17 16:22
AlexNek
NEW 02.10.17 16:22 
в ответ Bigfoot 02.10.17 12:28

спасибо за подсказки


Если писать ерунду, то оно и выдаст ерунду

Описания формулы я не нашел, пришлось взять что попроще.


если шаг по x равен единичному значению напряженности,

именно так для теста и сделал


половина точек является отрицательной областью одной ветви, а другая половина - положительной областью другой ветви)

так мне нужен вначале нужен график, который слева. Он как раз из двух половинок. Поэтому так и сделал.

Но похоже сам принцип не подходит.


Запостили бы, что ле, скриншот с реальными данными.

Так сейчас это в принципе невозможно, я пока дома. На работу 4-го, а когда до устройства доберусь неизвестно.

Но один скриншот ничего не даст, как и таблица. Устройство то для того и сделано чтобы снимать реальные данные.

А они отличаются довольно сильно для различных материалов и параметров измерения. Да и в процессе измерения отличия весьма заметные.

#29 
AlexNek патриот02.10.17 20:23
AlexNek
NEW 02.10.17 20:23 
в ответ Bigfoot 02.10.17 12:28

Похоже Preislach и Atherton дают что то удобоваримое, но они больше для научных расчетов.

Кстати, как то подобно меняется гистограмма во время измерения. Если различные цвета соотвествуют различным моментам времени.

Описание измерений нашел только в ГОСТе, но там нифига непонятно.

http://gostexpert.ru/data/files/12119.1-98/18ff80fce1c8be5...

Конечно и генерация и измерения проводятся в цифровом виде

#30 
Bigfoot коренной житель02.10.17 20:35
Bigfoot
NEW 02.10.17 20:35 
в ответ AlexNek 02.10.17 16:22, Последний раз изменено 02.10.17 20:36 (Bigfoot)
Описания формулы я не нашел, пришлось взять что попроще.

В статье по ссылке исчерпывающее описание формулы.

именно так для теста и сделал

Это было ошибкой.

ак мне нужен вначале нужен график, который слева.

Я не знаю, что такое "график слева". Есть восходящая и нисходящая ветви. У Вас же часть от восходящей, а часть от нисходящей. В итоге - сумбур вместо музыки. ОБЕ ветви определены на одном и том же интервале значений напряженности магнитного поля, и вычислять значение намагниченности для обоих ветвей надо для каждой точки внутри -H_max...H_max. Принцип подходит прекрасно. Или мне надо обязательно запостить скришноты генерации графика в R или Origin? Проблему при использовании данной модельной функции я уже указал.

Но один скриншот ничего не даст, как и таблица. Устройство то для того и сделано чтобы снимать реальные данные.

Да, БЕЗУСЛОВНО, от цикла к циклу перемагничивания одни параметры кривой могут меняться. А другие - нет. Или меняться крайне незначительно по сравнению с первыми. Но для начала было бы неплохо выяснить, можно ли в принципе описать данные тем или иным образом. Хотя бы на одном примере.

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#31 
AlexNek патриот02.10.17 22:25
AlexNek
NEW 02.10.17 22:25 
в ответ Bigfoot 02.10.17 20:35
Я не знаю, что такое "график слева".

ответ 25 https://foren.germany.ru/showmessage.pl?Number=32518173&Bo...

Гистограмма "собирается" из двух сигналов типа как фигуры лиссажу. Один из них по Х, второй по У. Потому как именно так поступает из устройства.


В статье по ссылке исчерпывающее описание формулы.

Для меня там в формуле просто набор букв. Какое то описание ожидается подобно следующего

y=A*x+C,

где A - ...обычно 3, C - ....обычно 5, x - .. в диапазоне от 0 до 1, y - ....


Проблему при использовании данной модельной функции я уже указал.

проблема "усов" и "у=f(х)" делают ее применение невозможной. Хотя усы видимо можно "слепить"

#32 
Bigfoot коренной житель04.10.17 08:08
Bigfoot
NEW 04.10.17 08:08 
в ответ AlexNek 02.10.17 22:25
Гистограмма "собирается" из двух сигналов типа как фигуры лиссажу.

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

Для меня там в формуле просто набор букв.

Это очень понятные буквы. :) По ним можно легко догадаться, какие параметры реального сигнала можно померить и получить диапазоны варьирования параметров модельной функции. И да, "обычно" все бывает очень разным, поэтому конкретные цифры указывают лишь в тех случаях, когда параметр слабо меняется для разных объектов/условий измерения.

проблема "усов" и "у=f(х)" делают ее применение невозможной.

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

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#33 
Bigfoot коренной житель04.10.17 16:33
Bigfoot
NEW 04.10.17 16:33 
в ответ AlexNek 30.09.17 23:07

За что я люблю R:

Пример UI в графике R


И все умещается в 11 строк кода (сократил, правда, пару строк, незначительно ухудшив читабельность - оставлять одну скобку на строке зажирно):

library(ggplot2)
library(manipulate)
hyst.loop <- function(nPts, nCos, H_c, H_s, M_s) {
  t <- (0:(nPts-1))/(nPts-1)*2*pi
  return(data.frame(H=H_s*cos(t)^nCos + H_c*sin(t), M=M_s*cos(t)))}
manipulate({ggplot(hyst.loop(200,n.cos,H.c,H.s,M.s),aes(x=H,y=M))+  
      geom_path()},
  H.c=slider(1e-3,20, label="H_c", initial = 1),
  H.s=slider(1e-3,20, label="H_s", initial = 3),
  M.s=slider(1e-3,20, label="M_s", initial = 5),
  n.cos=slider(1,11,step=2, initial = 1, label="Cos Exponent"))

Могу добавить графики для H и M по отдельности, не вопрос. Еще добавит строк 10-12. По времени сие занимает несколько минут. Но, ессесна, при знании возможностей R-пакетов "ggplot2" и "manipulate". улыб

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#34 
AlexNek патриот04.10.17 19:46
AlexNek
NEW 04.10.17 19:46 
в ответ Bigfoot 04.10.17 08:08
Это называется "параметрическое уравнение функции", а не "собирается из двух сигналов".

Это не телепатия, а проблема стыковки.

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

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

http://ens.tpu.ru/POSOBIE_FIS_KUSN/Кол�%B...

https://ru.wikipedia.org/wiki/Фигу�%...

http://dic.academic.ru/dic.nsf/enc_physics/998/Л�%9...

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


По крайней мере, подозреваю, что решение задачи отыскания параметрического представления ("униформизация") будет нетривиальным

Именно так я и "почувствовал", поэтому и написал, что с данной функцией лучше не связываться.

#35 
AlexNek патриот04.10.17 19:54
AlexNek
NEW 04.10.17 19:54 
в ответ Bigfoot 04.10.17 16:33
Но, ессесна, при знании возможностей R

вот именно поэтому я пользую C# а не R.

Зато данная функция довольно проста, только вот степени больше 3 уже не подходят. Усы то увеличиваются, но и форма искажается.

Может есть простая возможность удлинять "усы"?

#36 
Bigfoot коренной житель04.10.17 20:18
Bigfoot
NEW 04.10.17 20:18 
в ответ AlexNek 04.10.17 19:54

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


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

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#37 
AlexNek патриот04.10.17 21:35
AlexNek
NEW 04.10.17 21:35 
в ответ Bigfoot 04.10.17 20:18
поэтому прежде чем программить численные методы, используя достаточно громоздкие процедуры (а-ля нелинейная аппроксимация или кластерный анализ), приходится сначала всесторонне "обкатывать" алгоритмы в программах типа R/Origin/

вообще то то что я писал про сигналы к программисту большого отношения не имеет, программист бы имел дело с массивом данных. Я просто сейчас как бы на стыке сижу. Все же когда то давно был курс "Цифровая Обработка Сигналов". Что там было уже не помню, но страха особого нет влезать в подбные дебри. Но особых "математических" задач у нас весьма мало. А когда появляются то ищутся готовые решения. А если что, то проще написать отдельную прогу, с которой потом и стащить весь код.


"Простой" возможности удлиннять "усы" я не знаю.

Тогда огромнейшее спасибо за помощь и разъяснения. glassglassglass У меня была идея помножить на какую то фигню типа экспоненты.

Покажу завтра что есть и скажу, что если хотят лушче, пусть выделяют денюжку. То что есть как то никто и не заметил.

#38 
AlexNek патриот05.10.17 22:59
AlexNek
NEW 05.10.17 22:59 
в ответ Bigfoot 04.10.17 20:18

Сегодня попалось

Working with R in Visual Studio

#39 
Bigfoot коренной житель06.10.17 07:43
Bigfoot
NEW 06.10.17 07:43 
в ответ AlexNek 05.10.17 22:59

Спасибо, прикольно, не знал. Интересно будет сравнить с RStudio - там есть кой-какие моменты, которые меня не вполне устраивают. А VS все равно пользуюсь, хоть и для других целей. На выходных поиграюсь с этой "приблудой".

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#40 
AlexNek патриот06.10.17 23:37
AlexNek
NEW 06.10.17 23:37 
в ответ Bigfoot 06.10.17 07:43

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


#41 
Bigfoot коренной житель07.10.17 00:24
Bigfoot
NEW 07.10.17 00:24 
в ответ AlexNek 06.10.17 23:37

Я уже потестил слегка. Сейчас пытаюсь понять, есть ли какие-то преимущества у этого монстрика перед RStudio для моих задач. На первый взгляд пока таковых преимуществ для себя лично не обнаружил, но я удивлен уже тем, что майкрософтам удалось создать нечто вполне адекватное и, как минимум, сравнимое по функционалу. :) Бум тестить дальше.

Oh gravity, thou art a heartless bitch! (c) Dr.Cooper
#42 
1 2 3 все