initial commit
This commit is contained in:
152
Лаб3/index.html
Normal file
152
Лаб3/index.html
Normal file
@@ -0,0 +1,152 @@
|
||||
<!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>
|
||||
Reference in New Issue
Block a user