| 12345678910111213141516171819202122232425262728293031323334 |
- import { SingleVarFunction } from './functions'
- export interface Point {
- x: number
- y: number
- }
- export interface OneStepInfo {
- gradient: number
- deltaX: number
- resultPoint: Point
- }
- export class GradientDescent {
- private targetFunction: SingleVarFunction
- private currentPoint: Point = { x: 0, y: 0 }
- constructor(targetFunction: SingleVarFunction, initialPoint: Point) {
- this.targetFunction = targetFunction
- this.currentPoint = initialPoint
- }
- oneStep(learningRate: number): OneStepInfo {
- const x = this.currentPoint.x
- const gradient = this.targetFunction.df(x)
- const deltaX = -learningRate * gradient
- const resultX = x + deltaX
- const resultPoint = { x: resultX, y: this.targetFunction.f(resultX) }
- this.currentPoint = resultPoint
- return { gradient, deltaX, resultPoint }
- }
- }
|