私のパッケージのユーザーに関数をより数学的な方法で定義させたいと思っています。マクロが正しい方向だと思います。問題は次のとおりです。このコードでは、ユーザーは特殊なソルバーでPDEを解決するために使用される関数を定義できます。しかし、ソルバを簡単にするために、入力の一部は、通常はそうではないと思わない方法で「行列」です。たとえば、ソルバは関数f(x,t)
を取り込むことができますが、は、x
とx[:,2]
と考えると、y
(時には3Dです)と考えられます。Julia:ベクトルエイリアシングのマクロ
大きな問題は、PDEが非線形である場合、多くの場合(反応拡散方程式のような)これらのものの名前が付けられたときにすべてをu
ベクトルに配置することです。したがって、この一般的なケースでは、私は、私のマクロfooの上嗅ぎまでないです
@mathdefine f(RA,RABP,RAR,x,y,t) = RA*RABP + RA*x + RAR*t
を書いて、それが
f(u,x,t) = u[:,1].*u[:,2] + u[:,1].*x[:,1] + u[:,3]*t
に変換持ってできるようにしたいと思いますだから私は誰かが私を始められるようにしたいと思っていた(マクロがこれに近づく正しい方法でないなら、理由を説明してください)。
ユーザーは何に翻訳されているのかを伝える必要がありますが、できるだけ使用するにはきれいであるようにしたいと思っています。だから何とかそれが空間変数にあることを知っています。 u
の一部ですが、その後はx
の一部です。