среда, 31 мая 2023 г.

Про кино здесь

Упс,  из состава экспертов экспертных советов по игровому, документальному и анимационному кино были исключены Федорченко, Учитель, Хотиненко и Эрнст. Собсна, это последние столпы, хоть немного положительно влиявшие на госкинопродукцию и хоть что-то интересное создавшие за 20 лет "не для быдла". Дальше за деятельностью конторы, очевидно, можно не смотреть.

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

четверг, 18 мая 2023 г.

Maxima — Tips&Tricks, или собираем по крохам инфо, как на ней работать

 

Резервная копия. Изначально опубликовано 26 сентября 2014 г. https://habr.com/ru/articles/238347/

 

Человеческая память для меня загадка. Являясь обладателем слабой памяти с детства, вечно забываю о некоторых нюансах окружающего меня мира. Тем не менее, эти данные должны быть под рукой. И когда не хватает блокнота, на помощь приходят текстовые файлы. Один из таких файлов содержит небольшую сборку повседневных и обыденных команд <i>Maximа</i>.

Я думаю, всем из нас известна данная система компьютерной алгебры. Она не является конкурентом <i>Wolfram Mathematica</i>, но она обладает именно тем функционалом, который я требую от математического софта. Если говорить проще и доступнее - считать можно на всём, от палочек до суперкомпьютеров, и далеко не всегда задачи инженерной практики целиком переносятся с бумаги в программный код. Одним из примеров, который я честно говоря, еле-еле застал, является сегодня забытая поделка нашего конверсионного производства - цельнометаллический бытовой вакуумный гражданский термос, который выпускался ранее ещё в СССР на Урале. Чтобы наладить его производство институт, в котором я учусь, де-факто вручную на счётных машинках высчитал все необходимые параметры рабочего оборудования. Поэтому лицензия на Mathematica - не показатель и не ценз пригодности к практике. Считать, повторюсь, можно на всём.

От слов к делу. Ниже разбиты на категории те моменты в документации <i>Maxima</i>, которые желательно знать  для начинающего пользователя данной СКА.
<habracut>

<h4>Общий функционал</h4>
** или ^ - возведение в степень;
% - последняя ячейка вывода;
_ - последняя ячейка ввода;
%th(n) - возвращает n-ю с конца ячейку вывода;
$ - глушение вывода результата;
kill(all) - очистить сеанс;
describe(name) или ? name - помощь по конкретным словам;
example(name) - пример использования;
demo() - выполняет программы из демонстрационных файлов, поставляемых с системой;
'выражение - предотвращает вычисление выражения;
''выражение - аналог ev (принудительное вычисление выражения);
num(%) - числитель дроби;
denom(%) - знаменатель дроби;
coeff(n,x,3) - возвращает коэффициент при переменной в заданной степени;
depends([m,y],[x,z]) - устанавливает зависимость m(x,z) и y(x,z);
second(y = 14) - извлечёт 14;
subst - подстановка одного выражения в другое;
changevar (%, x - 3 - y ,y ,x); - замена переменных в выражении;
%, y=x-3 - обратная подстановка;
float(%) - преобразовать к вещественной форме;
nouns(%) - раскрывает вообще все несовершённые формы – и производные в том числе;
eval – напротив, проводит дополнительно ещё один процесс вычисления. в выражения тоже могут входить некоторые символы, которые тоже могут иметь свои значения; и такая цепочка  «вложенных значений» может продолжаться сколь угодно глубоко. Один вызов функции ev (без опции eval) опускается по этой цепочке в глубину на один уровень: noeval блокирует сам этап вычисления как таковой; т.е. её можно использовать для того, чтобы применить к выражению другие опции функции ev, не перевычисляя его;
lhs(eq) - rhs(eq) - левая и правая части некоторого выражения;
eliminate([x+y+z=1,x+y=2,x+z=3],[z]) - исключить из системы уравнений переменную или несколько переменных, то есть уменьшить размерность системы;
gcd(420,1176) - НОД;
mod(x,y) - остаток от деления x на y со знаком x;
signum(x) - вернёт +1 если x >0, -1 если x <0;
max/min;
log(x) - НАТУРАЛЬНЫЙ логарифм ("ln(x)");
floor(4.445) - округление вниз;
ceiling(4.445) - округление вверх;
listofvars(%) превращает исходное выражение в список содержащихся в нем переменных;
numer:true (или numeric:true) - проведение расчётов только с плавающей точкой, а не с рациональными числами;
bindtest - запрещает использовать символ в выражениях до присвоения ему значения;
batch() загружает Maxima-файл с расширением  .mac или .mc (от первоначального названия программы – Macsyma) и выполняет содержащиеся в нем выражения.
batchload(), подгружает пакетный файл «молча»: все назначенные в нем функции и переменные становятся доступны, но результаты не видны, и весь хранимый ввод-вывод, включая значения символов % и _ и результаты, возвращаемые функцией %th(), остается тем же, что и до вызова.
file_search_maxima - переменная, содержащая каталоги пользовательских файлов и файлов самой СКА;
~/.maxima - стандартный каталог системы;
file_search_lisp и file_search_demo - функции для поиска соответствующих файлов;
load() - обертка над двумя функциями загрузки файлов, просто короче;
loadfile() -загружает файл с исходным кодом Lisp (парна к save());
stringout()-  выгружает в файл любые выражения и функции Maxima;
declare() - внести факт в базу фактов;
facts(name) или facts() - узнать текущее состояние базы;
remove() - удалить свойства из базы;
assume() - в качестве аргументов принимает в любом количестве самые обыкновенные равенства и неравенства в логической форме, то есть не  «a=b»,  «a#b», а  «equal(a,b)»,  «not equal (a,b)». Из логических операторов допускается также использование and (по сути assume(x>0 and x<1) это то же самое, что и assume(x>0, x<1)), но не or – база фактов не поддерживает информацию вида «или»; и речь не о синтаксисе, а именно о конструкциях, то есть выражения типа not(a>b and a<c) тоже недопустимы. Факты, добавленные assume(), также видны функции facts():

<h4>Производные, пределы, ряды...</h4>
diff(выражение) — находит полный дифференциал выражения, который является суммой всех частныхпроизводных по переменным выражения;
diff(выражение, переменная) — находит частную производную первого порядка;
diff(выражение, переменная, N) — находит частную производную N-го порядка;
diff(выражение, х_1, N_1, х_2, N_2, …) —находит сумму частных производных;
derivlist(x, y, ..., v) – производные относительно переменных, заданных в качестве аргументов, а также полные дифференциалы (так как они не зависят ни от каких переменных);
integrate(%,x) - интегрирование;
romberg(cos(sin(x+1)), x, 0, 1) - численное интегрирование методом Ромберга;
limit ((x^2 - 1)/(x^2 + 1), x, inf) - вычисление пределов;
limit ((x^2 - 1)/(x^2 + 1), x, minf);
limit (tan(x), x, %pi/2, plus) - предел справа;
limit (tan(x), x, %pi/2, minus) - слева;
tlimit(...) - попытка найти предел с поднятым флагом tlimswitch (см. ниже);
sum(i, i, 1, 100) - сумма ряда;
product - произведение ряда (синтаксис аналогично sum);
sum(1/x^2, x, 1, inf), simpsum=true; - чтобы выполнить суммирование, нужно указать опцию «simpsum=true»;
sumcontract(sum1+sum2) - сокращение сум;
taylor(sin(x), x, 0, 8) - ряды;
niceindices(powerseries(sin(x), x, 0)) - ряды с упрощением;

<h4>Упрощения</h4>
simp: false - отключить принудительное упрощение "на лету";
ratdenomdivide - по умолчанию системная переменная имеет значение "true". В этом случае каждая дробь, в которой числитель является суммой, раскладывается на сумму дробей с одинаковым знаменателем. Если же присвоить этой опции значения "false", то тогда все дроби с одинаковым знаменателем будут объединены в одну дробь с числителем в виде суммы числителей начальных дробей;
expand() - раскрыть скобки, упростить;
distrib() – expand(), но только на один уровень в глубину;
combine() - функция, собирающая воедино дроби с одинаковыми знаменателями;
trigsimp(%) - тригонометрические упрощения через основное тригонометрическое тождество;
trigrat(%) - аналогично, посильнее;
trigreduсe(%) - преобразовать тригонометрические выражения в канонические конечные тригонометрические ряды (Fourier sums) [преобразует тригонометрическое выражение как сумма слагаемых, каждое из которых содержит один синус или косинус];
trigexpand(%) - «раскрывает» аргументы тригонометрических функций, согласно правилам тригонометрических функций от суммы углов;
partfrac(%) - разложение на простые дроби;
ratsimp(%) - быстро упростить сумму рациональных выражений;
fullratsimp(выражение) - последовательно применяет к выражению функцию ratsimp, а также некоторые нерациональные преобразования и повторяет эти действия в цикле до тех пор, пока выражение не перестанет в процессе преобразования изменяться (медленнее, зато дает более надежный результат);
ratexpand(%) - приводит дроби к общему знаменателю;
radcan(%) - «сократить» экспоненты с логарифмами, перейдя к каноническому радикалу [упрощение показательных, логарифмических и степенных (с рациональными степенями) функций];
factor - максимально сворачивает выражение в скобки;
factorsum() - если многочлен не может быть представлен в виде произведения нескольких сомножителей, его можно попытаться преобразовать в сумму таких произведений;
0. Также имеются такие функции как: atensimp, foursimp, fullratsimp, logarc, rootscontract, scsimp, simplify_sum, vectorsimp.
1. После ratexpand() и в числителе, и в знаменателе дроби все скобки будут раскрыты, в случае же rat() слагаемые, где имеются, например, две переменные, будут сгруппированы, и одна из них будет вынесена за скобки.
2. expand раскрывает скобки на всех уровнях вложенности, а ratexpand раскрывает рациональное выражение только первого уровня, при этом подвыражения, которые не являются рациональными, не обрабатываются;
3. ratexpand приводит дроби-слагаемые к общему знаменателю, а expand этого не делает;
4. На expand не влияет системная опция ratdenomdivide;
5. expand не преобразует в рациональные числа конечную десятичную запись независимо от значения системной опции keepfloat.
6. maxposex и maxnegex - переменные, управляющие раскрытием возведения в целую степень - максимальные положительный и отрицательный показатель степени, которые будут раскрываться этой функцией expand ( По умолчанию 1000), переназначить можно прямо в функции expand();
7. expop и expon - переменные, задают максимальные положительную и отрицательную степени, которые будут раскрываться автоматически, без вызова функций группы  expand (по умолчанию 0, то есть автоматически степени не раскрываются вообще);
8. Флаг – halfangles – управляет раскрытием формул половинных углов;
Два флага –  trigexpandplus и  trigexpandtimes – отвечают соответственно за применение формул сумм углов и кратных углов (по умолчанию установлены);
9. Флаги  trigsign и  triginverses - первый принимает традиционные два значения (по умолчанию – true) и регулирует вынос знака за пределы тригонометрической функции. Флаг  triginverses – трехзначный, и умолчательное его значение равно  all. Он отвечает за обработку сочетаний вида  sin(asin(x)) или atan(tan(x)). Значение all позволяет раскрывать эти сочетания в обоих направлениях (напомню, что при этом часть корней будет теряться); значение true оставляет разрешенным раскрытие только вида sin(asin(x)), то есть блокирует вариант с потерями периодических значений; а случай false запрещает оба направления преобразований;
10. Флаг  tlimswitch. По умолчанию он тоже выключен, а если его включить, функция  limit будет, при невозможности найти предел другими способами, пытаться его найти путем разложения подпредельной функции в ряд Тейлора в окрестности заданной точки;
11. Единственный флаг, имеющий прямое отношение к самой функции diff  – это флаг derivabbrev, который влияет на отображение производных в ячейках вывода Maxima. По умолчанию он равен  false, и производные обозначаются в виде дробей с буквой d; если же его выставить в true, производные будут отображаться в сокращенном виде, с переменными дифференцирования записанными в виде индексов.
12. solveradcan - флаг, по умолчание false, а выставив этот флаг в  true, мы заставим solve применять  radcan, что в некоторых случаях может помочь разрешить проблемы, которые без этого ключа приведут к невозможности найти точное решение.

<h4>Матрицы</h4>
A: matrix([1,2],[3,4]);
Определитель матрицы. Функция determinant(matrix).
Транспонирование матрицы. Функция transpose(matrix).
Вычисление обратной матрицы. Функция invert(matrix).
Построение характеристического многочлена матрицы. Функция charpoly(matrix, var).
Сложение матриц (знак «+»). Почленно складывает все элементы двух матриц.
Вычитание (знак «-»). Совершенно аналогичен сложению, но элементы матриц вычитаются.
Деление матриц (знак «/»). Деление слабо отличается от сложения, каждый элемент одной матрицы делится на соответствующий элемент другой матрицы.
Перемножение матриц почленно (знак «*»). Этот оператор работает также как и сложение: элементы первой матрицы умножаются на соответствующие элементы второй матрицы. Это не то умножениематриц, которое обычно подразумевается в курсе линейной алгебры!
Умножение матриц (знак «.», точка).
addcol(V1,[9,10]) - добавление столбца к матрице;
addrow(V1,[9,10]) - добавление строки к матрице;
V1: submatrix(V1, 6,7) - удалить из матрицы V1 6-й и 7-й столбец;
submatrix(начальный номер удаляемой строки, конечный номер удаляемой строки; Имя
матрицы;) - уменьшение количества строк;
M[j, i] - обращения к конкретному элементу массива М;
zeromatrix(m, n) - создание нулевой матрицы размерностью m*n;
ident(n) - создание единичной квадратной матрицы;
diagmatrix(n, x) - создание диагональной квадратной матрицы размерностью n*n;
transpose(M)  - транспонирование матрицы M;
matrix_size(M) - определение количества столбцов и строк матрицы;
rank(M) - определение ранга матрицы;
mattrace(M) - определение следа (суммы диагональных элементов) квадратной матрицы (* приложению предшествует загрузка пакета для работы с матрицами: load ("nchrpl"));
determinant(М) - вычисление определителя (детерминанта) квадратной матрицы;
invert(M) -вычисление матрицы, обратной к М.

<h4>Обыкновенные дифференциальные уравнения</h4>
1)
ode2(уравнение, функция, переменная). Функцией обычно является у, а переменной — х;
Помимо решения дифференциального уравнения в общем виде, можно решать уравнения с начальными условиями (краевая задача). Для этого необходимо решить уравнение в общем виде при помощи функцииode2, а затем воспользоваться одной из функций поиска начальных условий:
ic1(решение, точка х, значение у в точке х) —для решения дифференциальных уравнений 1-го порядка с начальным условием;
ic2(решение, точка х, значение у в точке х, значение y' в точке х) — для решения дифференциальных уравнений 2-го порядка с начальным условием;
bc2(решение, точка х1, значение у в точке х1, точка х2, значение у в точке х2) — для решения дифференциальных уравнений 2-го порядка с начальными условиями в виде двух точек;
2)
desolve(дифференциальное уравнение, переменная);
Если осуществляется решение системы дифференциальных уравнений или есть несколько переменных, то уравнение и/или переменные подаются в виде списка:
desolve([список уравнений], [переменная1, переменная2,...]);
Так же как и для предыдущего варианта, для обозначения производных в дифференциальных уравнениях используется функция diff, которая имеет вид 'diff(f(x), x);
atvalue(функция, переменная = точка, значение в точке) - начальные значения.

<h4>Графики</h4>
plot2d(sin(x), [x,0,6]);
plot2d(sin(x), [x,0,1], [y,0,1]);
plot2d([parametric, realpart(W(%i*t)), imagpart(W(%i*t))], [t,0,100], [nticks,1000])$
Параметрические графики строятся так:
[parametric, x(t), y(t)]. Поэтому из приведенной формулы были подставлены параметрические функции. Далее, [t,0,100] - это диапазон точек, в котором рисовать годограф. Тут у каждого получается по-разному, ясно, что кривая уходит либо в 0, либо в бесконечность, тут главное не переборщить. Рекомендуется поиграться с диапазоном значений t, чтобы определить откуда и куда движется кривая. Данный пример берёт начало в точке [-1, 0] и стремится к [0, 0]. [nticks,1000] - этот параметр задает число точек для интерполяции графика. Чем их больше - тем более гладким будет выглядеть график и больше времени потребуется на его построение.
Графики в полярных координатах - применяется функция draw2d со следующими аргументами:
user_preamble = "set grid polar", // построение в полярных координатах;
nticks = n, // n - число точек;
xrange = [dx1, dx2], // диапазон изменения x;
yrange = [dy1, dy2], // диапазон изменения y;
color = red, // цвет;
line_width = k, // ширина линии, которой строится график;
title = "общее название графика",
polar(функция, переменная, нижняя_граница _переменной, верхняя_граница_переменной) // функция построения графика;
Обязательными являются первый и последний аргументы функции. Первый инициирует построение графика в полярных координатах, последний (polar) - это функция, по которой строится график.
plot3d(((x - 10)/5)*((y - 10)/5),[x, 0,20],[y, 0,20]) - трехмерная (3D) графика;
Редактирование трехмерного графика осуществляется так же, как и двумерного.
Трехмерная поверхность может быть заменена градиентным переходом цветов. Для этого следует применить опцию "set view map".

<h4>Программирование (подробнее в документации)</h4>
for, while, until и т.д.
Примеры:
for i in s do
for k:1 thru b:3 do
for переменная:начало step шаг thru конец do выражение
for переменная:начало step шаг while условие do выражение
for переменная:начало step шаг unless условие do выражение
Задание функции:
f1(x,y):=x+y;



_-=============================-_
##########   ДРУГОЕ   #############
.================================.

Русское обозначение - в Maxima:
arccos - acos
arcsin - asin
arctg - atan
ch - cosh
sh - sinh
ctg - cot
ln - log
tg - tan

Символы греческого алфавита:
Gamma; Theta; Psi и т.д.

Обработка данных:
1)
 load (descriptive)$  /*загрузить расширение*/
 a:[1,2,3,4];
 mean(a);             /*=5/2 среднее*/
 var(a);              /*=5/4 дисперсия*/
 std(a);              /*=?5/2 среднеквадратичное отклонение*/
mean (средняя арифметическая);
median (медиана);
variance (дисперсия);
deviation (среднее квадратичное отклонение);
2)
a:[1.0,2.0,3.0,4.0];
for i in a do ldisp( sin(i)/i );

Вычисление производных по всем переменным, входящим в выражение:
eq: x*l/k; /*исходное выражение*/
res: 0$ for i in listofvars(eq) do res: res + (diff(eq,i) * concat("d",(i)))^2$

Для большей точности существует специальная функция bfloat() (big float, большой float), а также переменная ffprec — за число знаков после запятой. То есть для повышения/понижения точности нужно присвоить переменной fpprec другое числовое значение и воспользоваться функцией bfloat() вместо float(). Нужно, чтобы переменная numer равнялась false.

По умолчанию Maxima работает в системе МКС: метр-килограмм-секунда:
2*m;
2*cm;
setunits([centigram,inch,minute]) - аргументами которой являются три базовых единицы измерения: веса, длины и времени;
setunits([kg, m, s]);
convert(inch,[sm]); - перевод единиц измерения;

stringout("/Users/myusername/file1maxima.mc",INPUT);
To save all your work as a "tape" that can be replayed later, all your input can be saved to a file.    

batch("/Users/myusername/file1maxima.mc");   
Loading the saved file: the saved file can also be loaded directly, although the exact numbering of lines will change from the original calculation.

SIMPSUM:TRUE;
sum(k, k, 1, n), simpsum;
=> \displaystyle {{n^2+n}\over{2}}
product(1/(n^2),n,1,10); Products work in much the same way.

niceindices(powerseries(%e^x, x, 0));
=> \displaystyle \sum_{i=0}^{\infty }{{{x^{i}}\over{i!}}}

taylor(%e^x, x, 0, 5);
=> \displaystyle 1+x+{{x^2}\over{2}}+{{x^3}\over{6}}+{{x^4}\over{24}}+{{x^5}\over{120 }}+\cdots
trunc(%); Since the output of taylor has special properties, we need to convert it into a polynomial.

load("newton");
=>/sw/share/maxima/5.9.0rc3/share/numeric/newton.mac
newton(x^7-5*x^6+4*x^4-5*x^2+x+2,1);
=>8.194213634964119B-1

tex(%)- преобразовать выражение к виду TeX;
$$\left(x+1\right)^2$$

Преобразовать TeX в PDF:
1. Paste the following five lines verbatim into the text editor:
\documentclass{article}
\pagestyle{empty}
\begin{document}
\huge
\end{document}
2. Copy the tex() output line, and paste it between the \huge and \end{document} lines.
3. Save the result in text format as: myoutput.txt
4. In the terminal window, navigate to the directory where you saved myoutput.txt
5. type:
pdflatex myoutput.txt
6. Hit return - a PDF file called myoutput.pdf containing your typeset equation will now be created in this directory.

load(to_poly_solve); - дополнительные процедуры для решения систем алгебраических уравнений;
to_poly_solve([3*z1+z2+2=0,sqrt(z1)=z2],[z1,z2]);

sol:rk([rk1, rk2, gamma, w], [gamma, w, fi, tetta], [0, %pi/8, %pi/2, 0], [t, 0, Tmax with_stdout ("gamma.txt", for k:1 thru points do print (sol[k][1], sol[k][2])) - пример ввода данных из файла.




А теперь рассмотрим типовой пример использования Maxima в студенческой жизни. Красиво и интересно данный процесс был показан в <a href="http://habrahabr.ru/post/193272/">статье на Хабре </a>ранее. Я в свою очередь только поверну координатные оси в одном уравнении:
<source lang="lisp">

F:uxx+2*uxy+cos(x)^2*uyy-ctg(x)*(ux+uy); /*искомое уравнение*/
A:F,uxx=uxx,uxy=0,uyy=0,ux=0,uy=0$ A:A/uxx$
B:F,uxx=0,uxy=uxy,uyy=0,ux=0,uy=0$ B:B/(2*uxy)$
C:F,uxx=0,uxy=0,uyy=uyy,ux=0,uy=0$ C:C/(uyy)$
D:F,uxx=0,uxy=0,uyy=0,ux=ux,uy=0$ D:D/(ux)$
E:F,uxx=0,uxy=0,uyy=0,ux=0,uy=uy$ E:E/(uy)$
print("A = ",A)$ print("B = ",B)$ print("C = ",C)$ print("D = ",D)$ print("E = ",E)$
delta:B^2-A*C$
print("Delta = ", delta)$
/*так как я знаю, что дельта > 0, перехожу сражу к решению гиперболического уравнения */
A*'diff(y,x,1)^2-2*B*'diff(y,x,1)+C=0;
'diff(y,x,1)=(2*B+sqrt((2*B)^2-4*A*C))/(2*A);
ode2(%,y,x);
solve(%,%c)$
w1:rhs(%[1])$ print("w1 = ",w1)$
'diff(y,x,1)=(2*B-sqrt((2*B)^2-4*A*C))/(2*A);
ode2(%,y,x);
solve(%,%c)$
w2:rhs(%[1])$ print("w2 = ",w2)$
ux:un*diff(w2,x)+ue*diff(w1,x);
uy:un*diff(w2,y)+ue*diff(w1,y);
uxx:un*diff(diff(w2,x),x)+unn*diff(w2,x)^2+2*uen*diff(w1,x)*diff(w2,x)+ue*diff(diff(w1,x),x)+uee*diff(w1,x)^2;
uxy:un*diff(diff(w2,x),y)+uen*(diff(w1,x)*diff(w2,y)+diff(w1,y)*diff(w2,x))+unn*diff(w2,x)*diff(w2,y)+ue*diff(diff(w1,x),y)+uee*
diff(w1,x)*diff(w1,y);
uyy:un*diff(diff(w2,y),y)+unn*diff(w2,y)^2+2*uen*diff(w1,y)*diff(w2,y)+ue*diff(diff(w1,y),y)+uee*diff(w1,y)^2;
uy*E+ux*D+uyy*C+2*uxy*B+uxx*A;
%,ctg(x)=cos(x)/sin(x); trigrat(%);
</source>
Результат:
2*uen*cos(2*x)-2*uen

суббота, 13 мая 2023 г.

Cколько и каких батареек потребуется электромобилю

Матмодель подсчёта энергозатрат при движении электромобиля + исследование вольт-амперных характеристих бытовых химических источников тока (сколько и каких батареек потребуется электромобилю) Казанцев, Степанькова, Коврижных, Дoнeцкиx, постановка задачи 2019, результаты получены в 2019, презенташка почему-то 2020

https://drive.google.com/file/d/1yw8S60CETFln8zYlqny_S1Knf-GZnQep/view?usp=share_link

https://drive.google.com/file/d/1mz5n-nWVgo4gCic-PJQ-cKaHz1-_bU4E/view?usp=share_link

См. результат



пятница, 12 мая 2023 г.

Резюме - бэкап от 13 мая 2023

 

Инженер-прочнист, инженер-исследователь, инженер-математик

Занятость: полная занятость, частичная занятость, проектная работа

График работы: полный день, сменный график, гибкий график, удаленная работа, вахтовый метод

Опыт работы 9 лет 6 месяцев

Декабрь 2013 — по настоящее время
9 лет 6 месяцев

 

ПНИПУ

Пермь

Инженер-прочнист (инженер-исследователь, инженер-математик)
Аналитические и численно-аналитические расчёты на динамику, прочность, устойчивость, тепло, штамповку, ротора, предельные режимы, многопараметрические задачи, оптимизация по критериям заказчика. Консультирование ПО LS-DYNA. Консультирование и расчёты в ПО OpenRADIOSS.

Текущее место работы:
- с ноября 2017 г. ассистент, с сентября 2020 г. по 4 апр. 2023 г. старший преподаватель (лекции-практикумы и научно-практическое руководство в курсовых проектах магистрантов по теории автоматического управления, мехатронике, нелинейному и динамическому поведению материалов и конструкций) на кафедре ДПМ , ПНИПУ, г. Пермь, с марта 2023 младший научный сотрудник; сложные расчётные случаи (МДТТ, МЖГ, технологические, полуаналитические, междисциплинарные задачи, патентный поиск, анализ зарубежных и отечественных источников);
- с марта 2022 г. прочнист в ОДК-Авиадвигатель: тестирование Логос-Прочность, переписывание с техподдержкой Логос, консультирование по пластическим задачам, программирование на Python 2.* под Ansys Workbench ACT Extensions, APDL-скриптинг и отладка, тестирование ПО в Linux с точечным администрированием.

Ранее:
- с сентября 2018 г. по июнь 2022 инженер-конструктор СКБ КОР ПАО Мотовилихинские заводы, сложные расчётные случаев (МДТТ, МЖГ, технологические, аналитические, полуаналитические, междисциплинарные задачи, анализ зарубежных и отечественных источников).


Прочее:
- английский базовый (свободное чтение предметной технической литературы: документации, руководств, книг, научных статей, патентов и т.п.; восприятие на слух тематических видеолекций);
- опыт в программировании: основная среда Scilab + LibreOffice Calc, по мере надобности в коммерческих и некоммерческих проектах писал небольшие участки кода на Matlab, VBA, Python, Си, Fortran, FASM, Pascal, ANSYS APDL;
- в качестве CAD использую Компас, FreeCAD, Salome, CalculiX, ANSYS, Inventor;
- военнообязанный (2011-2012 гг., в\ч 75752, оператор поста радиоперехвата голосовых зарубежных не/подвижных ирс);
- пользователь Linux со стажем >18 лет, знаю электронику на уровне "несложный ремонт с паяльником";
- для просмотра примеров оформления программного кода: аккаунт GitLab (разный код, например, проектов за два первых места в конкурсах ПНИПУ подготовки школьников в 2018 и 2019)
https://gitlab.com/AlexKaz
- ютуб-канал
https://www.youtube.com/@alvlk
- яндекс-видео
https://dzen.ru/alvlk (постепенно дублирую ютуб-канал)

Примеры работ:
https://www.researchgate.net/profile/Alexander_Kazantsev2
диплом бак.
https://www.twirpx.com/file/2075676/
диплом маг.
https://www.twirpx.com/file/2753795/
методичка
https://www.twirpx.com/file/2524056/
cтатья
https://www.twirpx.com/file/2815010/

Опыт работы, примеры задач (выше - новее):
- аналитический и численный расчёт собственных частот труб при вынужденных колебаниях в задаче конструирования стенда циклических усталостных испытаний, НПП МЕРА, г. Москва, 9-29 апреля 2023 г.;
- рекомендации по выбору типа ременного привода для вертолёта с дизельным двигателем 700 л.с., частный заказ, г. Симферополь, 3-6 апр. 2023 г.;
- тестирование Логос-Прочность на типовых конструкционных задачах: пластика в квазистатике с большими деформациями, явная и неявная динамика; составление перечня недоработок и багов решателей, интерфейса, справки, отправка в техподдержку Логос части найденных критичных проблем; лето 2022 г. - весна 2023 г., Авиадвигатель;
- "Подбор CPU по совокупности TDP, цены и одно- и многотопочных тестов" - вывод эмпирической зависимости для описания покупательских предпочтений на рынке вычислительной техники, проблематика 2014 г., вывод формулы октябрь 2020 г., статья сентябрь 2022 г.;
https://habr.com/ru/articles/689334/ , https://forum.ixbt.com/topic.cgi?id=8:26051 ;
- доработка САУ УИКВЗ (Система автоматизированного управления испытаниями корпуса воздухозаборника) для АО Авиадвигатель, приведение конструкции по жёсткости и к условиям работы в пределах среднецикловой усталости; СКБ КОР ПАО МЗ, 2-9 февр. 2022;
- модификация и верификация GTN-модели (Гурсон-Твергаард-Ниддлман) для CalculiX TFel-MFront, анализ причин расходимости модели в LS-Dyna; январь 2022;
- сравнительный анализ скорости численного расчёта рамных конструкций в различных МКЭ-программах
https://cccp3d.ru/topic/77890-%D1%81%D0%BE%D1%84%D1%82-%D0%BB%D0%BE%D0%B3%D0%BE%D1%81-%D1%87%D1%82%D0%BE-%D0%B7%D0%B0-%D0%B7%D0%B2%D0%B5%D1%80%D1%8C-%D0%B2-%D0%BD%D0%B0%D1%88%D0%B8%D1%85-%D0%BA%D1%80%D0%B0%D1%8F%D1%85-%D0%BD%D0%B5-%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D1%81%D1%8F/?do=findComment&comment=1293844; 17-19 января 2022;
- аппроксимация поля деформаций в заготовке типа "брус" термоупругостью, ПНИПУ, 16-17 нояб. 2021 г., LS-DYNA;
- серийные вычислительные испытания по прокатке и проковке бруса и пластин пневмомолотком с различным форм-фактором заготовок, передача всех расчётных моделей и результатов сотрудникам ИМСС, осень 2021 г., LS-DYNA;
- оценка плавучести и ватерлинии изделия ЗАО СКБ (по готовой методике), осень 2021 г., Kompas3d + FreeCAD + Salome + LS-Prepost + Inventor;
- подбор модели материала при поверхностном пластическом выглаживании с малоцикловым упрочнением (ratcheting) для задач постобработки и снятия остаточных напряжений в заготовках c наплавленным "трёхмерной печатью" слоём алюминия АМг6, 9-13 апр. 2021, LS-Dyna;
- обзор применения пьезокерамики (MFC) и электроактивных полимеров в качестве актуаторов для пологих оболочек, ИМСС, г. Пермь, 4-29 апреля 2021 г.;
https://reaa.ru/threads/pezoehlementy-na-planere.97516/
- точечная раскатка валов авиадвигателей, Incremental Bulk Forming–Rotary Processes, переработка опытных данных AFRC University Of Strathclyde UK, формализация подхода к решению задачи, численный расчёт, 17 февр.-17 марта, 8 мая 2021, LS-Dyna;
- численно-аналитическая проверка прогрева цистерн с соляной и азотной кислотой с -50 до -20 С для ООО «Научно-проектный центр «Прикладная химия», Пермь, 1-2 декабря 2020 г; анализ прекращён в связи с недостаточностью опытных данных и невозможностью корректной постановки задачи в связи с предположением о нехарактерном поведении кислот при нагревании в цистернах при указанных температурах;
- численный пересчёт конструкции газоотводного устройства реверсного потока (ГУРП) для ПС-90, изготовленного ООО «ЭЛ-СКАДА», Пермь, сент. 2020 г.
- проверка прочности конструктивных элементов MEMS-акселерометра под действием полусинусоиды 5000g 300 мкс, LS-DYNA, сент. 2020 г.
- анализ техпроцесса сушки гипсопанелей, численный расчёт процесса сушки переходом к тепловой аналогии, идентификация параметров модели по опытным данным, выдача рекомендаций, ANSYS APDL, авг-сент 2020 г., Пермь.
- кодинг "Математическое обеспечение для проведения гидравлических расчетов линий питания СГС", OpenModelica, лето 2020 г., Пермь.
- руководитель призёров нескольких конкурсов, проходящих среди старшеклассников в лицеях Перми (тема первой команды "Исследование химических источников тока и разработка математической модели электромобиля" - результат "отлично" в зачётку, тема второй команды "Регулятор-термостат" - второе место, тема третьей команды "Обратный маятник / Сегвей" - с моей стороны техническое консультирование, подбор литературы и разработка прототипа; третья команда - "портальный робот для игры в шашки", вручение призовой грамоты и зачисление баллов для поступления в ВУЗ); лето 2019 г - зима 2020 г.;
- переработка аналитической методики определения нестационарного поля температуры в стенках труб при протекании в них высокотемпературного (до 2000 С) газа при числах Маха до 5 до аналитической+численной методики определения нестационарного поля температуры в омываемой плоской пластине при натекании на неё высокотемпературного (до 2000 С) газа при числах Маха до 5; ЗАО СКБ МЗ, г. Пермь; февр. 2020 г.;
- реализация полной методики ОСТ 92-9084-84 Передачи зубчатые цилиндрические эвольвентные и реечные с модулем от 1 мм и более. Методика расчета на прочность; ЗАО СКБ МЗ, г.Пермь, реализовано в электронных таблицах;
- анализ усилий в раме испытательного стенда ПС-90, подбор швеллеров-двутавров и перекомпоновка, Wolsink Framework, окт. 2019 г.;
- подбор теплового режима для равномерного прогрева трубы (ПС-90) с минимальным градиентом в стенде ЭЛ-СКАДА, выдача рекомендаций; г. Пермь, 2019г, выполнено в LS-DYNA;
- полный перевод интерфейса программного обеспечения по расчёту строительных конструкций WolsinkFramework, 2019 г., перевод 35% Хэлпа 2019-2020 гг.;
https://www.gerritwolsink.nl/ https://reaa.ru/threads/raschety-ram-v-programme-wolsink-framework-besplatnaja.18891/
- определение требуемого усилия штамповки для получения плиты жарочного шкафа в составном штампе с буферами из полиуретана и пружинами; Лысьвинский завод плит, г. Лысьва, 2019г, выполнено в LS-DYNA;
- аналитический подбор жёсткостей пластинчатых подвесов испытательного стенда газотурбинных двигателей Эл-СКада для измерения тяги, Пермь, февр. 2020 г.;
– расчёт автомобильного багажника (кофра), частный заказ, Алма-Аты, 2018 г., выполнено в Code_Aster.
– подбор дополнительной операции для листовой штамповки ручки бака 40 л.; расчёт усилий при штамповке плиты жарочного шкафа; ООО «Лысьвенский завод эмалевых покрытий», г. Лысьва, 2018г, выполнено в LS-DYNA;
– проработка вариантов геометрии и численный расчёт прототипа безостановочной системы весогабаритного контроля автомобильного потока, ООО «Инверсия-Сенсор», ООО «Технологии безопасности дорожного движения», г. Пермь, 2018 г., выполнено в ANSYS;
– расчёт ветровой нагрузки на РСЗО типа «изделие», ПАО «Мотовилихинские заводы», г. Пермь, 2018 г, выполнено во Flotran;
– решение обратной задачи по определению механических констант и толщин слоистой дорожной конструкции неразрушающим методом на основе экспериментально определённого поля перемещений дорожного полотна, ПНИПУ, г. Пермь, 2017-2018 гг., выполнено в Scilab;
– «Перенос поля граничных сил между различными сетками в ANSYS Mechanical», практика, «Авиадвигатель», лето 2017 г., выполнено в ANSYS;
– аналитический расчёт пластикового П-образного фиксирующего клина, частный заказ ООО "НИЛЕД", г. Подольск, 2017 г.;
– расчёт кинематики подвески для гоночного болида Formula Student ПНИПУ, г. Пермь, 2016 г., выполнено в WolsinkFramework;
– определение рациональных параметров клапана для ликвидации поглощений в буровых штангах, АО «Пермнефтемашремонт», г. Пермь, 2016 г., выполнено в ANSYS;
– расчёт авиа моторамы «Лайкоминг» по частному заказу, «АКМ-Авиа», г.Пермь. 2016 г., выполнено в CalculiX, WolsinkFramework;
– конвективный теплообмен в аппаратном отсеке, ПАО «Мотовилихинские заводы», 2015-2016 гг., выполнено в FlowSimulation;
– с завязкой на аналитику расчёт малоцикловой усталости сварных швов подмоторной рамы сверхлёгкого планера и расчёт равнопрочного диска компрессора по частному заказу «АКМ-авиа», г. Пермь, 2015 г.;
– расчёт корпуса АПУ «Тор» при смешанной сетке, их элементы при различных нагрузках для АО «ИЭМЗ «Купол» г.Ижевск во время производственной практики 2015 г., выполнено в SolidWorks Simulation;
– поверхностное пластическое деформирование металлических листов при обкатке шариками, контактные задачи по тематике научно-исследовательской деятельности, ударное нагружение стёкол, 2015 г., выполнено в ANSYS, LS-DYNA;
– расчёт пучинистых грунтов под развязкой автострады, 2014 г., выполнено в ANSYS;
– сверка механических испытаний по ГОСТ асинхронных тяговых двигателей ДАТ-170 и ДАРГ-3500 – испытания на вибрацию и ударные нагрузки по заказу ООО «Электротяжмаш-Привод», г. Лысьва, 2014 г., выполнено в ANSYS.

Статьи, конференции:
- А.В. Казанцев, В.И. Кычкин, И.А. Есипенко «Подбор механических свойств материалов слоев дорожной одежды по виброотклику дорожного полотна. Транспорт. Транспортные сооружения. Экология» 2018 №4;
- И.Э. Келлер, В.Н. Трофимов, Д.С. Петухов, А.В. Казанцев «Диаграмма предельных деформаций при горячей листовой штамповке металлов: обзор моделей материала, критериев вязкого разрушения и стандартных испытаний», Вестник Самарского государственного технического университета. Серия Физико-математические науки, 2018, том 22, №3;
- выпуск электронной GNU FDL-методички “Казанцев А.В. Основы LS-DYNA. Диаграмма предельных деформаций (FLD). Создание и верификация моделей поведения материалов.”, ПНИПУ, каф. ДПМ, г.Пермь, 2017-2018 гг.;
- очное участие в конференции «Проблемы прочности, динамики, ресурса», посвящённой 80-летию со дня рождения Ю.Г. Коротких (1937-2016), Нижний Новгород, 21-23 ноября 2017 г.;
- тезисы доклада: М.Г. Бояршинов, В.А. Трушков, А.В. Казанцев «Особенности моделирования испытаний электродвигателя на прочность и устойчивость при воздействии синусоидальной вибрации» / Всероссийская научно-практическая конференция «Актуальные задачи механики сплошных сред — 2014», Пермь, 18-19 ноября 2014 г.;
- соавтор статьи: М.Г. Бояршинов, В.А. Трушков, А.В. Казанцев «Использование ресурсов вычислительного кластера ЦВВС ПНИПУ для определения динамических и прочностных характеристик механического оборудования» / Высокопроизводительные параллельные вычисления на кластерных системах (HPC 2014), Пермь, 10-12 ноября 2014 г.
 

Ключевые навыки

Математическое моделирование
Математический анализ
Linux
VBA
MATLAB
Scilab
Octave
LibreOffice
ANSYS
Code_Aster
Salome-MECA
CalculiX
FreeCAD
Сопротивление материалов
Динамика конструкций
Системная динамика
ТАУ
Теория автоматического управления
Механика сплошных сред
Maxima
wxMaxima
Paraview
OpenModelica
Modelica
LS-Dyna
lsdyna
MEMS
Теплотехника
прочность и устойчивость
Python

Высшее образование

2012-2016 бакалавриат, 2016-2018 магистратура
ПНИПУ
Прикладной математики и механики, Динамика и прочность машин

Знание языков

Русский — Родной

Английский — B1 — Средний

 

 

Подбор CPU по совокупности TDP, цены и одно- и многотопочных тестов

 

Подбор CPU по совокупности TDP, цены и одно- и многотопочных тестов

Резервная копия (изначально опубликовано https://habr.com/ru/articles/689334/

Краткая предыстория вопроса. В 2014-м, когда я подбирал себе персоналку, тиснул на Хабр чем-то похожий пост. Выбранный мною в 2014-м относительно бюджетный Haswell i5 4670 нормально отпахал вплоть до 2020-го года без претензий на обновление. Но, время сказывается и на шустроте прорывного Haswell. Состав десктопа был заменён на b450 + Ryzen 1800х, в 2020-м довольно прилично упавших в цене. В сущности, получилось то же самое по суммарной плавучке, но зато позволило не думать о потолке размера оперативной памяти и в перспективе воткнуть в сисплату вплоть до 128 ГБ.

Но затем пришёл 2021-й год, упали цены на 3-е поколение Ryzen. Я затариваюсь 5600х, втыкаю его в свою b450 и получаю в рабочих задачах ускорение 3х в сравнении с 4670 и 1800х. Без шуток, именно 3х. Да, всему виной кэш 32 МБ, чуть подросший IPC и отсутствие "склейки", что заметно сказалось на межъядерных задержках. Задачи в плавучке у меня тогда были как правило не требовательны к пропускной способности памяти, объёмы данных небольшие. Проблема была в том, что мои задачи в стандартных распространённых бенчах не участвовали. Надо было заранее сделать выбор между 5600х, 5800х, 5900х или 5950х. Так почему я выбрал 5600х? Думаете, наугад? На самом деле, чтобы целенаправленно покупать младшую модель, когда есть монструозные и всех побеждающие старшие, нужна была довольная высокая уверенность в успешных последствиях такого действия. Чтобы сомневаться в покупке по минимуму, мне хватило одной маленькой эмпирической, накиданной мною за пару часов, формулы. Подробности под катом.


Сразу к делу. Мне хотелось бы построить свой собственный выраженный одним числом попугаеметр, который учтёт:

  • удельную отдачу производительности на доллар (рубль, юань, и т.д.) стоимости ЦПУ;

  • удельную отдачу производительности на Ватт электроэнергии; единственный показатель потребления, который легко можно было нагуглить и подставить сюда - это TDP, что, как все мы понимаем, далеко не показатель =), но лучше не было ничего;

  • как-то учесть однопоток.

В качестве исходных данных я выбрал многопоточные и однопоточные попугаи, TDP и ценники с выдачи Passmark. Заранее скажу, в моих задачах при тестах на разных персоналках наблюдалась довольно хорошая коррелляция с попугаями cpubenchmark.net. Комбинирую попугаи выше, я остановился на том, что эти три показателя перемножал, получив такое отношение:

Попугаи = (MultiScore/Price) * (MultiScore/TDP) * SingleScore.

И, чтобы немного расширить диапазон выборки, составил для себя табличку (ниже) для всех доступных на Passmark десктопных ЦПУ. И вот что интересное получилось.

По моему попугаеметру в 2020-м и начале 2021-го г. топ фактически единолично принадлежит второму поколению Ryzen, при этом младшие модели (по моему попугаеметру) отставали от старших не в разы. В 2020-м самый высокий коэффициент при наиболее низкой цене однозначно уходил Ryzen 3600. Ниже скрин таблички из 2020-го года.

https://hsto.org/r/w1560/getpro/habr/upload_files/55a/246/320/55a2463209891f20164eee0d591ba558.png

В начале 2021-го года на рынке топ принадлежал пару месяцев назад вышедшим 5600х и 5950х. Скрин таблички прикрепляю:

https://hsto.org/getpro/habr/upload_files/648/fb7/058/648fb7058de2984456af2e8dd433725c.png

После того, как к весне-лету 2021 г. в продажу поступили 5800х и 5900х по адекватному прайсу, топ изменился, но незначительно:

https://hsto.org/getpro/habr/upload_files/21e/3d4/837/21e3d4837edd770d15933a26e27babf0.png

Как видно из скрина № 2, 5600х и 5950х практически не отличались (повторяю, по моему попугаеметру, это важно). Увидя, что ситуация складывается как в рекламе "если нет разницы", я сменил свой 1800х даже не раздумывая. И, как писал выше, мои ожидания оправдались.

Наверное, есть иные варианты подобных формул. Наверное, в датацентрах свои требования, добавляются разнообразные коэффициенты ремонтопригодности, выхода из строя, обслуживания, себестоимости всей системы и т.п. Наверное, тем, кто профессионально работает с целочисленными вычислениями и линейными задачами (видео, аудио, фото) мой попугаеметр не скажет ничего полезного. Тем не менее, у меня есть небольшая надежда, что в быту некий усреднённый покупатель своим чутьём выбирает систему примерно по таким же критериям, что я обозначил выше: удельная отдача на Ватт, на цену, сильный однопоток. Перефразируя, покупатель выбирает менее жрущий и более производительный проц как однопотоке, так и в многопотоке. Если вдруг когда-нибудь данные в правом столбце моей таблички совпадут с результатами продаж ритейла - лично это мне будет очень приятно =)

Но есть ли польза другим от подобного критерия? IMHO, несложно составить прайс на б/у процы по данным таблицы. Моё мнение, что цена на б/у-железо зависит от топового проца на рынке, TDP и баллов бенчмарка б/у проца. Если Вы выставите на продажу свой б/у проц по ниже найденной из таблицы цене - Вы продадите его быстрее. Если Вы завысите цену - не продадите. Если выставите некую паритетную усреднённую цену - продадите и вернёте больше средств. Интуитивно то же самое делает любой продавец и без электронных таблиц, просто глядя на аналогичные объявления.

Закончить мне хотелось бы настоящим и будущим. Ниже часть таблички, актуальной на сентябрь 2022 г.: 

https://hsto.org/getpro/habr/upload_files/956/90c/8cb/95690c8cb62fcf0072d7839cfaecffce.png

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

З.Ы. А кто вспомнит, почему всё на свете можно измерять попугаями? =)


Резюме - бэкап от 6 ноября 2023 г.

Прочнист, инженер-прочнист, инженер-исследователь, инженер-математик Специализации: Учитель, преподаватель, педагог Инженер-конструктор, инж...