查看: 367|回复: 2|关注: 0

[已答复] 从 sym 转换为 double 时出现以下错误: Unable to convert expression into double array.

[复制链接]

新手

5 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
发表于 2019-1-12 10:09:32 | 显示全部楼层 |阅读模式
  1. clear all
  2. clc

  3. E=70*10^9;
  4. p=2700;
  5. u=0.33;
  6. kt=1/1.2;
  7. G=E/2/(1+u);
  8. cL=(E*p)^(1/2);

  9. a1=0.025;
  10. d=-1/3;
  11. a2=2*a1*(1-d)/(1+d);
  12. a=2*a1+a2;
  13. h1=0.01;
  14. h2=0.02;
  15. b=0.01;
  16. S1=h1*b;
  17. S2=h2*b;


  18. syms x

  19. for n=1:1000
  20.     step=2*pi/1000/a;
  21.     k0=pi/a/1000;
  22.     k1(n)=k0+step*(n-1);

  23.     k1(n)=(acos(cos(x*a/cL)-1/2*(S2/S1+S1/S2-2)*sin(2*x*a1/cL)*sin(x*a2/cL)))/a;
  24.    
  25.     f=finverse(x,k1);
  26.    
  27. end
  28. plot(k,f);
复制代码
我想画k-f图像,但是公式写不成f=f(k)的形式,写成上面的样子后,

运行的时候,出现以下错误 微信截图_20190112100014.png



新手

5 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
 楼主| 发表于 2019-1-12 10:12:57 | 显示全部楼层
我是MATLAB2018b版本,系统是64位Windows 7旗舰版

入门

132 麦片

财富积分


50500


11

主题

80

帖子

6

最佳答案
发表于 2019-1-14 20:38:46 | 显示全部楼层
k1(n)=k0+step*(n-1);%这一行是数值型数组
k1(n)=(acos(cos(x*a/cL)-1/2*(S2/S1+S1/S2-2)*sin(2*x*a1/cL)*sin(x*a2/cL)))/a;%这一行就转换成sym型数组,数据类型不对吧。
f=finverse(x,k1);%这一行是否应该写成f=finverse(k1,x);
%%%
clear all
clc

E=70*10^9;
p=2700;
u=0.33;
kt=1/1.2;
G=E/2/(1+u);
cL=(E*p)^(1/2);

a1=0.025;
d=-1/3;
a2=2*a1*(1-d)/(1+d);
a=2*a1+a2;
h1=0.01;
h2=0.02;
b=0.01;
S1=h1*b;
S2=h2*b;
syms x
for n=1:4
    step=2*pi/1000/a;
    k0=pi/a/1000;
%     k(n)=k0+step*(n-1);
    k1(n)=(acos(cos(x*a/cL)-1/2*(S2/S1+S1/S2-2)*sin(2*x*a1/cL)*sin(x*a2/cL)))/a;
    f(n)=finverse(k1(n),x);
end
% plot(k,f);
%%这样程序就不报错了,看你能否在这个基础上修改。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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