matlab empty sym,matlab解方程时返回[ empty sym ]

匿名用户

1级

2017-03-13 回答

你好

你的方程这么复杂,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无法求解符号问题,只能采用这种方法。这种方法对更加复杂的模型,也同样适应。

希望对你有帮助!

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值