想请教下,Grasshopper是否有方法解方程组(c#,python或者调用其他软件API)

我们在用grasshopper建模时,我们有些模型的参数需要用一个方程组解得。
目前我们的解决方案是在matlab中解方程并把数据手动输入进grasshopper。但是这是个非常麻烦的过程。所以我们想在grasshopper中求解方程组,同时把模型的某些数据和方程一起进行迭代。以下是我们进行过的尝试:
1.我们尝试使用退火算法找到方程的解,但是他貌似非常耗时且最终无法找到我们需要的解
2.我们尝试使用c#为其添加Math.Net的dll文件,我们可以成功的在头文件中using这个库并且不会报错。但是当我们引用这个库中的类时,c#会报错缺少using。这让我们很头痛。
所以我们想在此寻求大家的帮助,想得到一种可以在grasshopper中解方程组的方案。

我看到你并没有提供任何方程组
你是想要用这么宽泛的信息得到一个万能方案吗?

那会让回答者花费非常多的时间。因为这个话题太大了
不同复杂度和性质的方程组,在GH中可行的方案千差万别。

Rhino 8 现在支持 CPython 3,所以就用 Python 吧,原生 Python 有不少用于计算的库可以调用。

比如要解一个二元二次方程组

先初始化 Python 环境,在 Rhino 中执行过一次 _ScriptEditor 指令,第一次执行会自动初始化 Python 3 的运行环境。

安装 sympy 库,初始化完成后,在你的用户目录中找到 Python 环境目录:

C:\Users\你的用户名.rhinocode\py39-rh8

然后在这个目录中空白的地方按住 Shift 点击鼠标右键,“在此处打开 PowerShell 窗口”,再输入指令 cmd 通过 cmd 命令提示符进入这个目录。(win11 的话点击右键就可以直接使用 cmd,而不需要再经过 powershell)这样就可以用用这个目录中的 python 安装模块了。

在 CMD 中执行 python -m pip install sympy ,例如我的执行效果如下图:

接下来在 GhPython 中测试解方程效果:

image

选 python3

image

测试结果:

2 个赞

0.先确定方程组是否可解!!!
1.有解析解则直接使用解析解,需要手算解析解的公式。
2.不存在解析解或解析解复杂的情况下,如果函数是单调的,传统的二分查找或者牛顿法解方程就能帮到你,只需要较为简单的编程基础。
3.如果有数学运算或符号运算库提供了某类方程组的计算库,通过c#或Python调用对应的库进行使用即可,你需要的是学习基本的语言语法让自己获得最基础的debug能力,至少能解决简单的库引用问题。
4.解空间有限情况下退火算法效果远差于遍历查找。

1 个赞

感谢您的建议和回复,我的方程是一个5元方程组,由于我的方程涉及到一些论文内容所以没有放上来,但是它可以在matlab中轻易的解得结果

非常感谢您详细的解答,您的解答非常细致,作为初学者您的解答对我帮助很大。我将尝试使用您提供的方法解决我的问题。

那就试试看 sympy,有解的方程一般都能解出来。