2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Номограмма метанола
Сообщение23.11.2020, 15:30 


23/11/20
5
Доброго времени суток! Есть очень важный вопрос, может есть на этом форуме компетентные и умные люди.

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

Изображение

 Профиль  
                  
 
 Re: Номограмма метанола
Сообщение23.11.2020, 15:37 
Заслуженный участник


09/05/12
25179
Качество в любом случае будет плохим, но...
1) Представить линию с концентрациями в виде двух отрезков прямых, после чего решить более-менее банальную задачу по аналитической геометрии.
2) Сделать сетку замеров для разных значений температур и концентраций, в промежутках просто линейно интерполировать результат.

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

-- 23.11.2020, 15:39 --

Да, это мгновенно гуглится. Например, вот.

 Профиль  
                  
 
 Re: Номограмма метанола
Сообщение23.11.2020, 21:01 


17/10/16
3964
SashaJir
У вас задача получить непрерывную функцию двух переменных $z=f(x,y)$ по полю известных дискретных точек $(x_i, y_j) \to z_{i,j}$. Часто точки $(x_i, y_j)$ заполняют плоскость $(x,y)$ равномерной сеткой (обычно так устроены таблицы). Обычное решение этой задачи - линейный интерполятор. Сначала вся плоскость $(x,y)$ разбивается на треугольники, вершинами которых являются наши известные точки $(x_i, y_j)$. Просто рисуете прямоугольную сетку по точкам $(x_i, y_j)$, и в каждой ячейке сетки проводите одну диагональ. Непрерывная функция $z=f(x,y)$ получается в виде такого алгоритма:

1. По заданным значениям $(x,y)$ нужно определить треугольник, в который попадает эта точка. Допустим, это треугольник с вершинами $(x_1, y_1), (x_1, y_2), (x_2, y_1)$. Им соответствуют три известные точки $z_{11}, z_{12}, z_{21}$;

2. По трем точкам $z_{11}, z_{12}, z_{21}$ нужно построить плоскость и найти значение $z$ этой плоскости для заданных $(x,y)$.

Эта задача только немного сложнее, чем линейная интерполяция функции одной переменной.

 Профиль  
                  
 
 Re: Номограмма метанола
Сообщение24.11.2020, 13:14 


23/11/20
5
Буду благодарен за расчеты, если сможете сделать.

 Профиль  
                  
 
 Re: Номограмма метанола
Сообщение24.11.2020, 13:24 
Заслуженный участник
Аватара пользователя


22/06/12
2129
/dev/zero
SashaJir в сообщении #1493939 писал(а):
если сможете сделать.

Мы-то сможем, а вы?

 Профиль  
                  
 
 Re: Номограмма метанола
Сообщение24.11.2020, 13:58 


23/11/20
5
Неможу ) вот и прошу помощи

 Профиль  
                  
 
 Re: Номограмма метанола
Сообщение24.11.2020, 16:52 
Заслуженный участник
Аватара пользователя


22/06/12
2129
/dev/zero
Ладно. Линейная интерполяция для начинающих.

Случай функции одной переменной кратко описывается так. Допустим, у нас есть зависимость плотности какого-то вещества $\rho$ от температуры $T$ (мы сделали эксперимент). Правда, эксперимент мы делали на слишком подробный, так что есть измерения плотностей для трёх температур: $T_0 = 10$, $T_1 = 20$, $T_2 = 40$. Соответствующие значения плотности пусть будут $\rho_0 = 1$, $\rho_1 = 1.2$, $\rho_2 = 1.4$ (единицы произвольные).

Мы теперь хотим узнать, чему (хотя бы примерно) на основании этих данных можно положить значение плотности при температуре, скажем, $T = 30$. Смысл линейной интерполяции: соединить точки на графике прямыми отрезками:
$$
\begin{tikzpicture}
\draw (0, 0) -- (1, 0) node [below] {$T_0$} -- (4, 0)  node [below] {$T_1$} -- (8, 0) node [below] {$T_2$}  -- (9, 0) node [pos=1, below] {$T$}
\draw (0, 0) -- (0, 0.5) node [left] {$\rho_0$} -- (0, 1.5)  node [left] {$\rho_1$} -- (0, 2.5) node [left] {$\rho_2$}  -- (0, 3) node [pos=1, left] {$\rho(T)$}
\draw [red] (1, 0.5) -- (4, 1.5)
\draw [blue] (4, 1.5) -- (8, 2.5)
\end{tikzpicture}
$$
Более точно: прямая $\rho(T)$, построенная по точкам $(T_i, \rho_i)$ и $(T_{i+1},\rho_{i+1})$
$$
\frac{\rho(T) - \rho_i}{\rho_{i+1} - \rho_i} = \frac{T - T_i}{T_{i+1} - T_i}, \qquad \rho_i \equiv \rho(T_i)
$$
(выразите отсюда $\rho$ сами). Остаётся лишь "склеить" отрезки, так как каждый следующий начинается там, где кончился предыдущий.

Упражнение: убедитесь, что можете построить линейную интерполяцию для приведённых выше трёх пар значений $\rho$ и $T$ (на птичьем языке это называется "проинтерполируйте таблицу"). Можете написать руками решение, но лучше, чтобы это сделала какая-нибудь программа (или вы напишите такую). Если не программируете, то Excel может быть лучшим выбором.
Итак, убедитесь, что ваша функция непрерывная, на каждом подотрезке $[T_0, T_1]$ и $[T_1, T_2]$ линейная и определите, чему равны значения $\rho(15)$ и $\rho(30)$.

Как сделать в двумерном случае? Рассмотрим пример. Pphantom раньше привёл ссылку на таблицу. Будем считать, что два свободных параметра это температура $T$ и концентрация $n$, а искомая функция -- плотность $\rho(n, T)$.

Для затравки рассмотрим правый нижний $2\times2$ кусочек таблицы
$$
\begin{pmatrix}
 & 40 & 60 \\
80 & 0.8280 & 0.8083 \\
90 & 0.8000 & 0.7800
\end{pmatrix}
$$

Раньше у нас была функция одной переменной, и самое простое, что можно было сделать -- соединить точки отрезками. В случае с функцией двух переменных самое простое, что можно сделать, это интерполировать её кусочками плоскостей. Плоскость натягивается на три точки, образующие невырожденный треугольник. Следовательно, нам нужно пространство параметров нарезать на такие треугольники, например, так:
$$
\begin{tikzpicture}
\draw (0, 0) -- (3, 0) node [below] {$40$} -- (6, 0)  node [below] {$60$} -- (9, 0) node [pos=1, below] {$T$}
\draw (0, 0) -- (0, 1) node [left] {$80$} -- (0, 2)  node [left] {$90$}  -- (0, 3) node [pos=1, left] {$n$}
\fill [red] (3, 1) -- (6, 1) -- (3, 2) -- cycle;
\fill [blue] (6, 2) -- (6, 1) -- (3, 2) -- cycle;
\end{tikzpicture}
$$

Теперь мы говорим: если точка $(T, n)$, в которой мы хотим вычислить $\rho$, попадает в красный треугольник, то мы будем вычислять её по одному правилу, а если в синий -- то по другому правилу.

Какие это правила? Плоскость в пространстве $f(x, y)$, проходящая через три точки $(x_0, y_0, f(x_0, y_0)), \ldots, (x_2, y_2, f(x_2, y_2))$ (не лежащие на одной прямой), имеет уравнение
$$
\begin{vmatrix}
x - x_0 && x_1 - x_0 && x_2 - x_0 \\
y - y_0 && y_1 - y_0 && y_2 - y_0 \\
f(x, y) - f(x_0, y_0) && f(x_1, y_1) - f(x_0, y_0) && f(x_2, y_2) - f(x_0, y_0)
\end{vmatrix} = 0.
$$
Отсюда можно восстановить в явном виде $f(x, y)$. Отождествляем $T$ с $x$, $n$ с $y$, $f(x, y)$ с $\rho(n, T)$. Если мы попали в синий треугольник, то набор из трёх точек у нас один, а если в красный -- то другой. Для каждого набора нужно написать уравнение плоскости. Совместно с условием выбора плоскости это и будет представлять собой линейную интерполяцию на таблице от двух переменных.

Упражнение: напишите условие попадания в красный или синий треугольник и уравнение плоскости, которое нужно написать в этих двух случаях.

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

 Профиль  
                  
 
 Re: Номограмма метанола
Сообщение28.11.2020, 08:18 


23/11/20
5
sergey zhukov в сообщении #1493886 писал(а):
SashaJir
У вас задача получить непрерывную функцию двух переменных $z=f(x,y)$ по полю известных дискретных точек $(x_i, y_j) \to z_{i,j}$. Часто точки $(x_i, y_j)$ заполняют плоскость $(x,y)$ равномерной сеткой (обычно так устроены таблицы). Обычное решение этой задачи - линейный интерполятор. Сначала вся плоскость $(x,y)$ разбивается на треугольники, вершинами которых являются наши известные точки $(x_i, y_j)$. Просто рисуете прямоугольную сетку по точкам $(x_i, y_j)$, и в каждой ячейке сетки проводите одну диагональ. Непрерывная функция $z=f(x,y)$ получается в виде такого алгоритма:

1. По заданным значениям $(x,y)$ нужно определить треугольник, в который попадает эта точка. Допустим, это треугольник с вершинами $(x_1, y_1), (x_1, y_2), (x_2, y_1)$. Им соответствуют три известные точки $z_{11}, z_{12}, z_{21}$;

2. По трем точкам $z_{11}, z_{12}, z_{21}$ нужно построить плоскость и найти значение $z$ этой плоскости для заданных $(x,y)$.

Эта задача только немного сложнее, чем линейная интерполяция функции одной переменной.




Спасибо Сергею за помощь в решении данных расчетов , всё работает , уже сделали на уровне программирования и вывели в технологический режим!

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: photon, whiterussian, profrotter, Jnrty, Aer, Парджеттер, Eule_A, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group