悬赏100,matlab如何求解方程组的解?

以下是我编写的程序:
syms R1 Z1 T1 k1t_x k1t_y k1t_z k1t_xy T2 Z2 a1 a2 a3 a4 a5
x0 = R1*cos(T1); y0 = R1*sin(T1); %R1和T1已知
[TT2 ZZ2] = solve('k1t_y*((a1*Z2^4+a2*Z2^3+a3*Z2^2+a4*Z2+a5)*cos(T2)-x0)-k1t_x*((a1*Z2^4+a2*Z2^3+a3*Z2^2+a4*Z2+a5)*sin(T2)-y0)','((Z2-Z1)*k1t_xy/k1t_z)^2-((a1*Z2^4+a2*Z2^3+a3*Z2^2+a4*Z2+a5)*cos(T2)-R1*cos(T1))^2+((a1*Z2^4+a2*Z2^3+a3*Z2^2+a4*Z2+a5)*sin(T2)-R1*sin(T1))^2',T2,Z2);%利用solve函数求解两个方程组的解
但是matlab已知处于busy状态,我怀疑是程序有误。请高手指点!100分敬上!

第1个回答  2015-05-05
1、既然solve的输入参数是字符串,上面用syms定义符号变量的意义不大。

2、R2是关于z2的4次多项式,第二个方程右边的根号里面,有R2的平方项,展开后是z2的8次方,除非一些特殊情况,否则很大可能是求不出解析解的。

给出相关参数的具体值,可以尝试用fsolve求数值解。追问

数值解应该不行,因为需要利用结果参与到一个循环体中。故目前希望得到的是解析式,不然没办法编程的,希望得到你的补充和指点!

追答

1、上面我把原因说的应该算是够清楚了吧?超过4次的代数方程是没有一般求根公式的,而你的方程展开后肯定是超过4次的,这从理论上基本上堵死了求出解析解的可能。当然,不排除个别情况下,有些特殊的高次方程可以求解析解,但一来需要方程比较特殊,二来可能需要比较敏锐的眼光和高超的技巧来发现其特殊性。恕我眼拙,至少我看不出你的这个方程组存在这种可能。

2、不知道你究竟要怎样使用得到的结果,但绝大多数用解析解可以解决的问题,用数值解应该也是没问题的。

追问

谢谢你的耐心回答,我的目的是得到符号解,然后再编程的时候就可以实现循环;
虽然matlab的solve函数中已注明无法得到四次多项式的解析解,你看有没有其他的途径得到t2和z2的符号解?
希望得到你的指教!

追答

高于四次的一般代数方程无法求出解析解,这个并非MATLAB的solve函数的局限,而是数学从理论上被严格证明了的,谁也不可能突破。
上面说了,也许对于一些特殊形式的方程有可能求出解析解,但很遗憾,我看不出你这个方程有这种可能。

追问

前几天回家了,今天早上才返校。。不好意思,最后问你一个问题,就把100分给你了。先谢谢了!

问题是:在用solve函数求解方程时,如下所示:

因为t0, kr_x ,kr_y 这三个符号变量都是向量,我希望解得的t3表达式中是向量t0(u)  kr_x(u) kr_y(u)而非符号t0, kr_x ,kr_y !

麻烦你了!

追答

你是想让解的表达式里面出现t0(u) kr_x(u) kr_y(u)这些符号?好像做不到。
如果有具体的向量数据,可以用subs函数代入。

第2个回答  2015-05-05
busy是正在运行啊,也就是正在计算,可以等一会,如果有错会报错的追问

这个我知道。用服务器计算,也一直是busy状态。就有三行代码,运算不出来肯定是存在问题的!欢迎你的补充!

相似回答