DmitrMakeev commited on
Commit
418e38e
·
verified ·
1 Parent(s): 38f87bd

Update calculate.html

Browse files
Files changed (1) hide show
  1. calculate.html +30 -14
calculate.html CHANGED
@@ -28,6 +28,8 @@
28
  <label>S в K₂SO₄:</label><input id="s_content_k2so4" value="18" step="0.1"><br>
29
  <label>NH4 в NH₄NO₃:</label><input id="nh4_content_nh4no3" value="17" step="0.1"><br>
30
  <label>NO3 в NH₄NO₃:</label><input id="no3_content_nh4no3" value="17" step="0.1"><br>
 
 
31
 
32
  <h3>Требуемые концентрации (мг/л):</h3>
33
  <label>NO3:</label><input id="no3" value="210"><br>
@@ -45,17 +47,15 @@
45
 
46
  <script>
47
  const DENSITY_DATA = {
48
- "NH4NO3": [[5, 1.001], [10, 1.003], [15, 1.0049], [20, 1.0069], [25, 1.0089], [30, 1.0109], [35, 1.0128], [40, 1.0148], [45, 1.0168], [50, 1.0187], [55, 1.0207], [60, 1.0227], [65, 1.0246], [70, 1.0266], [75, 1.0285], [80, 1.0305], [85, 1.0324], [90, 1.0344], [95, 1.0363], [100, 1.0383], [105, 1.0402], [110, 1.0422], [115, 1.0441], [120, 1.046], [125, 1.048], [130, 1.0499], [135, 1.0518], [140, 1.0538], [145, 1.0557], [150, 1.0576], [155, 1.0595], [160, 1.0614], [165, 1.0634], [170, 1.0653], [175, 1.0672], [180, 1.0691], [185, 1.071], [190, 1.0729], [195, 1.0748], [200, 1.0767], [205, 1.0786], [210, 1.0805], [215, 1.0824], [220, 1.0843], [225, 1.0862], [230, 1.0881], [235, 1.09], [240, 1.0918], [245, 1.0937], [250, 1.0956], [255, 1.0975], [260, 1.0994], [265, 1.1012], [270, 1.1031], [275, 1.105], [280, 1.1069], [285, 1.1087], [290, 1.1106], [295, 1.1124], [300, 1.1143], [305, 1.1162], [310, 1.118], [315, 1.1199], [320, 1.1217], [325, 1.1236], [330, 1.1254], [335, 1.1273], [340, 1.1291], [345, 1.1309], [350, 1.1328], [355, 1.1346], [360, 1.1365], [365, 1.1383], [370, 1.1401], [375, 1.1419], [380, 1.1438], [385, 1.1456], [390, 1.1474], [395, 1.1492], [400, 1.151], [405, 1.1529], [410, 1.1547], [415, 1.1565], [420, 1.1583], [425, 1.1601], [430, 1.1619], [435, 1.1637], [440, 1.1655], [445, 1.1673], [450, 1.1691], [455, 1.1709], [460, 1.1727], [465, 1.1745], [470, 1.1763], [475, 1.1781], [480, 1.1798], [485, 1.1816], [490, 1.1834], [495, 1.1852], [500, 1.187], [505, 1.1887], [510, 1.1905], [515, 1.1923], [520, 1.194], [525, 1.1958], [530, 1.1976], [535, 1.1993], [540, 1.2011], [545, 1.2028], [550, 1.2046], [555, 1.2063], [560, 1.2081], [565, 1.2098], [570, 1.2116], [575, 1.2133], [580, 1.2151], [585, 1.2168], [590, 1.2185], [595, 1.2203], [600, 1.222], [605, 1.2237], [610, 1.2255], [615, 1.2272], [620, 1.2289], [625, 1.2306], [630, 1.2324], [635, 1.2341], [640, 1.2358], [645, 1.2375], [650, 1.2392], [655, 1.2409], [660, 1.2426], [665, 1.2443], [670, 1.246], [675, 1.2477], [680, 1.2494], [685, 1.2511], [690, 1.2528]],
49
- "Ca(NO3)2": [[5, 1.0027], [10, 1.0063], [15, 1.01], [20, 1.0136], [25, 1.0172], [30, 1.0209], [35, 1.0245], [40, 1.0281], [45, 1.0317], [50, 1.0353], [55, 1.0389], [60, 1.0425], [65, 1.0461], [70, 1.0497], [75, 1.0533], [80, 1.0568], [85, 1.0604], [90, 1.064], [95, 1.0675], [100, 1.0711], [105, 1.0746], [110, 1.0782], [115, 1.0817], [120, 1.0852], [125, 1.0887], [130, 1.0923], [135, 1.0958], [140, 1.0993], [145, 1.1028], [150, 1.1063], [155, 1.1097], [160, 1.1132], [165, 1.1167], [170, 1.1202], [175, 1.1236], [180, 1.1271], [185, 1.1306], [190, 1.134], [195, 1.1374], [200, 1.1409], [205, 1.1443], [210, 1.1477], [215, 1.1512], [220, 1.1546], [225, 1.158], [230, 1.1614], [235, 1.1648], [240, 1.1682], [245, 1.1716], [250, 1.1749], [255, 1.1783], [260, 1.1817], [265, 1.185], [270, 1.1884], [275, 1.1918], [280, 1.1951], [285, 1.1984], [290, 1.2018], [295, 1.2051], [300, 1.2084], [305, 1.2117], [310, 1.2151], [315, 1.2184], [320, 1.2217], [325, 1.225], [330, 1.2283], [335, 1.2315], [340, 1.2348], [345, 1.2381], [350, 1.2414], [355, 1.2446], [360, 1.2479], [365, 1.2511], [370, 1.2544], [375, 1.2576], [380, 1.2608], [385, 1.2641], [390, 1.2673], [395, 1.2705], [400, 1.2737], [405, 1.2769], [410, 1.2801], [415, 1.2833], [420, 1.2865], [425, 1.2897], [430, 1.2929], [435, 1.296], [440, 1.2992], [445, 1.3024], [450, 1.3055], [455, 1.3087], [460, 1.3118], [465, 1.3149], [470, 1.3181], [475, 1.3212], [480, 1.3243], [485, 1.3274], [490, 1.3305], [495, 1.3337], [500, 1.3368], [505, 1.3398], [510, 1.3429], [515, 1.346], [520, 1.3491], [525, 1.3522], [530, 1.3552], [535, 1.3583], [540, 1.3613], [545, 1.3644], [550, 1.3674], [555, 1.3705], [560, 1.3735], [565, 1.3765], [570, 1.3795], [575, 1.3825], [580, 1.3855], [585, 1.3885], [590, 1.3915], [595, 1.3945], [600, 1.3975], [605, 1.4005], [610, 1.4035], [615, 1.4064], [620, 1.4094], [625, 1.4124], [630, 1.4153], [635, 1.4183], [640, 1.4212]],
50
- "MgSO4": [[5, 1.0038], [10, 1.0087], [15, 1.0135], [20, 1.0183], [25, 1.0231], [30, 1.0279], [35, 1.0326], [40, 1.0374], [45, 1.0421], [50, 1.0468], [55, 1.0515], [60, 1.0562], [65, 1.0609], [70, 1.0656], [75, 1.0702], [80, 1.0749], [85, 1.0795], [90, 1.0841], [95, 1.0887], [100, 1.0933], [105, 1.0979], [110, 1.1025], [115, 1.107], [120, 1.1115], [125, 1.1161], [130, 1.1206], [135, 1.1251], [140, 1.1295], [145, 1.134], [150, 1.1385], [155, 1.1429], [160, 1.1473], [165, 1.1518], [170, 1.1562], [175, 1.1605], [180, 1.1649], [185, 1.1693], [190, 1.1736], [195, 1.178], [200, 1.1823], [205, 1.1866], [210, 1.1909], [215, 1.1952], [220, 1.1994], [225, 1.2037], [230, 1.2079], [235, 1.2121], [240, 1.2164], [245, 1.2206], [250, 1.2248], [255, 1.2289], [260, 1.2331], [265, 1.2372], [270, 1.2414], [275, 1.2455], [280, 1.2496], [285, 1.2537], [290, 1.2578], [295, 1.2618], [300, 1.2659], [305, 1.2699], [310, 1.2739], [315, 1.278], [320, 1.282], [325, 1.2859], [330, 1.2899], [335, 1.2939], [340, 1.2978]],
51
- "Mg(NO3)2": [[5, 1.0017], [10, 1.0053], [15, 1.009], [20, 1.0127], [25, 1.0163], [30, 1.02], [35, 1.0236], [40, 1.0272], [45, 1.0309], [50, 1.0345], [55, 1.0381], [60, 1.0417], [65, 1.0453], [70, 1.0489], [75, 1.0525], [80, 1.0561], [85, 1.0597], [90, 1.0633], [95, 1.0668], [100, 1.0704], [105, 1.0739], [110, 1.0775], [115, 1.081], [120, 1.0846], [125, 1.0881], [130, 1.0916], [135, 1.0952], [140, 1.0987], [145, 1.1022], [150, 1.1057], [155, 1.1092], [160, 1.1127], [165, 1.1161], [170, 1.1196], [175, 1.1231], [180, 1.1266], [185, 1.13], [190, 1.1335], [195, 1.1369], [200, 1.1404], [205, 1.1438], [210, 1.1472], [215, 1.1506], [220, 1.1541], [225, 1.1575], [230, 1.1609], [235, 1.1643], [240, 1.1677], [245, 1.1711], [250, 1.1744], [255, 1.1778], [260, 1.1812], [265, 1.1845], [270, 1.1879], [275, 1.1912], [280, 1.1946], [285, 1.1979], [290, 1.2013]],
52
- "KNO3": [[5, 1.0011], [10, 1.0042], [15, 1.0073], [20, 1.0104], [25, 1.0134], [30, 1.0165], [35, 1.0196], [40, 1.0226], [45, 1.0257], [50, 1.0287], [55, 1.0318], [60, 1.0348], [65, 1.0378], [70, 1.0408], [75, 1.0439], [80, 1.0469], [85, 1.0499], [90, 1.0529], [95, 1.0559], [100, 1.0589], [105, 1.0618], [110, 1.0648], [115, 1.0678], [120, 1.0708], [125, 1.0737], [130, 1.0767], [135, 1.0796], [140, 1.0826], [145, 1.0855], [150, 1.0884], [155, 1.0914], [160, 1.0943], [165, 1.0972], [170, 1.1001], [175, 1.103], [180, 1.1059], [185, 1.1088], [190, 1.1117], [195, 1.1146], [200, 1.1174], [205, 1.1203], [210, 1.1232], [215, 1.126], [220, 1.1289], [225, 1.1317], [230, 1.1346], [235, 1.1374], [240, 1.1402], [245, 1.1431], [250, 1.1459], [255, 1.1487], [260, 1.1515], [265, 1.1543], [270, 1.1571], [275, 1.1599], [280, 1.1627]],
53
- "K2SO4": [[5, 1.002], [10, 1.006], [15, 1.0099], [20, 1.0139], [25, 1.0178], [30, 1.0218], [35, 1.0257], [40, 1.0297], [45, 1.0336], [50, 1.0375], [55, 1.0413], [60, 1.0452], [65, 1.049], [70, 1.0529], [75, 1.0567], [80, 1.0604], [85, 1.0642], [90, 1.0679], [95, 1.0716], [100, 1.0753], [105, 1.0789], [110, 1.0825]],
54
- "KH2PO4": [[5, 1.0016], [10, 1.0051], [15, 1.0087], [20, 1.0122], [25, 1.0157], [30, 1.0191], [35, 1.0226], [40, 1.026], [45, 1.0294], [50, 1.0328], [55, 1.0362], [60, 1.0395], [65, 1.0429], [70, 1.0462], [75, 1.0495], [80, 1.0527], [85, 1.056], [90, 1.0592], [95, 1.0624], [100, 1.0656], [105, 1.0688], [110, 1.0719]],
55
- "Ca(NO3)2*4H2O": [[5, 1.0015], [10, 1.0041], [15, 1.0066], [20, 1.0092], [25, 1.0117], [30, 1.0142], [35, 1.0167], [40, 1.0193], [45, 1.0218], [50, 1.0243], [55, 1.0268], [60, 1.0293], [65, 1.0318], [70, 1.0343], [75, 1.0368], [80, 1.0393], [85, 1.0418], [90, 1.0443], [95, 1.0468], [100, 1.0493], [105, 1.0518], [110, 1.0543], [115, 1.0568], [120, 1.0592], [125, 1.0617], [130, 1.0642], [135, 1.0667], [140, 1.0691], [145, 1.0716], [150, 1.0741], [155, 1.0765], [160, 1.079], [165, 1.0814], [170, 1.0839], [175, 1.0863], [180, 1.0888], [185, 1.0912], [190, 1.0937], [195, 1.0961], [200, 1.0985], [205, 1.101], [210, 1.1034], [215, 1.1058], [220, 1.1083], [225, 1.1107], [230, 1.1131], [235, 1.1155], [240, 1.1179], [245, 1.1203], [250, 1.1227], [255, 1.1252], [260, 1.1276], [265, 1.13], [270, 1.1324], [275, 1.1347], [280, 1.1371], [285, 1.1395], [290, 1.1419], [295, 1.1443], [300, 1.1467], [305, 1.1491], [310, 1.1514], [315, 1.1538], [320, 1.1562], [325, 1.1585], [330, 1.1609], [335, 1.1633], [340, 1.1656], [345, 1.168], [350, 1.1703], [355, 1.1727], [360, 1.175], [365, 1.1774], [370, 1.1797], [375, 1.1821], [380, 1.1844], [385, 1.1867], [390, 1.1891], [395, 1.1914], [400, 1.1937], [405, 1.196], [410, 1.1984], [415, 1.2007], [420, 1.203], [425, 1.2053], [430, 1.2076], [435, 1.2099], [440, 1.2122], [445, 1.2145], [450, 1.2168], [455, 1.2191], [460, 1.2214], [465, 1.2237], [470, 1.226], [475, 1.2283], [480, 1.2306], [485, 1.2329], [490, 1.2351], [495, 1.2374], [500, 1.2397], [505, 1.2419], [510, 1.2442], [515, 1.2465], [520, 1.2487], [525, 1.251], [530, 1.2532], [535, 1.2555], [540, 1.2578], [545, 1.26], [550, 1.2622], [555, 1.2645], [560, 1.2667], [565, 1.269], [570, 1.2712], [575, 1.2734], [580, 1.2757], [585, 1.2779], [590, 1.2801], [595, 1.2823], [600, 1.2845], [605, 1.2868], [610, 1.289], [615, 1.2912], [620, 1.2934], [625, 1.2956], [630, 1.2978], [635, 1.3], [640, 1.3022], [645, 1.3044], [650, 1.3066], [655, 1.3087], [660, 1.3109], [665, 1.3131], [670, 1.3153], [675, 1.3175], [680, 1.3196], [685, 1.3218], [690, 1.324], [695, 1.3261], [700, 1.3283], [705, 1.3305], [710, 1.3326], [715, 1.3348], [720, 1.3369], [725, 1.3391], [730, 1.3412], [735, 1.3434], [740, 1.3455], [745, 1.3476], [750, 1.3498], [755, 1.3519], [920, 1.4208]],
56
- "MgSO4*7H2O": [[5, 1.0014], [10, 1.0037], [15, 1.0061], [20, 1.0084], [25, 1.0108], [30, 1.0132], [35, 1.0155], [40, 1.0178], [45, 1.0202], [50, 1.0225], [55, 1.0249], [60, 1.0272], [65, 1.0295], [70, 1.0318], [75, 1.0342], [80, 1.0365], [85, 1.0388], [90, 1.0411], [95, 1.0434], [100, 1.0457], [105, 1.048], [110, 1.0503], [115, 1.0526], [120, 1.0549], [125, 1.0572], [130, 1.0595], [135, 1.0618], [140, 1.0641], [145, 1.0663], [150, 1.0686], [155, 1.0709], [160, 1.0732], [165, 1.0754], [170, 1.0777], [175, 1.0799], [180, 1.0822], [185, 1.0844], [190, 1.0867], [195, 1.0889], [200, 1.0912], [205, 1.0934], [210, 1.0957], [215, 1.0979], [220, 1.1001], [225, 1.1023], [230, 1.1046], [235, 1.1068], [240, 1.109], [245, 1.1112], [250, 1.1134], [255, 1.1156], [260, 1.1178], [265, 1.12], [270, 1.1222], [275, 1.1244], [280, 1.1266], [285, 1.1288], [290, 1.131], [295, 1.1332], [300, 1.1354], [305, 1.1375], [310, 1.1397], [315, 1.1419], [320, 1.144], [325, 1.1462], [330, 1.1484], [335, 1.1505], [340, 1.1527], [345, 1.1548], [350, 1.157], [355, 1.1591], [360, 1.1613], [365, 1.1634], [370, 1.1655], [375, 1.1677], [380, 1.1698], [385, 1.1719], [390, 1.174], [395, 1.1761], [400, 1.1783], [405, 1.1804], [410, 1.1825], [415, 1.1846], [420, 1.1867], [425, 1.1888], [430, 1.1909], [435, 1.193], [440, 1.1951], [445, 1.1971], [450, 1.1992], [455, 1.2013], [460, 1.2034], [465, 1.2055], [470, 1.2075], [475, 1.2096], [480, 1.2117], [485, 1.2137], [490, 1.2158], [495, 1.2178], [500, 1.2199], [505, 1.2219], [510, 1.224], [515, 1.226], [520, 1.228], [525, 1.2301], [530, 1.2321], [535, 1.2341], [540, 1.2362], [545, 1.2382], [550, 1.2402], [555, 1.2422], [560, 1.2442], [565, 1.2462], [570, 1.2482], [575, 1.2502], [580, 1.2522], [585, 1.2542], [590, 1.2562], [595, 1.2582], [600, 1.2602], [605, 1.2622], [610, 1.2642], [615, 1.2662], [620, 1.2681], [625, 1.2701], [630, 1.2721], [635, 1.274], [640, 1.276], [645, 1.2779], [650, 1.2799], [655, 1.2819], [660, 1.2838], [665, 1.2857], [670, 1.2877], [675, 1.2896], [680, 1.2916], [685, 1.2935], [690, 1.2954], [695, 1.2974]],
57
- "Mg(NO3)2*6H2O": [[5, 1.0001], [10, 1.0023], [15, 1.0044], [20, 1.0065], [25, 1.0086], [30, 1.0107], [35, 1.0129], [40, 1.015], [45, 1.0171], [50, 1.0192], [55, 1.0213], [60, 1.0234], [65, 1.0255], [70, 1.0276], [75, 1.0297], [80, 1.0318], [85, 1.0339], [90, 1.036], [95, 1.0381], [100, 1.0402], [105, 1.0423], [110, 1.0443], [115, 1.0464], [120, 1.0485], [125, 1.0506], [130, 1.0527], [135, 1.0547], [140, 1.0568], [145, 1.0589], [150, 1.0609], [155, 1.063], [160, 1.0651], [165, 1.0671], [170, 1.0692], [175, 1.0713], [180, 1.0733], [185, 1.0754], [190, 1.0774], [195, 1.0795], [200, 1.0815], [205, 1.0836], [210, 1.0856], [215, 1.0877], [220, 1.0897], [225, 1.0917], [230, 1.0938], [235, 1.0958], [240, 1.0978], [245, 1.0999], [250, 1.1019], [255, 1.1039], [260, 1.106], [265, 1.108], [270, 1.11], [275, 1.112], [280, 1.114], [285, 1.116], [290, 1.1181], [295, 1.1201], [300, 1.1221], [305, 1.1241], [310, 1.1261], [315, 1.1281], [320, 1.1301], [325, 1.1321], [330, 1.1341], [335, 1.1361], [340, 1.1381], [345, 1.1401], [350, 1.142], [355, 1.144], [360, 1.146], [365, 1.148], [370, 1.15], [375, 1.152], [380, 1.1539], [385, 1.1559], [390, 1.1579], [395, 1.1598], [400, 1.1618], [405, 1.1638], [410, 1.1657], [415, 1.1677], [420, 1.1697], [425, 1.1716], [430, 1.1736], [435, 1.1755], [440, 1.1775], [445, 1.1794], [450, 1.1814], [455, 1.1833], [460, 1.1853], [465, 1.1872], [470, 1.1891], [475, 1.1911], [480, 1.193], [485, 1.195], [490, 1.1969], [495, 1.1988], [500, 1.2007]]
58
- };
59
 
60
  function getDensity(fertilizer, mass) {
61
  const data = DENSITY_DATA[fertilizer];
@@ -83,7 +83,8 @@
83
  "MgSO4*7H2O": { Mg: parseFloat(document.getElementById("mg_content_mgso4").value) / 100, S: parseFloat(document.getElementById("s_content_mgso4").value) / 100 },
84
  "Mg(NO3)2*6H2O": { Mg: parseFloat(document.getElementById("mg_content_mgno3").value) / 100, NO3: parseFloat(document.getElementById("n_content_mgno3").value) / 100 },
85
  "K2SO4": { K: parseFloat(document.getElementById("k_content_k2so4").value) / 100, S: parseFloat(document.getElementById("s_content_k2so4").value) / 100 },
86
- "NH4NO3": { NH4: parseFloat(document.getElementById("nh4_content_nh4no3").value) / 100, NO3: parseFloat(document.getElementById("no3_content_nh4no3").value) / 100 }
 
87
  };
88
 
89
  // Целевые концентрации
@@ -104,7 +105,7 @@
104
  const calcElements = { NO3: 0, NH4: 0, P: 0, K: 0, Ca: 0, Mg: 0, S: 0, Cl: 0 };
105
  let remaining = { ...need };
106
 
107
- // Итеративный расчёт
108
  for (let i = 0; i < 10; i++) {
109
  for (const [id, elements] of Object.entries(fertilizers)) {
110
  const sorted = Object.entries(elements)
@@ -114,10 +115,25 @@
114
  if (!primary || remaining[primary] <= 0) continue;
115
 
116
  let weight = remaining[primary] / elements[primary];
117
- weights[id] = (weights[id] || 0) + weight;
118
 
 
119
  for (const [elem, value] of Object.entries(elements)) {
120
  const contribution = weight * value;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  calcElements[elem] += contribution;
122
  remaining[elem] = (need[elem] || 0) - calcElements[elem];
123
  }
 
28
  <label>S в K₂SO₄:</label><input id="s_content_k2so4" value="18" step="0.1"><br>
29
  <label>NH4 в NH₄NO₃:</label><input id="nh4_content_nh4no3" value="17" step="0.1"><br>
30
  <label>NO3 в NH₄NO₃:</label><input id="no3_content_nh4no3" value="17" step="0.1"><br>
31
+ <label>K в KCl:</label><input id="k_content_kcl" value="52.4" step="0.1"><br>
32
+ <label>Cl в KCl:</label><input id="cl_content_kcl" value="47.6" step="0.1"><br>
33
 
34
  <h3>Требуемые концентрации (мг/л):</h3>
35
  <label>NO3:</label><input id="no3" value="210"><br>
 
47
 
48
  <script>
49
  const DENSITY_DATA = {
50
+ "NH4NO3": [[5, 1.001], [690, 1.2528]],
51
+ "Ca(NO3)2*4H2O": [[5, 1.0015], [920, 1.4208]],
52
+ "MgSO4*7H2O": [[5, 1.0014], [695, 1.2974]],
53
+ "Mg(NO3)2*6H2O": [[5, 1.0001], [500, 1.2007]],
54
+ "KNO3": [[5, 1.0011], [280, 1.1627]],
55
+ "K2SO4": [[5, 1.002], [110, 1.0825]],
56
+ "KH2PO4": [[5, 1.0016], [110, 1.0719]],
57
+ "KCl": [[5, 1.002], [100, 1.045]] // Примерные данные для KCl
58
+ };
 
 
59
 
60
  function getDensity(fertilizer, mass) {
61
  const data = DENSITY_DATA[fertilizer];
 
83
  "MgSO4*7H2O": { Mg: parseFloat(document.getElementById("mg_content_mgso4").value) / 100, S: parseFloat(document.getElementById("s_content_mgso4").value) / 100 },
84
  "Mg(NO3)2*6H2O": { Mg: parseFloat(document.getElementById("mg_content_mgno3").value) / 100, NO3: parseFloat(document.getElementById("n_content_mgno3").value) / 100 },
85
  "K2SO4": { K: parseFloat(document.getElementById("k_content_k2so4").value) / 100, S: parseFloat(document.getElementById("s_content_k2so4").value) / 100 },
86
+ "NH4NO3": { NH4: parseFloat(document.getElementById("nh4_content_nh4no3").value) / 100, NO3: parseFloat(document.getElementById("no3_content_nh4no3").value) / 100 },
87
+ "KCl": { K: parseFloat(document.getElementById("k_content_kcl").value) / 100, Cl: parseFloat(document.getElementById("cl_content_kcl").value) / 100 }
88
  };
89
 
90
  // Целевые концентрации
 
105
  const calcElements = { NO3: 0, NH4: 0, P: 0, K: 0, Ca: 0, Mg: 0, S: 0, Cl: 0 };
106
  let remaining = { ...need };
107
 
108
+ // Итеративный расчёт с ограничением превышения
109
  for (let i = 0; i < 10; i++) {
110
  for (const [id, elements] of Object.entries(fertilizers)) {
111
  const sorted = Object.entries(elements)
 
115
  if (!primary || remaining[primary] <= 0) continue;
116
 
117
  let weight = remaining[primary] / elements[primary];
118
+ weights[id] = weight; // Перезаписываем, а не суммируем
119
 
120
+ // Проверяем вклад и корректируем вес, чтобы не превысить цель
121
  for (const [elem, value] of Object.entries(elements)) {
122
  const contribution = weight * value;
123
+ if (calcElements[elem] + contribution > need[elem]) {
124
+ weight = (need[elem] - calcElements[elem]) / value;
125
+ weights[id] = weight > 0 ? weight : 0;
126
+ }
127
+ }
128
+
129
+ // Обнуляем предыдущий вклад этого удобрения
130
+ for (const [elem] of Object.entries(elements)) {
131
+ calcElements[elem] -= (weights[id] * elements[elem] || 0);
132
+ }
133
+
134
+ // Добавляем новый вклад
135
+ for (const [elem, value] of Object.entries(elements)) {
136
+ const contribution = weights[id] * value;
137
  calcElements[elem] += contribution;
138
  remaining[elem] = (need[elem] || 0) - calcElements[elem];
139
  }