/
MorSergey
/
diff-equations
Обзор
Документация
Войти
/
MorSergey
/
diff-equations
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/features/eulerSolver/model/useEulerSolver.ts
56 строк
1 KB
admin
init
22 окт 2025, 15:18
22 окт 2025, 15:18
412f98f
Код
Авторство
О чём код?
import { useState, useEffect } from 'react'; export interface EulerPoint { x: number; y: number; step: number; } export interface EulerSolverParams { x0: number; y0: number; xEnd: number; h: number; equation: (x: number, y: number) => number; } export const useEulerSolver = (params: EulerSolverParams) => { const [solution, setSolution] = useState<EulerPoint[]>([]); const [isCalculating, setIsCalculating] = useState(true); useEffect(() => { setIsCalculating(true); const { x0, y0, xEnd, h, equation } = params; const points: EulerPoint[] = []; let x = x0; let y = y0; let step = 0; // Добавляем начальную точку points.push({ x, y, step }); // Применяем метод Эйлера while (x < xEnd) { const dydx = equation(x, y); y = y + h * dydx; x = x + h; step++; points.push({ x: Math.round(x * 100) / 100, y: Math.round(y * 10000) / 10000, step }); } setSolution(points); setIsCalculating(false); }, [params.x0, params.y0, params.xEnd, params.h, params.equation]); return { solution, isCalculating }; };