wszc 发表于 2007-4-25 11:01

求助 关于计算速度问题

各位大虾:
我在编程计算中遇到如下问题,特求救:
在编程过程中通过一系列计算得到u1表达式:
u1=vpa(u1,5); 结果为:(u1=-.26167e-2*(3122.*cos(b)*sin(-.98477+t)-3122.*sin(b)*cos(-.98477+t)+17934.*sin(b)+17695.*sin(-.98477+t))/sin(b))
在后续程序中需用到以上式子:
for b=0.7:0.01:1.3
    for t=-0.25:0.01:0.3
      u=subs(u1);
……
end
end
发现在计算过程中计算速度很慢,但如果把u1直接赋给u把程序修改为:
for b=0.7:0.01:1.3
    for t=-0.25:0.01:0.3
      u=-.26167e-2*(3122.*cos(b)*sin(-.98477+t)-3122.*sin(b)*cos(-.98477+t)+17934.*sin(b)+17695.*sin(-.98477+t))/sin(b);
……
end
end
计算速度会提高n倍。但是在实际计算过程中,u1表达式是随输入值不同而变化的,所以只能采用上面那种编程方法。
请问有什么方法可以提高计算速度吗??   是不是还有其他编程方法呢??
谢谢了

sffei 发表于 2007-4-25 11:54

把u1定义为一个函数试试

wszc 发表于 2007-4-25 19:45

上面这位仁兄你的意思是把u1=vpa(u1,5); 定义为一个函数,
如fuction   U1
X=vpa(u1,5);
然后调用的时候该为
for b=0.7:0.01:1.3
    for t=-0.25:0.01:0.3
      u=U1;
……
end
end
是这个意思吗   这样的话是不是每次运算的时候还是跟以前一样需要调用subs吗??
我先试试看。
页: [1]
查看完整版本: 求助 关于计算速度问题