在使用Matlab时,我是初学者。我目前正在使用7.12版本。
我的问题很简单。我需要解决一个等式(在这种情况下,我需要找到myfun等于0的位置):
myfun = @(tf) 2*pi/N+(ti-tf)*v_ang+A/(2*pi*f)*(cos(2*pi*f*tf)-cos(2*pi*f*ti));
正如您所看到的,变量是tf,其他所有变量都是常数。
我使用以下行解决它(并使用解决方案计算我存储在数组 delta_t 中的值):
delta_t(i) = (solve(myfun(t))-delta_t(i-1))*10^9;
但问题是,我必须解决很多次(实际上超过五十万次),并且你可以看到delta_t(i)
的价值取决于delta_t(i-1)
。
所以这是我的问题:如何让解决过程更快?我试过这一行:
delta_t(i) = (solve(myfun(t),'IgnoreAnalyticConstraints','true','MaxDegree','1')-delta_t(i-1))*10^9;
但它弄乱了我的代码并且我得到了一个错误,而且我并不相信它会产生很大的不同。
最重要的是,我注意到我使用解决越多,它越慢。例如,如果有10 000次迭代,则迭代次数9000处的求解速度将慢于迭代次数10处的解算次数。
我希望我很清楚,请原谅我的英语,因为这不是我的母语。
PS:我试过A=0
,它确实更快(大约快10倍),但程序运行时它仍然会变慢。