| simulation library - equation(方程式) C#&F# |
|---|
|
Download source files:
この記事は 2026年2月4日 水 11:20 に作者によって編集されましたhttp://www.jkofsp.net/files/ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Simulation.Eq { class Eq2<Tx, Ty> { Tx x_value; Ty y_value; public Func<Ty, Tx> f_x_from_y; public Func<Tx, Ty> f_y_from_x; public Eq2(Tx x0, Ty y0) { x_value = x0; y_value = y0; } public Tx x() { return x_value; } public Ty y() { return y_value; } public void set_x(Tx val_x) { x_value = val_x; y_value = f_y_from_x(x_value); } public void set_y(Ty val_y) { y_value = val_y; x_value = f_x_from_y(y_value); } } class Eq3<Tx, Ty, Tz> { Tx x_value; Ty y_value; Tz z_value; public Func<Ty, Tz, Tx> f_x_from_yz; public Func<Tx, Tz, Ty> f_y_from_xz; public Func<Tx, Ty, Tz> f_z_from_xy; public Eq3(Tx x0, Ty y0, Tz z0) { x_value = x0; y_value = y0; z_value = z0; } public Tx x() { return x_value; } public Ty y() { return y_value; } public Tz z() { return z_value; } public void set_xy(Tx val_x, Ty val_y) { x_value = val_x; y_value = val_y; z_value = f_z_from_xy(x_value, y_value); } public void set_xz(Tx val_x, Tz val_z) { x_value = val_x; z_value = val_z; y_value = f_y_from_xz(x_value, z_value); } public void set_yz(Ty val_y, Tz val_z) { y_value = val_y; z_value = val_z; x_value = f_x_from_yz(y_value, z_value); } } class Eq4<Tx, Ty, Tz, Tw> { Tx x_value; Ty y_value; Tz z_value; Tw w_value; public Func<Ty, Tz, Tw, Tx> f_x_from_yzw; public Func<Tx, Tz, Tw, Ty> f_y_from_xzw; public Func<Tx, Ty, Tw, Tz> f_z_from_xyw; public Func<Tx, Ty, Tz, Tw> f_w_from_xyz; public Eq4(Tx x0, Ty y0, Tz z0, Tw w0) { x_value = x0; y_value = y0; z_value = z0; w_value = w0; } public Tx x() { return x_value; } public Ty y() { return y_value; } public Tz z() { return z_value; } public Tw w() { return w_value; } public void set_xyz(Tx val_x, Ty val_y, Tz val_z) { x_value = val_x; y_value = val_y; z_value = val_z; w_value = f_w_from_xyz(x_value, y_value, z_value); } public void set_xyw(Tx val_x, Ty val_y, Tw val_w) { x_value = val_x; y_value = val_y; w_value = val_w; z_value = f_z_from_xyw(x_value, y_value, w_value); } public void set_xzw(Tx val_x, Tz val_z, Tw val_w) { x_value = val_x; z_value = val_z; w_value = val_w; y_value = f_y_from_xzw(x_value, z_value, w_value); } public void set_yzw(Ty val_y, Tz val_z, Tw val_w) { y_value = val_y; z_value = val_z; w_value = val_w; x_value = f_x_from_yzw(y_value, z_value, w_value); } } } |
|
//F# の詳細 (http://fsharp.net)
namespace Simulation.Eq type Eq2<'Tx, 'Ty> = class val mutable x_value : 'Tx val mutable y_value : 'Ty [<DefaultValue>] val mutable f_x_from_y : 'Ty -> 'Tx [<DefaultValue>] val mutable f_y_from_x : 'Tx -> 'Ty new (x0 : 'Tx, y0 : 'Ty) = { x_value = x0; y_value = y0 } member t.x () = t.x_value member t.y () = t.y_value member t.set_x (val_x : 'Tx) = t.x_value <- val_x t.y_value <- t.f_y_from_x t.x_value () member t.set_y (val_y : 'Ty) = t.y_value <- val_y t.x_value <- t.f_x_from_y t.y_value () end type Eq3<'Tx, 'Ty, 'Tz> = class val mutable x_value : 'Tx val mutable y_value : 'Ty val mutable z_value : 'Tz [<DefaultValue>] val mutable f_x_from_yz : 'Ty -> 'Tz -> 'Tx [<DefaultValue>] val mutable f_y_from_xz : 'Tx -> 'Tz -> 'Ty [<DefaultValue>] val mutable f_z_from_xy : 'Tx -> 'Ty -> 'Tz new (x0 : 'Tx, y0 : 'Ty, z0 : 'Tz) = { x_value = x0; y_value = y0; z_value = z0 } member t.x () = t.x_value member t.y () = t.y_value member t.z () = t.z_value member t.set_xy (val_x : 'Tx) (val_y : 'Ty) = t.x_value <- val_x t.y_value <- val_y t.z_value <- t.f_z_from_xy t.x_value t.y_value () member t.set_xz (val_x : 'Tx) (val_z : 'Tz) = t.x_value <- val_x t.z_value <- val_z t.y_value <- t.f_y_from_xz t.x_value t.z_value () member t.set_yz (val_y : 'Ty) (val_z : 'Tz) = t.y_value <- val_y t.z_value <- val_z t.x_value <- t.f_x_from_yz t.y_value t.z_value () end type Eq4<'Tx, 'Ty, 'Tz, 'Tw> = class val mutable x_value : 'Tx val mutable y_value : 'Ty val mutable z_value : 'Tz val mutable w_value : 'Tw [<DefaultValue>] val mutable f_x_from_yzw : 'Ty -> 'Tz -> 'Tw -> 'Tx [<DefaultValue>] val mutable f_y_from_xzw : 'Tx -> 'Tz -> 'Tw -> 'Ty [<DefaultValue>] val mutable f_z_from_xyw : 'Tx -> 'Ty -> 'Tw -> 'Tz [<DefaultValue>] val mutable f_w_from_xyz : 'Tx -> 'Ty -> 'Tz -> 'Tw new (x0 : 'Tx, y0 : 'Ty, z0 : 'Tz, w0 : 'Tw) = { x_value = x0; y_value = y0; z_value = z0; w_value = w0 } member t.x () = t.x_value member t.y () = t.y_value member t.z () = t.z_value member t.w () = t.w_value member t.set_xyz (val_x : 'Tx) (val_y : 'Ty) (val_z : 'Tz) = t.x_value <- val_x t.y_value <- val_y t.z_value <- val_z t.w_value <- t.f_w_from_xyz t.x_value t.y_value t.z_value () member t.set_xyw (val_x : 'Tx) (val_y : 'Ty) (val_w : 'Tw) = t.x_value <- val_x t.y_value <- val_y t.w_value <- val_w t.z_value <- t.f_z_from_xyw t.x_value t.y_value t.w_value () member t.set_xzw (val_x : 'Tx) (val_z : 'Tz) (val_w : 'Tw) = t.x_value <- val_x t.z_value <- val_z t.w_value <- val_w t.y_value <- t.f_y_from_xzw t.x_value t.z_value t.w_value () member t.set_yzw (val_y : 'Ty) (val_z : 'Tz) (val_w : 'Tw) = t.y_value <- val_y t.z_value <- val_z t.w_value <- val_w t.x_value <- t.f_x_from_yzw t.y_value t.z_value t.w_value () end |