[已答复] 程序一直在运行不出结果是什么原因?

[复制链接]
有一个人来买瓜 发表于 2021-9-6 22:47:48
10 财富积分

本帖最后由 有一个人来买瓜 于 2021-9-6 22:57 编辑
  1. function p = f1(x,d,z)   
  2. syms y;
  3. Vf = 0.001;   
  4. lf = 0.012;   
  5. t = 1.91 * 10^6;  
  6. Gd = 1.24;   
  7. b = 0.63;     
  8. Ef = 22 * 10^9;   
  9. df = 0.000039;   
  10. Em = 20 * 10^9;   
  11. c = (Vf * Ef) / ((1 - Vf) * Em);  
  12. Af = pi * (df)^2 / 4;   
  13. r = 0.2;        
  14. n = 0.33;      
  15. ofu = 1060 * 10^6;   
  16. om = 5 * 10^6;
  17. k = 500;


  18. les = lf/2 - z ./ cos(d);
  19. lel = lf/2 + z ./ cos(d);
  20. u0s = 2 * t * les.^2 * (1 + c) / (Ef * df) + les / Ef * sqrt(8 * Gd * Ef *(1 + c) / df);
  21. u0l = 2 * t * lel.^2 * (1 + c) / (Ef * df) + lel / Ef * sqrt(8 * Gd * Ef *(1 + c) / df);

  22. [I,J] = size(u0s);
  23. p = zeros(I,J);
  24. s = zeros(I,J);
  25. for i = 1:I
  26.     for j = 1:J  

  27.         if x <= 2 * u0s(i,j)
  28.             p1 = (pi .* sqrt((t .* x ./ 2 + Gd) .* Ef .* (df)^3 .* (1 + c) / 2)) .* exp(r .* d(i,j));

  29.             if p1 / Af > ofu * exp(-n .* d(i,j))
  30.                 p1 = 0;
  31.             end
  32.             p(i,j) = p1;

  33.         elseif x >2 * u0s(i,j)
  34.             s(i,j) = vpasolve(sqrt((t .* y + Gd) .* Ef .* (df)^3 .* (1 + c) / 2) - df .* t .* (les(i,j) - ((x - y) - u0s(i,j))) .* (1 + b .* ((x - y) - u0s(i,j)) / df)==0 , y);
  35.             p1 = (pi .* sqrt((t .* s(i,j) + Gd) .* Ef .* (df)^3 .* (1 + c) / 2)) * exp(r .* d(i,j));

  36.             if s(i,j) > u0l(i,j)
  37.                s(i,j) = vpasolve((df .* t .* (lel(i,j) - y - u0l(i,j))) .* (1 + b .* (y - u0l(i,j)) / df) - df .* t .* (les(i,j) - ((x - y) - u0s(i,j))) .* (1 + b .* ((x - y) - u0s(i,j)) / df)==0 , y);

  38.                 p1 = (pi .* df .* t .* (les(i,j) - (s(i,j) - u0s(i,j))) .* (1 + b .* (s(i,j) - u0s(i,j)) / df)) .* exp(r .* d(i,j));
  39.             end
  40.             if p1  / Af > ofu * exp(-n .* d(i,j))
  41.                 p1 = 0;
  42.             end

  43.             p(i,j) = p1;



  44.         end
  45.     end

  46. end
  47. end

复制代码


  1. x = 0:0.0006/10:0.0006;
  2. Vf = 0.001;   %纤维的体积掺量
  3. df = 0.000039;    %纤维的直径
  4. Af = pi * (df)^2 / 4;    %纤维的横截面积
  5. % d =2 ;
  6. % z=1;
  7. lf = 0.012;
  8. m = @(x,d,z)f1(x,d,z) .* 2 .* sin(d) ./ lf .* Vf ./ Af;
  9. zmax = @(d)lf * cos(d) /2;
  10. q = zeros(length(x),1);
  11. for i = 1:length(x)
  12.     q(i) = integral2(@(d,z)m(x(i),d,z),0,90,0 ,zmax);
  13. end
  14. % q = arrayfun(@(x)integral2(@(d,z)m(x,d,z),0,90,0 ,zmax ),x);
  15. plot(x,q);

复制代码
运行程序后一直在正忙,不结束。

2 条回复


gywxd 发表于 2021-9-7 10:04:20
一半就是死循环。可以考虑在循环和判断的地方加输出,看看输出情况

有一个人来买瓜 发表于 2021-9-7 23:33:42
gywxd 发表于 2021-9-7 10:04
一半就是死循环。可以考虑在循环和判断的地方加输出,看看输出情况

确实是死循环了,用断点看函数文件的变量数值变化,发现是输入的x一直没变,但不知道是为什么。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表