Получение из двух сплавов третьего

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

  • как получить золото 750 пробы из золота 585 пробы и монеты 900 пробы?
  • как сделать серебряный припой из серебра заданной пробы и латуни?
  • как сделать золотой припой из коронок и золота 585 пробы?

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

Дано:

a_i — состав первого сплава, то есть, список долей каждого из компонентов (i принимает значения от 1 до N, где N — число компонентов сплава, при этом сумма всех долей равна единице);
b_i — состав второго сплава;
r_i — состав результирующего сплава.

Найти:

x_i — массы компонентов добавки (относительно массы первого сплава);
y — массу второго сплава (относительно массы первого сплава);

Обозначения:

z — масса добавки (относительно массы первого сплава);
c_i — состав добавки (аналогично a_i, b_i и r_i).

Решение:

Состав результирующего сплава: r_i~=~{a_i~+~b_i y~+~c_i z}/{1~+~y~+~z}, отсюда состав добавки (x_i=c_i z): x_i~=~r_i~*~(1~+~y~+~z)~-~a_i~-~b_i y   (1)   .
Мы получили систему из N уравнений с N+2 неизвестными (x_i, y и z). Для того, чтобы существовало единственное решение, необходимо добавить еще два каких-то условия.
Например, для нас было бы полезно, если бы в составе добавки отсутствовали какие-нибудь два компонента (это поможет сэкономить на чистых металлах). Выберем компоненты с номерамии n и m. Условие их отсутствия выглядит как x_n=x_m=0 . Отсюда получаем систему из двух уравнений:
(r_n~-~b_n)*~y~+~r_n z~=~a_n~-~r_n;       (2)
(r_m~-~b_m)*~y~+~r_m z~=~a_m~-~r_m
Решив эту систему, получим
y~=~{r_m a_n~-~r_n a_m}/{r_n b_m~-~r_m b_n}   (3);     z~=~{(r_n~-~b_n)*(a_m~-~r_m)~-~(r_m~-~b_m)*(a_n~-~r_n)}/{r_n b_m~-~r_m b_n}   (4).
Подставив эти значения в (1), мы получим искомые x_i.
Формально задача решена, но на практике мы обнаруживаем некоторые неприятные нюансы.
Во-первых, значение определителя системы (2) D=r_n b_m-~r_m b_n может оказаться равным нулю, что приведет к невозможности вычислить значения y и z. Во-вторых, в некоторых случаях искомые величины могут принимать отрицательные значения, что для нас не допустимо, поскольку мы можем только что-то добавлять в сплав, но никак не вычитать.
Во всех этих случаях следует изменить хотя бы один из номеров n и m, то есть, выбрать другую пару компонентов добавки, которые мы хотим свести к нулю.

Примеры

1. Получение желтого золотого сплава 750 пробы из красного 585 и монеты 900 пробы

Выбираем n=1, m=3 и по формулам (3), (4) и (1) получаем результат: на 1 г первого сплава нужно добавить 4,75 г второго и 0,73 г серебра:
tabular{111111}{111111}{{} Au Ag Cu {} a_i {0,585} {0,080} {0,335} {D=-0,038} b_i {0,900} 0 {0,100} {y=4,75} r_i {0,750} {0,125} {0,125} {} x_i 0 {0,73} 0 {z=0,73}}

Теперь попробуем выбрать n=1 и m=2. В результате получаем отрицательные веса:
tabular{111111}{111111}{{} Au Ag Cu {} a_i {0,585} {0,080} {0,335} {D=-0,113} b_i {0,900} 0 {0,100} {y=-0,117} r_i {0,750} {0,125} {0,125} {} x_i 0 0 {-0,243} {z=-0,243}}
То есть, при таком выборе реального решения нет.

2. Получение серебряного припоя из серебра 925 пробы и латуни-63

tabular{111111}{111111}{{} Ag Cu Zn {} a_i {0,925} {0,075} 0 {D=0,474} b_i 0 {0,63} {0,37} {y=0,175} r_i {0,750} {0,150} {0,100} {} x_i 0 0 {0,059} {z=0,059}}
То есть, на 1 г серебра 925 пробы нужно добавить 0,175 г латуни и 0,059 г цинка. (Надо заметить, что латунь бывает разная по составу, и этот состав нужно точно знать, чтобы использовать в расчетах.)

3. Получение золотого припоя 750 пробы из припоя 585 и золота 958

При выборе n=1 и m=3 получаем корректный результат:
tabular{111111}{11111111}{{} Au Ag Cu Zn Cd {} a_i {0,585} {0,150} {0,205} {0,030} {0,030} {D=-0,064} b_i {0,958} 0 {0,042} 0 0 {y=1,481} r_i {0,750} {0,060} {0,100} {0,020} {0,070} {} x_i 0 {0,01} 0 {0,023} {0,157} {z=0,191}}

4. Пример с нулевым определителем

Выбрав n=1 и m=2, получаем D=0 и отсутствие решения:
tabular{111111}{111111}{{} Au Ag Cu {} a_i {0,900} 0 {0,100} {D=0} b_i {0,500} {0,100} {0,400} {y=infty} r_i {0,750} {0,150} {0,100} {} x_i ? ? ? {z=infty}}

Заменив m на m=3, получим приемлемый результат:
tabular{111111}{111111}{{} Au Ag Cu {} a_i {0,900} 0 {0,100} {D=0,25} b_i {0,500} {0,100} {0,400} {y=0,06} r_i {0,750} {0,150} {0,100} {} x_i 0 {0,180} 0 {z=0,18}}

Способы расчетов

  • Вычисления «столбиком» и при помощи калькулятора здесь весьма затруднительны из-за большого количества арифметических действий.
  • Можно воспользоваться электронными таблицами, с особой внимательностью занеся в нужные ячейки нужные значения и формулы, однако, вероятность ошибки остается высокой.
  • Как и прежде, можно заставить кого-нибудь посчитать, но, скорее всего, придется уже либо платить деньги, либо применять насилие.
  • Лучше всего — использовать программу Alloy, в которой уже реализован приведенный здесь алгоритм вычислений, и вам останется только ввести исходные значения и нажать кнопку «Вычислить».
Обсуждение (4)
  1. Илья Евгеньевич:

    Нужная и полезная информация. СПАСИБО!

  2. Лабань Михаил:

    Благодарствую. Добра Вам и успехов.

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

Поделитесь своим мнением
Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>