在Matlab中寻找一种非常快速的寻根方法

问题描述

我正在尝试在Matlab中求解如下方程

the series (equation) to be solved for x

aibici是长度为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秒。因此,在实际情况下,在方程syszpkdata求解之前准备好要花费一百万次的长时间。似乎矢量化操作不适用于'tf'参数类型。

接下来,我检查了以下方法方法2:

syms x
sys=sum(a./(x*b+c));
[roots1]=vpasolve(sys,x)

此符号方法再次变慢,花了0.13秒才能执行。 您知道适合我情况的任何快速方法吗?或者,您知道在方法1中更快地准备sys方法吗?

很多tnx。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)