如何解决在Matlab中寻找一种非常快速的寻根方法
ai
,bi
和ci
是长度为10的向量,这些向量在代码中会发生变化。此代码必须执行超过一百万次。因此,找到x
的方法必须非常快。我尝试了以下代码:
方法1:
s=tf('s');
sys=0;
for i=1:10
sys =sys+a(i)/(s*b(i)+c(i));
end
[roots1] = zpkdata(sys,'v');
在这种情况下,for
循环需要0.1秒才能完成,而[roots] = zpkdata(sys,'v');
的执行时间不到0.005秒。因此,在实际情况下,在方程sys
被zpkdata
求解之前准备好要花费一百万次的长时间。似乎矢量化操作不适用于'tf'参数类型。
接下来,我检查了以下方法: 方法2:
syms x
sys=sum(a./(x*b+c));
[roots1]=vpasolve(sys,x)
此符号方法再次变慢,花了0.13秒才能执行。
您知道适合我情况的任何快速方法吗?或者,您知道在方法1中更快地准备sys
的方法吗?
很多tnx。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。