Index 扉へ 首頁
人類の品種・宇宙人・系外銀河など
simulation library - equation(方程式) C#&F#
0   商湯      2026年2月4日 水 11:00
Download source files:
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);
       }
   }
}
この記事は 2026年2月4日 水 11:20 に作者によって編集されました
1   商湯      2026年2月4日 水 11:01
//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
名前      編集用パスワード(省略可)    パスワードの記憶
数式 αβγ IPA http:// 画像 B I U 上 下
(添付ファイルは http://www.jkofsp.net/up/ にアップロードしてください)