Skip to content

Instantly share code, notes, and snippets.

@trikitrok
Last active March 24, 2025 20:01
Show Gist options
  • Save trikitrok/2c6380a899db5c29c1fa6a0ab5cd368a to your computer and use it in GitHub Desktop.
Save trikitrok/2c6380a899db5c29c1fa6a0ab5cd368a to your computer and use it in GitHub Desktop.
export class ConjugatedGradient {
private readonly tolerance: number;
private readonly maxIterations: number;
constructor(tolerance: number = 1e-6, maxIterations: number = 1000) {
this.tolerance = tolerance;
this.maxIterations = maxIterations;
}
minimize(
gradFn: (x: number[]) => number[],
init: number[]
): number[] {
// minimization code...
}
// more code...
}
export class LinearDescent {
min(
gradFn: (x: number[]) => number[],
init: number[],
config: {
tolerance: number;
maxIterations: number;
learningRate: number;
}
): number[] {
// minimization code...
}
// more code...
}
///////////////////////////////////
export class ConjugatedGradient {
private readonly tolerance: number;
private readonly maxIterations: number;
constructor(tolerance: number = 1e-6, maxIterations: number = 1000) {
this.tolerance = tolerance;
this.maxIterations = maxIterations;
}
minimize(
gradFn: (x: number[]) => number[],
init: number[]
): number[] {
// minimization code...
}
// more code...
}
export class LinearDescent {
private readonly tolerance: number;
private readonly maxIterations: number;
private readonly learningRate: number;
constructor(tolerance: number = 1e-6, maxIterations: number = 1000, learningRate: number = = 0.01) {
this.tolerance = tolerance;
this.maxIterations = maxIterations;
this.learningRate = learningRate;
}
minimize(
gradFn: (x: number[]) => number[],
init: number[]
): number[] {
// minimization code...
}
// more code...
}
///////////////////////////////////
export interface Minimization {
minimize(
gradFn: (x: number[]) => number[],
init: number[]
): number[];
}
export class ConjugatedGradientMinimization implements Minimization {
private readonly tolerance: number;
private readonly maxIterations: number;
constructor(tolerance: number = 1e-6, maxIterations: number = 1000) {
this.tolerance = tolerance;
this.maxIterations = maxIterations;
}
minimize(
gradFn: (x: number[]) => number[],
init: number[]
): number[] {
// minimization code...
}
// more code...
}
export class LinearDescentMinimization implements Minimization {
private readonly tolerance: number;
private readonly maxIterations: number;
private readonly learningRate: number;
constructor(tolerance: number = 1e-6, maxIterations: number = 1000, learningRate: number = = 0.01) {
this.tolerance = tolerance;
this.maxIterations = maxIterations;
this.learningRate = learningRate;
}
minimize(
gradFn: (x: number[]) => number[],
init: number[]
): number[] {
// minimization code...
}
// more code...
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment