PDA

查看完整版本 : solve错在哪里?? 求助!!!


ldd00
2008-11-30, 10:52
solve错在哪里?? 求助!!!
clear all
syms x
A=[1.2 0;0 1.3];
B=A.';
C=[0.5 0;0 0.6];
D=C.';
K=[5 0;0 -3]*B*[exp(4*x-4) 0;0 exp(-x+1)]*D*C*[exp(4*x-4) 0;0 exp(-x+1)]*A;
L=B*[exp(4*x-4) 0;0 exp(-x+1)]*D*C*[exp(4*x-4) 0;0 exp(-x+1)]*A*[5 0;0 -3];
E=K+L;
y=[10 10]*[exp(x) 0;0 exp(-2*x)]*E*[exp(x) 0;0 exp(-2*x)]*[10;10];
s=solve(y,x)
s =
5/8-1/16*log(500/507)
这个程序运行后的结果很正确 可是如果我把矩阵A C改成变量的形式 为什么运行就不对了呢 ???
clear all
syms a b c d m n p q x
A=[a b;c d];
B=A.';
C=[m n;p q];
D=C.';
K=[5 0;0 -3]*B*[exp(4*x-4) 0;0 exp(-x+1)]*D*C*[exp(4*x-4) 0;0 exp(-x+1)]*A;
L=B*[exp(4*x-4) 0;0 exp(-x+1)]*D*C*[exp(4*x-4) 0;0 exp(-x+1)]*A*[5 0;0 -3];
E=K+L;
y=[10 10]*[exp(x) 0;0 exp(-2*x)]*E*[exp(x) 0;0 exp(-2*x)]*[10;10];
s=solve(y,x)
运行后出现错误为:
??? Error using ==> solve
Unable to find closed form solution.
Error in ==> sym.solve at 49
[varargout{1:max(1,nargout)}] = solve(S{:});

请高手帮忙啊!!! 想要实现y=0时 x的值 用a b c d m n p q 表示形式

debateshang
2008-11-30, 11:39
可能没有显示解我把y值直接带入solve中求解出错信息是
solve('10*(10*exp(x)*((5*m*exp(4*x-4)*a+5*n*exp(-x+1)*c)*(m*exp(4*x-4)*a+n*exp(-x+1)*c)+(5*p*exp(4*x-4)*a+5*q*exp(-x+1)*c)*(p*exp(4*x-4)*a+q*exp(-x+1)*c)+5*(m*exp(4*x-4)*a+n*exp(-x+1)*c)^2+5*(p*exp(4*x-4)*a+q*exp(-x+1)*c)^2)+10*exp(-2*x)*((-3*m*exp(4*x-4)*b-3*n*exp(-x+1)*d)*(m*exp(4*x-4)*a+n*exp(-x+1)*c)+(-3*p*exp(4*x-4)*b-3*q*exp(-x+1)*d)*(p*exp(4*x-4)*a+q*exp(-x+1)*c)+5*(m*exp(4*x-4)*a+n*exp(-x+1)*c)*(m*exp(4*x-4)*b+n*exp(-x+1)*d)+5*(p*exp(4*x-4)*a+q*exp(-x+1)*c)*(p*exp(4*x-4)*b+q*exp(-x+1)*d)))*exp(x)+10*(10*exp(x)*((5*m*exp(4*x-4)*a+5*n*exp(-x+1)*c)*(m*exp(4*x-4)*b+n*exp(-x+1)*d)+(5*p*exp(4*x-4)*a+5*q*exp(-x+1)*c)*(p*exp(4*x-4)*b+q*exp(-x+1)*d)-3*(m*exp(4*x-4)*a+n*exp(-x+1)*c)*(m*exp(4*x-4)*b+n*exp(-x+1)*d)-3*(p*exp(4*x-4)*a+q*exp(-x+1)*c)*(p*exp(4*x-4)*b+q*exp(-x+1)*d))+10*exp(-2*x)*((-3*m*exp(4*x-4)*b-3*n*exp(-x+1)*d)*(m*exp(4*x-4)*b+n*exp(-x+1)*d)+(-3*p*exp(4*x-4)*b-3*q*exp(-x+1)*d)*(p*exp(4*x-4)*b+q*exp(-x+1)*d)-3*(m*exp(4*x-4)*b+n*exp(-x+1)*d)^2-3*(p*exp(4*x-4)*b+q*exp(-x+1)*d)^2))*exp(-2*x)')
??? Error using ==> solve at 162
Unable to find closed form solution

debateshang
2008-11-30, 11:40
clear all
clc
syms a b c d m n p q
A=[a b;c d];
C=[m n;p q];
syms x
% A=[1.2 0;0 1.3];
% C=[0.5 0;0 0.6];
k1=C*[exp(4*x-4) 0;0 exp(-x+1)]*A;
K=[5 0;0 -3]*k1.'*k1;
L=k1.'*k1*[5 0;0 -3];
E=K+L;
F=[exp(x) 0;0 exp(-2*x)]*[10;10];
y=F.'*E*F;
% solve(y)

ldd00
2008-11-30, 15:15
你的这个还是不行啊???

debateshang
2008-12-01, 11:22
我的意思是你这种设法有问题,可能matlab中无法处理
solve('a*b-d*exp(x-3)+exp(-4*x+2)=0','x');
??? Error using ==> solve at 162Unable to find closed form solution.
解这个方程matlab都解不出解析解,字母太多在matlab里可能就没法讨论了
这就像五次方程没有一般系数解
solve('a*x^5+b*x^4+c*x^3+d*x^2+m*x+n','x');
??? Error using ==> solve at 162
Unable to find closed form solution.
但是
solve('3*x^5+1*x^4+2*x^3+4*x^2+2*x+1')

ans =

.50436452606242968189338746040867+1.0358328721587116228614551628226*i
-.23178710110867900315683730233415+.48181007825073643046183194749188*i
-.87848818324083469080643364948239
-.23178710110867900315683730233415-.48181007825073643046183194749188*i
.50436452606242968189338746040867-1.0358328721587116228614551628226*i
就能解