查看: 126|回复: 1|关注: 0

[已解决] 牛顿迭代法报错:无法从 sym 转换为 logical。

[复制链接]

新手

5 麦片

财富积分


050


2

主题

4

帖子

0

最佳答案
发表于 2019-6-10 12:10:34 | 显示全部楼层 |阅读模式
本帖最后由 tanmin 于 2019-6-10 21:28 编辑

请大家指导指导:
运行报错信息如下:

无法从 sym 转换为 logical。

出错 M (line 65)
    while differ>eps


代码如下:
  1. clc[/size]
  2. [size=2]clear[/size]
  3. [size=2]%Newton iteration-Multi Points[/size]
  4. [size=2]
  5. [/size]
  6. [size=2]syms x1 x2 x3 x4 x5 x6 sum_n n_NaF n_AlF3;[/size]
  7. [size=2]syms RR;[/size]
  8. [size=2]syms N[/size]
  9. [size=2]RR=ones(1,7)/10e11;[/size]
  10. [size=2]
  11. [/size]
  12. [size=2]
  13. [/size]
  14. [size=2]%****************[/size]
  15. [size=2]T=['n_AlF3  ','x1  ', 'x2  ', 'x3  ', 'x4  ', 'x5  ', 'x6  ','n_sum  '];        %[/size]
  16. [size=2]disp(T);[/size]
  17. [size=2]
  18. [/size]
  19. [size=2]N=0;[/size]
  20. [size=2]for n_AlF3=0.01:0.01:0.5;                %%[/size]
  21. [size=2]    [/size]
  22. [size=2]    disp(n_AlF3);[/size]
  23. [size=2]    disp('--------');[/size]
  24. [size=2]    [/size]
  25. [size=2]    if N==0[/size]
  26. [size=2]        s1=1-3*n_AlF3;[/size]
  27. [size=2]        s2=0;[/size]
  28. [size=2]        s3=0;[/size]
  29. [size=2]        s4=n_AlF3/3;[/size]
  30. [size=2]        s5=0;[/size]
  31. [size=2]        s6=1-n_AlF3;[/size]
  32. [size=2]        s7=0;[/size]
  33. [size=2]    elseif N>0[/size]
  34. [size=2]        s1=RR(1);[/size]
  35. [size=2]        s2=RR(2);[/size]
  36. [size=2]        s3=RR(3);[/size]
  37. [size=2]        s4=RR(4);[/size]
  38. [size=2]        s5=RR(5);[/size]
  39. [size=2]        s6=RR(6);[/size]
  40. [size=2]        s7=RR(7);[/size]
  41. [size=2]    end[/size]
  42. [size=2]    [/size]
  43. [size=2]    eps=1.0e-6;[/size]
  44. [size=2]    differ=1;[/size]
  45. [size=2]    n=1;[/size]
  46. [size=2]    [/size]
  47. [size=2]    f1=x1*x3-0.2471*sum_n*x2; %0.247146 改为0.2471[/size]
  48. [size=2]    f2=x1*x4-0.1352*sum_n*x3;%0.135198 改为0.1352[/size]
  49. [size=2]    f3=x1*x5-0.0003*x4^2; %0.000299 改为0.0003[/size]
  50. [size=2]    f4=x1+6*x2+5*x3+4*x4+7*x5+14*x6-( n_NaF+3*n_AlF3);[/size]
  51. [size=2]    f5=x2+x3+x4+2*x5+3*x6-n_AlF3;[/size]
  52. [size=2]    f6=x1+x2+x3+x4+x5+x6-sum_n;[/size]
  53. [size=2]    f7=x4^2*x2-0.0000008*x6*sum_n^2;[/size]
  54. [size=2]    F=[f1 f2 f3 f4 f5 f6 f7];[/size]
  55. [size=2]    [/size]
  56. [size=2]    dF=transpose([diff(F,'x1');diff(F,'x2') ;diff(F,'x3');diff(F,'x4');diff(F,'x5'); diff(F,'sum_n'); diff(F,'x6')]);[/size]
  57. [size=2]    [/size]
  58. [size=2]    x0 = [s1,s2,s3,s4,s5,s6,s7];[/size]
  59. [size=2]    [/size]
  60. [size=2]    Fx = subs(F,[x1 x2 x3 x4 x5 sum_n x6],x0);[/size]
  61. [size=2]    dFx = subs(dF, [x1 x2 x3 x4 x5 sum_n x6],x0);[/size]
  62. [size=2]    %disp('*******************');[/size]
  63. [size=2]    %disp(vpa(Fx));[/size]
  64. [size=2]    %disp(vpa(dFx));[/size]
  65. [size=2]    [/size]
  66. [size=2]    r= transpose(x0)- inv(dFx)*transpose(Fx);[/size]
  67. [size=2]    %disp(vpa(r));[/size]
  68. [size=2]    [/size]
  69. [size=2]    while differ>eps[/size]
  70. [size=2]        %disp('*******************');[/size]
  71. [size=2]        Fx = subs(F, [x1 x2 x3 x4 x5 sum_n x6], transpose(r));[/size]
  72. [size=2]        dFx = subs(dF, [x1 x2 x3 x4 x5 sum_n x6], transpose(r));[/size]
  73. [size=2]        %disp(vpa(Fx));[/size]
  74. [size=2]        %disp(vpa(dFx));[/size]
  75. [size=2]        [/size]
  76. [size=2]        differ=norm( inv(dFx)*transpose(Fx));[/size]
  77. [size=2]        [/size]
  78. [size=2]        r=r-inv(dFx)*transpose(Fx);[/size]
  79. [size=2]        [/size]
  80. [size=2]        %disp(vpa(r));[/size]
  81. [size=2]        [/size]
  82. [size=2]        n =n+1;[/size]
  83. [size=2]        if(n>100);[/size]
  84. [size=2]            disp('iteration exceed! Not converged!');[/size]
  85. [size=2]            return;[/size]
  86. [size=2]        end;[/size]
  87. [size=2]    end;[/size]
  88. [size=2]    [/size]
  89. [size=2]    %r=[n_AlF3,r];[/size]
  90. [size=2]    RR=vpa(transpose(r));[/size]
  91. [size=2]    disp(RR);[/size]
  92. [size=2]    N=N+1;[/size]
  93. [size=2]end;[/size]
复制代码

图.png

新手

5 麦片

财富积分


050


2

主题

4

帖子

0

最佳答案
 楼主| 发表于 2019-6-10 21:51:16 | 显示全部楼层
该问题已解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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