matlab解方程时返回[ empty sym ]
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/16 14:41:40
matlab解方程时返回[ empty sym ]
f=3.125;
w=8.2;
syms omega;
gp=(((100*(omega-5).*f)./(((omega-5).^2-w^2).^2+(2*(omega-5).*f).^2))+0.55)/1.6;
a=(w^2-2*f^2)/2;
b=sqrt(w^4+4*f^4-4*f^2)/2;
m=sqrt(a+b);
n=sqrt(b-a);
c=125*f/(16*m*n*(n^2+m^2));
syms T;
d1=-n*(m^2+n^2)*exp(-n*T)*cos((5-m+omega)*T);
d2=(m^2+n^2)*(5-m+omega)*exp(-n*T)*sin((5-m+omega)*T);
d3=n*(m^2+n^2);
dm=2*(n^2+(5-m+omega)^2);
d=(d1+d2+d3)/dm;
e1=-n*(m^2+n^2)*exp(-n*T)*cos((5-m-omega)*T);
e2=(m^2+n^2)*(5-m-omega)*exp(-n*T)*sin((5-m-omega)*T);
e3=n*(m^2+n^2);
em=2*(n^2+(5-m-omega)^2);
e=(e1+e2+e3)/em;
g1=(n*(m^2-n^2)-2*m*n*(5+m+omega))*exp(-n*T)*cos((5+m+omega)*T);
g2=(-(m^2-n^2)*(5+m+omega)-2*m*n^2)*exp(-n*T)*sin((5+m+omega)*T);
g3=-n*(m^2-n^2)+2*m*n*(5+m+omega);
gm=2*(n^2+(5+m+omega)^2);
g=(g1+g2+g3)/gm;
k1=(n*(m^2-n^2)-2*m*n*(5+m-omega))*exp(-n*T)*cos((5+m-omega)*T);
k2=(-(m^2-n^2)*(5+m-omega)-2*m*n^2)*exp(-n*T)*sin((5+m-omega)*T);
k3=-n*(m^2-n^2)+2*m*n*(5+m-omega);
km=2*(n^2+(5+m-omega)^2);
k=(k1+k2+k3)/km;
gpt=d+e-g-k;
solve('gp-gpt',omega)
Warning:Explicit solution could not be found.
> In solve at 98
ans =
[ empty sym ]
上面是程序,gp是关于omega的函数,gpt是关于omega和T的函数,希望能从方程gp=gpt中接触omega和T的关系,可是总出错,
f=3.125;
w=8.2;
syms omega;
gp=(((100*(omega-5).*f)./(((omega-5).^2-w^2).^2+(2*(omega-5).*f).^2))+0.55)/1.6;
a=(w^2-2*f^2)/2;
b=sqrt(w^4+4*f^4-4*f^2)/2;
m=sqrt(a+b);
n=sqrt(b-a);
c=125*f/(16*m*n*(n^2+m^2));
syms T;
d1=-n*(m^2+n^2)*exp(-n*T)*cos((5-m+omega)*T);
d2=(m^2+n^2)*(5-m+omega)*exp(-n*T)*sin((5-m+omega)*T);
d3=n*(m^2+n^2);
dm=2*(n^2+(5-m+omega)^2);
d=(d1+d2+d3)/dm;
e1=-n*(m^2+n^2)*exp(-n*T)*cos((5-m-omega)*T);
e2=(m^2+n^2)*(5-m-omega)*exp(-n*T)*sin((5-m-omega)*T);
e3=n*(m^2+n^2);
em=2*(n^2+(5-m-omega)^2);
e=(e1+e2+e3)/em;
g1=(n*(m^2-n^2)-2*m*n*(5+m+omega))*exp(-n*T)*cos((5+m+omega)*T);
g2=(-(m^2-n^2)*(5+m+omega)-2*m*n^2)*exp(-n*T)*sin((5+m+omega)*T);
g3=-n*(m^2-n^2)+2*m*n*(5+m+omega);
gm=2*(n^2+(5+m+omega)^2);
g=(g1+g2+g3)/gm;
k1=(n*(m^2-n^2)-2*m*n*(5+m-omega))*exp(-n*T)*cos((5+m-omega)*T);
k2=(-(m^2-n^2)*(5+m-omega)-2*m*n^2)*exp(-n*T)*sin((5+m-omega)*T);
k3=-n*(m^2-n^2)+2*m*n*(5+m-omega);
km=2*(n^2+(5+m-omega)^2);
k=(k1+k2+k3)/km;
gpt=d+e-g-k;
solve('gp-gpt',omega)
Warning:Explicit solution could not be found.
> In solve at 98
ans =
[ empty sym ]
上面是程序,gp是关于omega的函数,gpt是关于omega和T的函数,希望能从方程gp=gpt中接触omega和T的关系,可是总出错,
你的方程这么复杂,matlab在符号计算没有mathmatic等强(可能这个软件业解不出来),它求出来显示解(机器不是万能的),像这么复杂的方程,给你点建议:
手工加电脑简化方程,再试试.
用数值算法(fsolve)计算.不能求出omega与T的关系.(推荐)
假设你用数值算法,可以把这些方程保存为一个函数,给omega和T一个任意初始值,求最后的方程eq=gp-gpt为0的解.
例如:将下面的代码保存为testt.m函数.
function eq=testt(OT)
omega=OT(1);
T=OT(2);
f=3.125;
w=8.2;
% syms omega;
gp=(((100*(omega-5).*f)./(((omega-5).^2-w^2).^2+(2*(omega-5).*f).^2))+0.55)/1.6;
a=(w^2-2*f^2)/2;
b=sqrt(w^4+4*f^4-4*f^2)/2;
m=sqrt(a+b);
n=sqrt(b-a);
c=125*f/(16*m*n*(n^2+m^2));
% syms T;
d1=-n*(m^2+n^2)*exp(-n*T)*cos((5-m+omega)*T);
d2=(m^2+n^2)*(5-m+omega)*exp(-n*T)*sin((5-m+omega)*T);
d3=n*(m^2+n^2);
dm=2*(n^2+(5-m+omega)^2);
d=(d1+d2+d3)/dm;
e1=-n*(m^2+n^2)*exp(-n*T)*cos((5-m-omega)*T);
e2=(m^2+n^2)*(5-m-omega)*exp(-n*T)*sin((5-m-omega)*T);
e3=n*(m^2+n^2);
em=2*(n^2+(5-m-omega)^2);
e=(e1+e2+e3)/em;
g1=(n*(m^2-n^2)-2*m*n*(5+m+omega))*exp(-n*T)*cos((5+m+omega)*T);
g2=(-(m^2-n^2)*(5+m+omega)-2*m*n^2)*exp(-n*T)*sin((5+m+omega)*T);
g3=-n*(m^2-n^2)+2*m*n*(5+m+omega);
gm=2*(n^2+(5+m+omega)^2);
g=(g1+g2+g3)/gm;
k1=(n*(m^2-n^2)-2*m*n*(5+m-omega))*exp(-n*T)*cos((5+m-omega)*T);
k2=(-(m^2-n^2)*(5+m-omega)-2*m*n^2)*exp(-n*T)*sin((5+m-omega)*T);
k3=-n*(m^2-n^2)+2*m*n*(5+m-omega);
km=2*(n^2+(5+m-omega)^2);
k=(k1+k2+k3)/km;
gpt=d+e-g-k;
eq=gp-gpt;
然后在命令窗口中输入下面的代码:
clear,clc
x0=[2 2];
[xj,fval]=fsolve(@testt,x0)
求解结果如下:
xj = -56.2901 42.6107;
fval = -2.5612e-010;
fval 已经接近于0,说明求解已经收敛,
这只是另外一种变通的方法,有时matlab无法求解符号问题,只能采用这种方法.这种方法对更加复杂的模型,也同样适应.
再问: 是我选错函数了,我的目的是想求出omega和T的关系,数值的也可以,请问大神matlab中应该怎么做呢。
再答: 请仔细看上面我写的代码,求出的xj = -56.2901 42.6107;就是omega=-56.2901时,T=42.6107的解。程序的第二行与第三行有说明。
手工加电脑简化方程,再试试.
用数值算法(fsolve)计算.不能求出omega与T的关系.(推荐)
假设你用数值算法,可以把这些方程保存为一个函数,给omega和T一个任意初始值,求最后的方程eq=gp-gpt为0的解.
例如:将下面的代码保存为testt.m函数.
function eq=testt(OT)
omega=OT(1);
T=OT(2);
f=3.125;
w=8.2;
% syms omega;
gp=(((100*(omega-5).*f)./(((omega-5).^2-w^2).^2+(2*(omega-5).*f).^2))+0.55)/1.6;
a=(w^2-2*f^2)/2;
b=sqrt(w^4+4*f^4-4*f^2)/2;
m=sqrt(a+b);
n=sqrt(b-a);
c=125*f/(16*m*n*(n^2+m^2));
% syms T;
d1=-n*(m^2+n^2)*exp(-n*T)*cos((5-m+omega)*T);
d2=(m^2+n^2)*(5-m+omega)*exp(-n*T)*sin((5-m+omega)*T);
d3=n*(m^2+n^2);
dm=2*(n^2+(5-m+omega)^2);
d=(d1+d2+d3)/dm;
e1=-n*(m^2+n^2)*exp(-n*T)*cos((5-m-omega)*T);
e2=(m^2+n^2)*(5-m-omega)*exp(-n*T)*sin((5-m-omega)*T);
e3=n*(m^2+n^2);
em=2*(n^2+(5-m-omega)^2);
e=(e1+e2+e3)/em;
g1=(n*(m^2-n^2)-2*m*n*(5+m+omega))*exp(-n*T)*cos((5+m+omega)*T);
g2=(-(m^2-n^2)*(5+m+omega)-2*m*n^2)*exp(-n*T)*sin((5+m+omega)*T);
g3=-n*(m^2-n^2)+2*m*n*(5+m+omega);
gm=2*(n^2+(5+m+omega)^2);
g=(g1+g2+g3)/gm;
k1=(n*(m^2-n^2)-2*m*n*(5+m-omega))*exp(-n*T)*cos((5+m-omega)*T);
k2=(-(m^2-n^2)*(5+m-omega)-2*m*n^2)*exp(-n*T)*sin((5+m-omega)*T);
k3=-n*(m^2-n^2)+2*m*n*(5+m-omega);
km=2*(n^2+(5+m-omega)^2);
k=(k1+k2+k3)/km;
gpt=d+e-g-k;
eq=gp-gpt;
然后在命令窗口中输入下面的代码:
clear,clc
x0=[2 2];
[xj,fval]=fsolve(@testt,x0)
求解结果如下:
xj = -56.2901 42.6107;
fval = -2.5612e-010;
fval 已经接近于0,说明求解已经收敛,
这只是另外一种变通的方法,有时matlab无法求解符号问题,只能采用这种方法.这种方法对更加复杂的模型,也同样适应.
再问: 是我选错函数了,我的目的是想求出omega和T的关系,数值的也可以,请问大神matlab中应该怎么做呢。
再答: 请仔细看上面我写的代码,求出的xj = -56.2901 42.6107;就是omega=-56.2901时,T=42.6107的解。程序的第二行与第三行有说明。
matlab求解方程,显示empty sym
matlab运行syms x;s=solve(x^3+cos(x)) 为什么结果总是[ empty sym ]啊,
matlab问题请教,运行时出现错误信息:Conversion to logical from sym is not p
matlab Error using ==> sym.mpower
matlab中的sym()函数问题
matlab问题:x:[1x1 sym]是什么
Matlab sym的指令意义和格式
matlab中 [2x1 sym] 是什么意思啊
各位大神们,我在用matlab解一个高次方程时出了问题.它只给我返回了一个虚根.
matlab中subs函数subs(sym(f),findsym(sym(f)),a) f是一个函数,
MATLAB sym 定义函数 怎么定义自变量的定义域
Matlab中使用solve命令出现sym问题