gpt4 book ai didi

Java 编程,尝试制作一个 ODE 求解器库(面向对象编码的新手!)

转载 作者:行者123 更新时间:2023-12-02 08:09:17 24 4
gpt4 key购买 nike

我正在尝试编写一个 ODE 求解器(类似于 MATLAB 中的 ODE45)。我希望这个求解器是“独立的”,即我可以向它传递我想要它求解的 ODE 的名称,并且它运行该特定微分方程的代码。

到目前为止,我有我的主类(程序的大部分所在)和一个名为 ODEsolver 的类(ODE 求解器所在的位置)。我希望能够从我的主类调用 ODEsolver,并让 ODE 查看由字符串争论(我想要求解的 ODE 的名称)引用的方法

我设想的方式是:

public class Main {
double y[];
double x0,xf,y0;
x0 = 0;
xf = 10;
y0 = 1;

ODEsolver ode1 = new ODEsolver("name_of_ode_to_be_solved");

y = ode1.ODE45(x0,xf,y0);


}

其中 ODE45 是 ODEsolver 类中的 ODE 求解器。

但是我不知道如何使用“name_of_ode_to_be_solved”创建对该方法的调用(该方法不在 ODEsolver 中,它在 main 或其他类中)

谢谢!

最佳答案

您可能想要做的是创建一个名为 ODE_TYPE 的枚举,然后将其传递给 Factory这将创建该类型的求解器。像这样的事情:

ODESolver solver = SolverFactory.Create(ODE_TYPE.FIRST_ORDER_LINEAR);

在这种情况下,ODESolver 将被称为 Interface 。然后,您将创建几个实现该接口(interface)的具体类。枚举中的每个元素都有一个。

我在我的 C++ DE 求解器中使用了类似的东西 fdtl .

也可能出现这样的情况:您无法将构造概括得足以使用工厂模式。在这种情况下,您仍然可以从使用接口(interface)中受益,您只需直接创建具体实现即可。就像这样,

ODESolver solver = new ODE45(x0, xf, y0);

然后你会打电话

solver.solve();

关于Java 编程,尝试制作一个 ODE 求解器库(面向对象编码的新手!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7693357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com