110 lines
5.0 KiB
HTML
110 lines
5.0 KiB
HTML
<!doctype html>
|
||
<html lang="ru">
|
||
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>Метод Хука-Дживса</title>
|
||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||
</head>
|
||
|
||
<body class="bg-light">
|
||
<div class="container mt-5">
|
||
<h1 class="mb-4">Метод Хука-Дживса</h1>
|
||
|
||
{% if error %}
|
||
<div class="alert alert-danger">{{ error }}</div>
|
||
{% endif %}
|
||
|
||
<form method="post" enctype="multipart/form-data" class="mb-4">
|
||
<div class="row g-3">
|
||
<div class="col-md-6">
|
||
<label class="form-label">Координаты начальной базовой точки x0</label>
|
||
<input type="text" name="x0" class="form-control" placeholder="100,100"
|
||
value='{{form_data["x0"] if form_data else ""}}'>
|
||
</div>
|
||
<div class="col-md-6">
|
||
<label class="form-label">Начальные приращения Δx</label>
|
||
<input type="text" name="delta0" class="form-control" placeholder="100,100"
|
||
value='{{form_data["delta0"] if form_data else ""}}'>
|
||
</div>
|
||
|
||
<div class="col-md-4">
|
||
<label class="form-label">Требуемая точность ε</label>
|
||
<input type="text" name="epsilon" class="form-control" placeholder="0.0001"
|
||
value='{{form_data["epsilon"] if form_data else ""}}'>
|
||
</div>
|
||
<div class="col-md-4">
|
||
<label class="form-label">Коэффициент α</label>
|
||
<input type="text" name="alpha" class="form-control" placeholder="2"
|
||
value='{{form_data["alpha"] if form_data else ""}}'>
|
||
</div>
|
||
<div class="col-md-4">
|
||
<label class="form-label">Цель:</label>
|
||
<select name="target" class="form-select">
|
||
{% for k, v in {"min": "Минимум", "max": "Максимум"}.items() %}
|
||
{% if form_data and form_data["target"] == k %}
|
||
<option selected value="{{k}}">{{v}}</option>
|
||
{% else %}
|
||
<option value="{{k}}">{{v}}</option>
|
||
{% endif %}
|
||
{% endfor %}
|
||
</select>
|
||
</div>
|
||
|
||
<div class="col-md-6">
|
||
<label class="form-label">Ограничения x1:</label>
|
||
<input type="text" name="x1r" class="form-control" placeholder="-1000,100000"
|
||
value='{{form_data["x1r"] if form_data else ""}}'>
|
||
</div>
|
||
<div class="col-md-6">
|
||
<label class="form-label">Ограничения x2:</label>
|
||
<input type="text" name="x2r" class="form-control" placeholder="-1000,100000"
|
||
value='{{form_data["x2r"] if form_data else ""}}'>
|
||
</div>
|
||
|
||
<div class="col-12">
|
||
<label class="form-label">Коэффициенты при x1 (через запятую)</label>
|
||
<textarea name="x1c" class="form-control" rows="3"
|
||
placeholder='1,1,1,1,1,1,1'>{{form_data["x1c"] if form_data else ""}}</textarea>
|
||
</div>
|
||
|
||
<div class="col-12">
|
||
<label class="form-label">Коэффициенты при x2 (через запятую)</label>
|
||
<textarea name="x2c" class="form-control" rows="3"
|
||
placeholder='1,1,1,1,1,1,1'>{{form_data["x2c"] if form_data else ""}}</textarea>
|
||
</div>
|
||
|
||
<div class="col-12">
|
||
<label class="form-label">ИЛИ загрузите JSON-файл с данными:</label>
|
||
<input type="file" name="datafile" class="form-control">
|
||
</div>
|
||
|
||
<div class="col-12 mt-3">
|
||
<button type="submit" class="btn btn-primary">Рассчитать</button>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
|
||
{% if result %}
|
||
<h4>Найденный экстремум ({{extreme.type}}):</h4>
|
||
<ul>
|
||
<li><strong>x:</strong> {{ extreme.x }}</li>
|
||
<li><strong>f(x):</strong> {{ extreme.val }}</li>
|
||
<li><strong>Погрешности:</strong> {{ extreme.x_err }}</li>
|
||
</ul>
|
||
<hr>
|
||
<h2>Промежуточные вычисления</h2>
|
||
<pre class="bg-white p-3 border">{{ log }}</pre>
|
||
|
||
<h4>Найденный экстремум ({{extreme.type}}):</h4>
|
||
<ul>
|
||
<li><strong>x:</strong> {{ extreme.x }}</li>
|
||
<li><strong>f(x):</strong> {{ extreme.val }}</li>
|
||
<li><strong>Погрешности:</strong> {{ extreme.x_err }}</li>
|
||
</ul>
|
||
{% endif %}
|
||
</div>
|
||
</body>
|
||
|
||
</html>
|