Простейший способ вычисления петли гистерезиса
а у меня не один
Один-единственный - amplitude. Других согласно приведенному описанию НЕТ! А у меня вместо него ТРИ параметра - H_c, H_s и M_s, которые могут быть измерены прямо с графика экспериментальных данных.
Вы либо приводите ТОЧНЫЙ код, из которого станут понятны ВСЕ параметры вызовов функций, либо пишите ФОРМУЛУ. А пока Вы заставляете упражняться в телепатии - ну откуда мне знать, что означают param1, param2 и param3, и какое отношение они имеют к amplitude?!!! Поверьте, этот сумбур очень раздражает. Пока Вы не научитесь четко формулировать задачу, помочь Вам будет затруднительно.
в процессе измерения "усы" растут/уменьшаются
Это как раз и описывается изменением параметров H_c (полуширины петли на при нулевой намагниченности), H_s и M_s (координаты точки насыщения - кончика "уса"). Задавайте закон
изменения оных от цикла к циклу, и будет вам счастие.
Поверьте, этот сумбур очень раздражает
Вполне могу Вас понять, но для этого мне нужно вначале представлять как "мыслит" математик. Уже не раз сталкивался на работе - что то объясняешь, а коллега в упор не понимает. Только потом выясняется что он оперирует совершенно другими "понятиями".
И как врубаешся в то, что чел. ожидает, то уже идет проще.
Потому как для меня важной была именно конечная формула, а уж как туда попадают параметры - дело вторичное и неважное.
Но одно отличие я нашел. У меня [а*ф(х)]^3 - у Вас а*[ф(х)]^3
в процессе измерения "усы" растут/уменьшаются ..Это как раз и описывается изменением параметров H_c
видимо неправильно пояснил. На графике нет букв в точках перегиба. При постоянных H_c, M_r и визуально незаметным изменением M_c "ус" вытягивается довольно прилично. И это вытягивание можно изменить только изменением степени. Иначе у меня никак не получалось.
Если не путаю, то производная в точке M_r меняется.
При постоянных H_c, M_r и визуально незаметным изменением M_c "ус" вытягивается довольно прилично.
У меня нет никаких М_г. Значения M_s и H_s - это ТОЧНЫЕ координаты кончика "уса". Если задать функцию так, как _ОПИСАЛ Я_ - с ТОЧНЫМ соблюдением всех степеней, множителей и т.д. - то НИКАКИХ "довольно приличных" вытягиваний "уса" не наблюдается. Эта точка - точка насыщения - ЖЕСТКО задается указанными параметрами. А вот в _Вашей_ реализации функции все может быть как угодно. Потому как я до сих пор не знаю, как и что Вы там задаете. Внесение множителя под знак степени РАДИКАЛЬНО меняет поведение функции при варьировании параметра. Уф...
Я с этого рисунка сдираю названия
http://femto.com.ua/articles/part_1/0802.html
Сейчас вот начал тестовую прогу делать, будет попроще
Сделал я тест. Если кому надо могу выложить исходники с ехе.
По пути нашел еще одну ошибку в моем генераторе.
А вот с 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); } }
Здешний скрипт квадратные скобки что то не воспринимает
Эээ...
В гистерезис Я не полезу, но дам простой совет.
Когда описываешь проблему математику, то начинай с простого - обозначим "ЭТО" как парам1...
Сам по себе математик не способен сделать эту привязку - для него "физика" процесса за пределами понимания и пока ты ему не дашь привязку ему фактически нечего делать...
Самый страшный, для математика, анекдот:
Военная кафедра, полковник читает лекцию по своему профилю.
...таким образом для выполнения задачи необходимо соблюдать условие. Вот пример:
Возьмем Н как условие... нет, Н - мало, возьмем М...
П.С. Как Я понял - он не понимает, что у тебя меняются испытуемые материалы - потому считает намагниченность насыщения и прочие для тебя переменные - константами.
П.П.С. Подумай еще раз над тем, чтобы нарисовать гистерезис как картинку 100х100... даже 20х20 - при запросах - 20% точности - этого хватит...
выдает какую то ерунду
Если писать ерунду, то оно и выдаст ерунду
Уравнения там для верхней 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...
спасибо за подсказки
Если писать ерунду, то оно и выдаст ерунду
Описания формулы я не нашел, пришлось взять что попроще.
если шаг по x равен единичному значению напряженности,
именно так для теста и сделал
половина точек является отрицательной областью одной ветви, а другая половина - положительной областью другой ветви)
так мне нужен вначале нужен график, который слева. Он как раз из двух половинок. Поэтому так и сделал.
Но похоже сам принцип не подходит.
Запостили бы, что ле, скриншот с реальными данными.
Так сейчас это в принципе невозможно, я пока дома. На работу 4-го, а когда до устройства доберусь неизвестно.
Но один скриншот ничего не даст, как и таблица. Устройство то для того и сделано чтобы снимать реальные данные.
А они отличаются довольно сильно для различных материалов и параметров измерения. Да и в процессе измерения отличия весьма заметные.
Похоже Preislach и Atherton дают что то удобоваримое, но они больше для научных расчетов.
Кстати, как то подобно меняется гистограмма во время измерения. Если различные цвета соотвествуют различным моментам времени.
Описание измерений нашел только в ГОСТе, но там нифига непонятно.
http://gostexpert.ru/data/files/12119.1-98/18ff80fce1c8be5...
Конечно и генерация и измерения проводятся в цифровом виде
Описания формулы я не нашел, пришлось взять что попроще.
В статье по ссылке исчерпывающее описание формулы.
именно так для теста и сделал
Это было ошибкой.
ак мне нужен вначале нужен график, который слева.
Я не знаю, что такое "график слева". Есть восходящая и нисходящая ветви. У Вас же часть от восходящей, а часть от нисходящей. В итоге - сумбур вместо музыки. ОБЕ ветви определены на одном и том же интервале значений напряженности магнитного поля, и вычислять значение намагниченности для обоих ветвей надо для каждой точки внутри -H_max...H_max. Принцип подходит прекрасно. Или мне надо обязательно запостить скришноты генерации графика в R или Origin? Проблему при использовании данной модельной функции я уже указал.
Но один скриншот ничего не даст, как и таблица. Устройство то для того и сделано чтобы снимать реальные данные.
Да, БЕЗУСЛОВНО, от цикла к циклу перемагничивания одни параметры кривой могут меняться. А другие - нет. Или меняться крайне незначительно по сравнению с первыми. Но для начала было бы неплохо выяснить, можно ли в принципе описать данные тем или иным образом. Хотя бы на одном примере.
Я не знаю, что такое "график слева".
ответ 25 https://foren.germany.ru/showmessage.pl?Number=32518173&Bo...
Гистограмма "собирается" из двух сигналов типа как фигуры лиссажу. Один из них по Х, второй по У. Потому как именно так поступает из устройства.
В статье по ссылке исчерпывающее описание формулы.
Для меня там в формуле просто набор букв. Какое то описание ожидается подобно следующего
y=A*x+C,
где A - ...обычно 3, C - ....обычно 5, x - .. в диапазоне от 0 до 1, y - ....
Проблему при использовании данной модельной функции я уже указал.
проблема "усов" и "у=f(х)" делают ее применение невозможной. Хотя усы видимо можно "слепить"
Гистограмма "собирается" из двух сигналов типа как фигуры лиссажу.
Это называется "параметрическое уравнение функции", а не "собирается из двух сигналов". Пока без телепатии обойтись не получается.
Для меня там в формуле просто набор букв.
Это очень понятные буквы. :) По ним можно легко догадаться, какие параметры реального сигнала можно померить и получить диапазоны варьирования параметров модельной функции. И да, "обычно" все бывает очень разным, поэтому конкретные цифры указывают лишь в тех случаях, когда параметр слабо меняется для разных объектов/условий измерения.
проблема "усов" и "у=f(х)" делают ее применение невозможной.
Моя телепатия не настолько мощна. Впрочем, проблемы "усов" особой нет - сшивку двух линий организовать несложно. Вот насчет y=f(x) будет посложнее. Я не настоящий сварщик математик, не знаю, возможна ли униформизация такой
зависимости. По крайней мере, подозреваю, что решение задачи отыскания параметрического представления ("униформизация") будет нетревиальным. Впрочем, мне было бы интересно по этому поводу заслушать начальника транспортного цеха знающего человека.
За что я люблю 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".
Это называется "параметрическое уравнение функции", а не "собирается из двух сигналов".
Это не телепатия, а проблема стыковки.
Нет у нас ни функций, ни уравнений, есть только сигналы представленные в цифровой форме в программе и в аналоговой на штекерах. Поэтому обычно разговор ведется с использованием "сигналов", а не "функций". У вас всё наоборот.
Например, нигде в последующих ссылках не заметил упоминания в тексте о параметрических уравнениях и как мне записать его здесь понятной математику формулой я не знаю. Вроде требуется большая фигурная скобка на две строки.
http://ens.tpu.ru/POSOBIE_FIS_KUSN/Кол�%B...
https://ru.wikipedia.org/wiki/Фигу�%...
http://dic.academic.ru/dic.nsf/enc_physics/998/Л�%9...
По мере возможности, буду стараться использовать математические понятия, хотя это может быть еще хуже. Вот я написал "у=f(х)", чтобы показать, что фунция не параметрическая. И казалось, что это будет ясно без всякой телепатии.
По крайней мере, подозреваю, что решение задачи отыскания параметрического представления ("униформизация") будет нетривиальным
Именно так я и "почувствовал", поэтому и написал, что с данной функцией лучше не связываться.
Но, ессесна, при знании возможностей R
вот именно поэтому я пользую C# а не R.
Зато данная функция довольно проста, только вот степени больше 3 уже не подходят. Усы то увеличиваются, но и форма искажается.
Может есть простая возможность удлинять "усы"?
Я не бог весть какой программер - скажем, никогда глубоко не вникал в то, что так любят "настоящие" программисты, и никогда не имел дел с масштабными проектами, но время от времени все же приходится компиллить нечто, что будет встроено в уже имеющийся софт, управляющий производственным оборудованием. Т.е., определенная ответственность имеется, поэтому прежде чем программить численные методы, используя достаточно громоздкие процедуры (а-ля нелинейная аппроксимация или кластерный анализ), приходится сначала всесторонне "обкатывать" алгоритмы в программах типа R/Origin/... Это заметно экономит время - считаю, что владение скриптовым языком для обработки/визуализации данных весьма полезно для тех, кто имеет дело с численными методами, даже если они "настоящие программеры".
"Простой" возможности удлиннять "усы" я не знаю. А лезть изучать вумную математическую литературу по вопросу мне как-то
лень, да и квалификация недостаточна - потребуется уйма времени, чтобы понять. А результат, скорее всего, окажется бесполезным, т.к. считаться будет гораздо дольше (придется решать дифуры).
поэтому прежде чем программить численные методы, используя достаточно громоздкие процедуры (а-ля нелинейная аппроксимация или кластерный анализ), приходится сначала всесторонне "обкатывать" алгоритмы в программах типа R/Origin/
вообще то то что я писал про сигналы к программисту большого отношения не имеет, программист бы имел дело с массивом данных. Я просто сейчас как бы на стыке сижу. Все же когда то давно был курс "Цифровая Обработка Сигналов". Что там было уже не помню, но страха особого нет влезать в подбные дебри. Но особых "математических" задач у нас весьма мало. А когда появляются то ищутся готовые решения. А если что, то проще написать отдельную прогу, с которой потом и стащить весь код.
"Простой" возможности удлиннять "усы" я не знаю.
Тогда огромнейшее спасибо за помощь и разъяснения. У меня была идея помножить на какую то фигню типа экспоненты.
Покажу завтра что есть и скажу, что если хотят лушче, пусть выделяют денюжку. То что есть как то никто и не заметил.
Спасибо, прикольно, не знал. Интересно будет сравнить с RStudio - там есть кой-какие моменты, которые меня не вполне устраивают. А VS все равно пользуюсь, хоть и для других целей. На выходных поиграюсь с этой "приблудой".