查看: 251|回复: 3|关注: 0

[已解决] solve求解方程,如何去掉不存在的根

[复制链接]

新手

15 麦片

财富积分


050


17

主题

64

帖子

0

最佳答案
  1. <div>d=0.01;%m
  2. </div>sum_freq=3000;%Hz
  3. freq_step=100;
  4. freq=1000:freq_step:sum_freq;
  5. fd=freq.*d;

  6. omiga=(2.*pi.*freq)';
  7. ct1=2260;
  8. ct2=3251;
  9. u1=4.55e10;
  10. u2=8.29e10;
  11. rho1=8.9e3;
  12. rho2=7.84e3;
  13. wd=(omiga.*d);
  14. [m n]=size(wd);
  15. aa=u2./u1;

  16. for i=1:length(wd)
  17. cp=sym('cp');
  18.   cp=double(solve(tan((wd(i)./cp).*(sqrt((cp./ct1).^2-1)))-(u2./u1).*(sqrt((1-(cp./ct2).^2)./((cp./ct1).^2-1)))==0))
  19. %   cp= strrep(cp',[], nan)
  20.   cp_new(i)=cp;
  21. end
复制代码
各位大佬,我在用solve求解上述方程时,遇到当i=18时,会出现错误: Empty matrix: 0-by-1,但是i=1:17是可以得到解的,我想问下,怎么能在程序中设置,当出现这种错误的时候,就把这个解设置为nan,因为我后续还要用cp画图,cp的对应位置与另一个参数的对应位置需要一致,请各位大神帮忙

新手

15 麦片

财富积分


050


17

主题

64

帖子

0

最佳答案
 楼主| 发表于 2019-8-31 20:28:25 | 显示全部楼层
大神们,大家帮忙看看啊,在线等,请大家指教~~

论坛优秀回答者

权威

3778 麦片

财富积分



3

主题

3959

帖子

844

最佳答案
  • 关注者: 178
发表于 2019-9-2 18:00:11 | 显示全部楼层 |此回复为最佳答案
小红石头 发表于 2019-8-31 20:28
大神们,大家帮忙看看啊,在线等,请大家指教~~

cp=double(solve(tan((wd(i)./cp).*(sqrt((cp./ct1).^2-1)))-(u2./u1).*(sqrt((1-(cp./ct2).^2)./((cp./ct1).^2-1)))==0));
if isempty(cp)
cp_new(i)=nan;end

新手

15 麦片

财富积分


050


17

主题

64

帖子

0

最佳答案
 楼主| 发表于 2019-9-2 21:30:55 | 显示全部楼层
maple1314168 发表于 2019-9-2 18:00
cp=double(solve(tan((wd(i)./cp).*(sqrt((cp./ct1).^2-1)))-(u2./u1).*(sqrt((1-(cp./ct2).^2)./((cp./ct ...

多谢大佬!!!!学习了~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表