152 lines
5.6 KiB
HTML
152 lines
5.6 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Табулирование функции</title>
|
|
</head>
|
|
|
|
<body>
|
|
<h2>Табулирование функции f(x, y)</h2>
|
|
<form id="parameters">
|
|
<label for="a">Введите значение параметра a:</label>
|
|
<input type="number" id="a" name="a" min="0">
|
|
<br>
|
|
<label for="nm1">Введите значение параметра nm1 (от 2 до 6):</label>
|
|
<input type="number" id="nm1" name="nm1" min="2" max="6">
|
|
<br>
|
|
<label for="nm2">Введите значение параметра nm2 (от 2 до 6):</label>
|
|
<input type="number" id="nm2" name="nm2" min="2" max="6">
|
|
<br>
|
|
<label for="xmin">Минимальное значение x:</label>
|
|
<input type="number" id="xmin" name="xmin">
|
|
<label for="xmax">Максимальное значение x:</label>
|
|
<input type="number" id="xmax" name="xmax">
|
|
<label for="stepX">Шаг для x:</label>
|
|
<input type="number" id="stepX" name="stepX" min="0.1">
|
|
<br>
|
|
<label for="ymin">Минимальное значение y:</label>
|
|
<input type="number" id="ymin" name="ymin">
|
|
<label for="ymax">Максимальное значение y:</label>
|
|
<input type="number" id="ymax" name="ymax">
|
|
<label for="stepY">Шаг для y:</label>
|
|
<input type="number" id="stepY" name="stepY" min="0.1">
|
|
<br>
|
|
<button type="button" onclick="calculate()">Вычислить</button>
|
|
</form>
|
|
<br>
|
|
<div id="tableContainer"></div>
|
|
|
|
<script>
|
|
function calculate() {
|
|
const a = parseFloat(document.getElementById('a').value);
|
|
let nm1 = parseInt(document.getElementById('nm1').value);
|
|
let nm2 = parseInt(document.getElementById('nm2').value);
|
|
let xmin = parseFloat(document.getElementById('xmin').value);
|
|
let xmax = parseFloat(document.getElementById('xmax').value);
|
|
let ymin = parseFloat(document.getElementById('ymin').value);
|
|
let ymax = parseFloat(document.getElementById('ymax').value);
|
|
let stepX = parseFloat(document.getElementById('stepX').value);
|
|
let stepY = parseFloat(document.getElementById('stepY').value);
|
|
|
|
if (xmin >= xmax) {
|
|
temp = xmin;
|
|
xmin = xmax;
|
|
xmax = temp;
|
|
}
|
|
|
|
if (ymin >= ymax) {
|
|
temp = ymin;
|
|
ymin = ymax;
|
|
ymax = temp;
|
|
}
|
|
|
|
if (stepX <= 0)
|
|
stepX = 0.1;
|
|
|
|
if (stepY <= 0)
|
|
stepY = 0.1;
|
|
|
|
if (nm1 < 2)
|
|
nm1 = 2;
|
|
|
|
if (nm2 < 2)
|
|
nm2 = 2;
|
|
|
|
if (nm1 > 6)
|
|
nm1 = 6;
|
|
|
|
if (nm2 > 6)
|
|
nm2 = 6;
|
|
|
|
document.getElementById('xmin').value = xmin;
|
|
document.getElementById('xmax').value = xmax;
|
|
document.getElementById('ymin').value = ymin;
|
|
document.getElementById('ymax').value = ymax;
|
|
document.getElementById('stepX').value = stepX;
|
|
document.getElementById('stepY').value = stepY;
|
|
document.getElementById('nm1').value = nm1;
|
|
document.getElementById('nm2').value = nm2;
|
|
|
|
function calculateFunction(x, y) {
|
|
let result;
|
|
if (x < a) {
|
|
result = 0;
|
|
for (let n = 0; n <= nm1; n++) {
|
|
result += Math.pow(x, n) / (2 * Math.pow(y, n + 1) + x * n);
|
|
}
|
|
} else {
|
|
result = 0;
|
|
for (let n = 0; n <= nm2; n++) {
|
|
result += (3 * x + y) / (3 * factorial(n));
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
function factorial(n) {
|
|
if (n === 0 || n === 1)
|
|
return 1;
|
|
else
|
|
return n * factorial(n - 1);
|
|
}
|
|
|
|
let maxX, maxY, maxResult = -Infinity;
|
|
let minX, minY, minResult = Infinity;
|
|
|
|
let tableHtml = '<table border="1"><tr><th>x \\ y</th>';
|
|
for (let y = ymin; y <= ymax; y += stepY)
|
|
tableHtml += `<th>${y.toFixed(2)}</th>`;
|
|
tableHtml += '</tr>';
|
|
|
|
for (let x = xmin; x <= xmax; x += stepX) {
|
|
tableHtml += `<tr><th>${x.toFixed(2)}</th>`;
|
|
for (let y = ymin; y <= ymax; y += stepY) {
|
|
const result = calculateFunction(x, y);
|
|
tableHtml += `<td>${result.toFixed(2)}</td>`;
|
|
|
|
if (result > maxResult) {
|
|
maxResult = result;
|
|
maxX = x;
|
|
maxY = y;
|
|
}
|
|
if (result < minResult) {
|
|
minResult = result;
|
|
minX = x;
|
|
minY = y;
|
|
}
|
|
}
|
|
tableHtml += '</tr>';
|
|
}
|
|
tableHtml += '</table>';
|
|
|
|
tableHtml += `<p>Максимальное значение: ${maxResult.toFixed(2)} при x=${maxX.toFixed(2)} и y=${maxY.toFixed(2)}</p>`;
|
|
tableHtml += `<p>Минимальное значение: ${minResult.toFixed(2)} при x=${minX.toFixed(2)} и y=${minY.toFixed(2)}</p>`;
|
|
|
|
document.getElementById('tableContainer').innerHTML = tableHtml;
|
|
}
|
|
</script>
|
|
</body>
|
|
|
|
</html> |