加快MatlabFunction或使用替代品
15的观点(30天)
显示旧的评论
芬恩布希
2020年4月17日
你好,
我正在处理一个大方程(事实上36 -向量与每个)~ 15.000字符,使用MatlabFunction试图让一个函数。我们的目标是得到一个函数可以尽快评估,因为它是一个系统的一部分的ODE求解器来解决。本身只包含多项式方程3和根的程度(^ 3/2。)但没有罪,因为等。。调用MatlabFunction花了超过18个小时,现在我不得不改变方程,我真的不想等待完整的18个小时。设置优化假为宜,或者这将会使我的评估时间变得更糟吗?有其他选项MatlabFunction旁边吗?我不太熟悉这种东西我从来没有花这么长时间处理计算。
非常感谢您的帮助!
23日评论
芬恩布希
2020年4月19日
它需要使用符号表达式计算是只需要做一次。Precalculating并使用MatlabFunction将提高实际解决过程的速度(这是一个灵活的多体系统仿真的一部分)。我可以把脚本,如果有帮助。出我的目标是让一个函数的解决方案实际值尽可能快,我发现precalculating象征性地帮助很大。
约翰D 'Errico
2020年4月19日
往往,这些巨大的事情没完没了的方程导致一些数学和数值无用的——不可信。它看起来令人印象深刻,但那又怎样?可能会有数值问题评估,混乱。巨大的内部减去取消并不少见,因此,即使是在一个给定的计算数学上是正确的,它是数字垃圾。
你能使用GPU或并行计算做些什么?遗憾的是。MatlabFunction是一个象征性的工具,它不适合并行。gpu并行&工具是伟大的,当你需要做同样的事情一遍又一遍。不在这里。
就像我说的,看起来让人印象深刻。这听起来令人印象深刻——采取18个小时只是过程。电脑是伟大的,对吧?
祝你好运。得到一些咖啡在你等候,读好,长时间的书。
约翰D 'Errico
2020年4月19日
芬恩,你误解了。没有人说你是吹牛。我的观点是它太容易挂在一台电脑的想法产生了这些方程,因此他们是正确的,任何来自于他们是有意义的。记住,任何模型仅仅是一个近似的过程。一个简单的模型可能更有用,因为它可以做出有效预测使用它。然后艺术归结为哪些术语是安全地排除在外。
不管怎样,当你最终代码运行时,它会产生一个结果,一些预测。你需要验证你所得到的。其结果有意义吗?是符合现实吗?这样所有的代码是一个模型的过程。但是你的模型预测的东西似乎是合理的吗?第一个过滤器是你的眼睛,你应该知道什么是现实的。这不是一个有效性的证据,但只是一个援助的直觉,你可能做了合理的事情。
如果你接受这个结果为“真理”因为电脑生产它,那么你是在自找麻烦。电脑是不可靠的。他们只是做你要求他们做的事情。就可以,然后更决定性的测试来验证结果。事实往往是你甚至可以找到方法来驱动一个复杂的系统产生预期的简单的结果。你的模型验证结果吗?
就像我说的,不要相信这样一个复杂的结果计算,直到你可以验证计算。
darova
2020年4月19日
是什么
潜艇
吗?多少钱
matlabFunction
需要计算吗?
vars1 = [e (:)”, [a、b、h], [x, y, z], lamμ);
抽搐
A =潜艇(老兄vars1 2 *兰德(大小(vars1)));
双(一个)
toc
%运行时间是30.214898秒。
芬恩布希
2020年4月19日
MatlabFunction把< < 1毫秒计算。
我使用的模型是基于连续介质力学和主要验证。我不能改变模型本身的论文中,我比较不同模型的一部分。它将符合现实和我有了其他模型进行验证。
答案(1)
史蒂文的主
2022年11月28日
cd (tempdir)
信谊a b c d阳性
信谊x
s =解决(* x ^ 3 + b * x ^ 2 + c * x + d = = 0, x, MaxDegree = 3);
年代是一个相当复杂的表达式,但最终答案可以简化通过使用临时的子表达式。但这种简化会导致长文件(虽然简单表达式和短行)和长时间创建文件。
抽搐
matlabFunction(年代,文件=“cubicSolver1.m”,优化= true);
toc
运行时间是0.477392秒。
dbtypecubicSolver1.m
1函数s = cubicSolver1 (a, b, c, d) 2% cubicSolver1 3% s = cubicSolver1 (a, b, c, d) 4 5%这个函数生成的符号数学工具箱9.2版。11月28 - 6%——2022 14:57:43 7 8 t2 = b。^ 2;9 t3 = b。^ 3;10 t4 = 1.0. /;11 t7 = sqrt (3.0);12 t5 = t4。^ 2;13个t6 = t4。^ 3;14 t8 = (b * t4)。/ 3.0;15 t9 = (c * t4)。/ 3.0;16 t10 = (d * t4)。/ 2.0; 17 t11 = -t8; 18 t12 = -t10; 19 t13 = (b.*c.*t5)./6.0; 20 t15 = (t2.*t5)./9.0; 21 t16 = (t3.*t6)./2.7e+1; 22 t14 = -t13; 23 t17 = -t15; 24 t18 = -t16; 25 t19 = t9+t17; 26 t21 = t10+t14+t16; 27 t20 = t19.^3; 28 t22 = t21.^2; 29 t23 = t20+t22; 30 t24 = sqrt(t23); 31 t25 = t12+t13+t18+t24; 32 t26 = t25.^(1.0./3.0); 33 t27 = 1.0./t26; 34 t28 = t26./2.0; 35 t29 = -t28; 36 t30 = t19.*t27; 37 t31 = t30./2.0; 38 t32 = t26+t30; 39 t33 = t7.*t32.*5.0e-1i; 40 s = [t11+t26-t30;t11+t29+t31-t33;t11+t29+t31+t33];
抽搐
matlabFunction(年代,文件=“cubicSolver2.m”,优化= false);
toc
运行时间是0.121004秒。
dbtypecubicSolver2.m
1函数s = cubicSolver2 (a, b, c, d) 2% cubicSolver2 3% s = cubicSolver2 (a, b, c, d) 4 5%这个函数生成的符号数学工具箱9.2版。11月28 - 6%——2022 14:57:43 7 8 et1 = (c / 3.0 (. *) - (1.0. / ^ 2。* b。^ 2) / 9.0)。* 1.0. / ((d。* (1.0. / 2.0)) / a - (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 +√((d / 2.0 (. *) + (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 - (1.0. / ^ 2。* b。* c) / 6.0)。^ 2 + (c / 3.0 (. *) - (1.0. / ^ 2。* b。^ 2) / 9.0)。^ 3) + (1.0. / ^ 2。* b。* c) / 6.0)。^ (1.0. / 3.0);9 et2 = ((d。* (1.0. / 2.0)) / a - (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 +√((d / 2.0 (. *) + (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 - (1.0. / ^ 2。* b。* c) / 6.0)。^ 2 + (c / 3.0 (. *) - (1.0. / ^ 2。* b。^ 2) / 9.0)。^ 3) + (1.0. / ^ 2。* b。* c) / 6.0)。^ (1.0. / 3.0);10 et3 = ((c / 3.0 (. *) - (1.0. / ^ 2。* b。^ 2) / 9.0)。* 1.0. / ((d。* (1.0. / 2.0)) / a - (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 +√((d / 2.0 (. *) + (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 - (1.0. / ^ 2。* b。* c) / 6.0)。^ 2 + (c / 3.0 (. *) - (1.0. / ^ 2。* b。^ 2) / 9.0)。^ 3) + (1.0. / ^ 2。* b。* c) / 6.0)。^ (1.0. / 3.0))。/ 2.0 +√(3.0) * (et1 + et2)。* 5.0 e-1i-b. / 3.0 (. *);11 et4 = ((d。* (1.0. / 2.0)) / a - (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 +√((d / 2.0 (. *) + (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 - (1.0. / ^ 2。* b。* c) / 6.0)。^ 2 + (c / 3.0 (. *) - (1.0. / ^ 2。* b。^ 2) / 9.0)。^ 3) + (1.0. / ^ 2。* b。* c) / 6.0)。^ (1.0. / 3.0)。* (1.0. / 2.0);12 et5 = (c / 3.0 (. *), (1.0. / ^ 2。* b。^ 2) / 9.0)。* 1.0. / ((d。* (1.0. / 2.0)) / a - (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 +√((d / 2.0 (. *) + (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 - (1.0. / ^ 2。* b。* c) / 6.0)。^ 2 + (c / 3.0 (. *) - (1.0. / ^ 2。* b。^ 2) / 9.0)。^ 3) + (1.0. / ^ 2。* b。* c) / 6.0)。^ (1.0. / 3.0);13 et6 = ((d。* (1.0. / 2.0)) / a - (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 +√((d / 2.0 (. *) + (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 - (1.0. / ^ 2。* b。* c) / 6.0)。^ 2 + (c / 3.0 (. *) - (1.0. / ^ 2。* b。^ 2) / 9.0)。^ 3) + (1.0. / ^ 2。* b。* c) / 6.0)。^ (1.0. / 3.0);14 et7 = ((c / 3.0 (. *) - (1.0. / ^ 2。* b。^ 2) / 9.0)。* 1.0. / ((d。* (1.0. / 2.0)) / a - (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 +√((d / 2.0 (. *) + (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 - (1.0. / ^ 2。* b。* c) / 6.0)。^ 2 + (c / 3.0 (. *) - (1.0. / ^ 2。* b。^ 2) / 9.0)。^ 3) + (1.0. / ^ 2。* b。* c) / 6.0)。^ (1.0. / 3.0))。/ 2.0 -√(3.0) * (et5 + et6)。* 5.0 e-1i-b. / 3.0 (. *);15 et8 = ((d。* (1.0. / 2.0)) / a - (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 +√((d / 2.0 (. *) + (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 - (1.0. / ^ 2。* b。* c) / 6.0)。^ 2 + (c / 3.0 (. *) - (1.0. / ^ 2。* b。^ 2) / 9.0)。^ 3) + (1.0. / ^ 2。* b。* c) / 6.0)。^ (1.0. / 3.0)。* (1.0. / 2.0);16 et9 = - (c / 3.0 (. *) - (1.0. / ^ 2。* b。^ 2) / 9.0)。* 1.0. / ((d。* (1.0. / 2.0)) / a - (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 +√((d / 2.0 (. *) + (1.0. / ^ 3。* b。^ 3)。/ 2.7 e + 1 - (1.0. / ^ 2。* b。* c) / 6.0)。^ 2 + (c / 3.0 (. *) - (1.0. / ^ 2。* b。^ 2) / 9.0)。^ 3) + (1.0. / ^ 2。* b。* c) / 6.0)。^ (1.0. / 3.0) b / (a。* 3.0); 17 et10 = ((d.*(-1.0./2.0))./a-(1.0./a.^3.*b.^3)./2.7e+1+sqrt((d./(a.*2.0)+(1.0./a.^3.*b.^3)./2.7e+1-(1.0./a.^2.*b.*c)./6.0).^2+(c./(a.*3.0)-(1.0./a.^2.*b.^2)./9.0).^3)+(1.0./a.^2.*b.*c)./6.0).^(1.0./3.0); 18 s = [et9+et10;et7+et8;et3+et4];
0评论
一个错误发生
无法完成的行动,因为页面所做的更改。重新加载页面更新状态。
你也可以从下面的列表中选择一个网站
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。