声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1181|回复: 2

[混合编程] 请教吴老师:嵌套函数输出结果的问题

[复制链接]
发表于 2010-7-25 08:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
吴老师,你好,又一次麻烦你,依然是之前的嵌套函数求解问题,代码如下:



  1. function [t,u] = chunshui2003

  2. %%%% 基本参数数值 %%%%%
  3. mr = 600*10^3;            
  4. De = 0.5*10^6;            
  5. Ke = 0.5*10^10;           
  6. delta_0 = 18*10^-3;      
  7. e_0 = 2*10^-3;            
  8. omega = 13.1;              %水轮发电机额定转速,单位rad/s


  9. %%%% 电磁刚度参数数值 %%%%%
  10. Rg = 6.24;      
  11. L1 = 2.1;      
  12. k_u = 1.102;   
  13. mu_0 = 4*pi*10^(-7);   
  14. f = 50;        
  15. theta = 30.64/180*pi;
  16. phi = acos(0.875);   
  17. p = 40;               
  18. Fsm = 19210;         
  19. Fjm = 24214;         
  20. Lambda_0 = mu_0./(k_u*delta_0);      
  21. sigma = k_u*delta_0;      
  22. omega_f = 2*pi*f./p;      


  23. function uu = diff_equ(t,u)
  24. %%%%% Fx,Fy 表达式 %%%%%%

  25. Fx = mr.*omega.^2.*e_0.*cos(omega.*t);
  26. Fy = mr.*omega.^2.*e_0.*sin(omega.*t);


  27. %%%% 电磁刚度表达式 %%%%%

  28. coeff_1 = Rg.*L1.*Lambda_0./(2*sigma.^2);
  29. coeff_2 = coeff_1.*sigma;

  30. B = @(alpha) Fsm.*cos(omega_f.*t-p.*alpha);                     %积分大括号内第一项
  31. C = @(alpha) Fjm.*cos(omega_f.*t-p.*alpha+theta+phi+pi/2);      %积分大括号内第二项

  32. C11 = @(alpha) 1+cos(2.*alpha);
  33. C12 = @(alpha) sin(2.*alpha);
  34. C22 = @(alpha) 1-cos(2.*alpha);
  35. C_1 = @(alpha) cos(alpha);
  36. C_2 = @(alpha) sin(alpha);                  %不同电磁刚度项的积分内容
  37. %
  38. D11 = @(alpha) coeff_1.*C11(alpha).*(B(alpha)+C(alpha)).^2;
  39. D12 = @(alpha) coeff_1.*C12(alpha).*(B(alpha)+C(alpha)).^2;
  40. D22 = @(alpha) coeff_1.*C22(alpha).*(B(alpha)+C(alpha)).^2;
  41. D_1 = @(alpha) coeff_2.*C_1(alpha).*(B(alpha)+C(alpha)).^2;
  42. D_2 = @(alpha) coeff_2.*C_2(alpha).*(B(alpha)+C(alpha)).^2;                   %电磁刚度积分表达式
  43. %
  44. K11 = quadgk(D11,0,2*pi);
  45. K12 = quadgk(D12,0,2*pi);
  46. K21 = quadgk(D12,0,2*pi);
  47. K22 = quadgk(D22,0,2*pi);
  48. K_1 = quadgk(D_1,0,2*pi);
  49. K_2 = quadgk(D_2,0,2*pi);              %电磁刚度求解

  50. uu = zeros(4,1);
  51. uu(1) = u(2);
  52. uu(2) = -De/(mr*omega)*u(2)-(K11+Ke)/(mr*omega^2)*u(1)-K12/(mr*omega^2)*u(3)+Fx/(mr*delta_0*omega^2)-K_1/(mr*delta_0*omega^2);
  53. uu(3) = u(4);
  54. uu(4) = -De/(mr*omega)*u(4)-K21/(mr*omega^2)*u(1)-(K22+Ke)/(mr*omega^2)*u(3)+Fy/(mr*delta_0*omega^2)-K_2/(mr*delta_0*omega^2);
  55. end


  56. y0 = [0.001 0.001 0.001 0.001];
  57. period = 2*pi/13.1;
  58. [t,u] = ode15s(@diff_equ,[0:period/100:5*period],y0);
  59. end
复制代码


之前我曾经问过,如何显示计算这个带有嵌套函数的运动微分方程结果。您说在chunshui2003这个函数名称前添加[t,u]即可,即:



  1. function    [t,u] = chunshui2003

复制代码


当运行后在变量参数处并没有显示时间t和相关运动项u的名称,只有ans以及主窗口中的一系列数值,这些应该是时间t的数值,也就是时间子步。
请问一下老师,这里面是哪个环节出现了问题,应该如何操作才能够获得我所希望的[t,u]呢。
麻烦吴老师了!
刚性支撑系统运动微分方程.jpg
回复
分享到:

使用道具 举报

发表于 2010-7-25 18:39 | 显示全部楼层
你是怎么运行的?不是在指令窗口运行

  1. [t,u] = chunshui2003
复制代码

评分

1

查看全部评分

 楼主| 发表于 2010-7-26 09:04 | 显示全部楼层
谢谢您,吴老师!之前可能是我理解出现了错误,直接运行"chunshui2003"这个函数了。对嵌套函数的概念理解不是很清楚,以为在"chunshui2003"里面有


  1. [t,u] = ode15s(@diff_equ,(0:period/100:5*period),y0);

复制代码
就可以直接获得结果,我的想法是错误的。还是需要通过运行函数并赋予输出值才可以!
虽然花了一些时间才弄懂,但能够得到吴老师的指导和帮助很开心。
祝吴老师工作顺利,新书畅销!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-13 19:59 , Processed in 0.061710 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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