liyouyuan204 发表于 2008-6-3 21:08

一个关于用matlab求解的问题!!

各位大虾,本人在matlab的编程中碰到这样的问题:
首先,我定义了变量u,b,t,和xm,ym,zm,O,wp,wt。
其中,u,b,t是基本变量。
后六个是中间变量,位于同一个矩阵M11(4*4维)中。有一个已知矩阵M12(4*4维),通过两个矩阵之间存在的关系,我先求出了O,wp,和wt三个参量。它们都是时间t的函数,以三角函数的形式。。再把求得的O,wp,wt代入另一个等式,求出了xm,ym,zm。显然,xm,ym,zm是O,wp,wt的函数,也是时间和的复合函数。。。。
表达式比较复杂。。

O =

asin(4863672900147119/18014398509481984*cos(t)+2463199295058969/36028797018963968*sin(t)-4324783911088443/144115188075855872)



wp =

atan((4503135383440651/144115188075855872*sin(6427830122158951/2251799813685248*t)*(4866048990928703/18014398509481984*cos(t)+2464402662402611/36028797018963968*sin(t))+cos(6427830122158951/2251799813685248*t)*(4866048990928703/18014398509481984*sin(t)-2464402662402611/36028797018963968*cos(t))+540389719910427/562949953421312*sin(6427830122158951/2251799813685248*t))/(4503135383440651/144115188075855872*cos(6427830122158951/2251799813685248*t)*(4866048990928703/18014398509481984*cos(t)+2464402662402611/36028797018963968*sin(t))-sin(6427830122158951/2251799813685248*t)*(4866048990928703/18014398509481984*sin(t)-2464402662402611/36028797018963968*cos(t))+540389719910427/562949953421312*cos(6427830122158951/2251799813685248*t)))



wt =

atan((-5932896912120729/9007199254740992*cos(t)-6428758846860149/9007199254740992*sin(t)-2127370900952109/288230376151711744)/(-6319599061303149/9007199254740992*cos(t)+3136171107072699/4503599627370496*sin(t)-1331233512846315/288230376151711744))

这样,M11就成了一个关于时间t的函数矩阵。。。。。。
然后,再运用几何方面的知识,求得一个函数表达式f,f包含u,b,和t三个基本变量,而且前面求得的六个中间变量也以t的函数的形式包含在f中。。
再由f解出u的关于b,t的表达式(u和f呈线性关系),再把u的表达式代入到f中去,这样f就是b和t的二元函数了。。。。
问题是:当我进行上述运算时,由于f的表达式过于复杂,在求解u的表达式的时候变得很困难,电脑内存大量被占用,运算速度很慢很慢!!
我不知道如何处理。。。既能保证运算的精度,也能让电脑有一定的计算速度 。。。。。
请各位前辈多多指教啊!!!

sigma665 发表于 2008-6-3 21:26

回复 楼主 的帖子

数值方法求解

liyouyuan204 发表于 2008-6-3 21:41

回复 2楼 的帖子

可否详细一些。。
我在求解的过程中一直需要用到eval函数,而对于较复杂的式子,此函数似乎耗时比较多。。
再则,我觉得这些求解的步骤似乎不好简化,不知道大虾们有没有更好的算法之类的,请多多指教哈!!!
偶还是一只菜鸟,所以有些问题提得不当的地方,请大家见谅!!
页: [1]
查看完整版本: 一个关于用matlab求解的问题!!