[已解决] 求助关于循环计算作图的问题

[复制链接]
君长生 发表于 2015-6-3 23:47:33
本帖最后由 君长生 于 2015-6-4 02:10 编辑

程序中需要画m2的图,不知如何修改,求大神帮帮忙!现在已经急的不行了……
m2的初值是m2=(4/3)*pi*rk^3*miduk;
而下一步的m2等于上一步的m2-mh*t
(mh已经在之前的程序求解过,是随Tk变化的量)
同时,另外一个函数F=Tk+(t/(m2/Cp))*(Qck+Qrk+Qh);是求解Tk所必需的量,F中涉及到m2,
现在希望能画出m2的图像,但是出现了问题,下面是我自己试着修改的程序
  1. %参数部分,包括rk,miduk,Cp等等
  2. rk=;
  3. ……
  4. syms t Tk

  5. %方程部分,包括mh,Qck,Qrk,Qh,mh,F等
  6. mh=;
  7. m1=(4/3)*pi*rk^3*miduk;       %%%m2部分的修改
  8. i=1;
  9. for i=1:n;
  10.     if i==1;
  11.         m2=m1;
  12.     else;
  13.         m2=m2-mh*t
  14.     end
  15.     i=i+1
  16. end

  17. F=Tk+(t/(m2/Cp))*(Qck+Qrk+Qh);   
  18. g=eval(['@(t,Tk)',vectorize(F)]);

  19. %RK函数部分略过
  20. %mh,Tk求解部分
  21. [x,y]=myRK(g,A,B,C,y0,xspan,n);
  22. mh=-((1/1.332)*4*pi*rk^2)/(Rdiff+Rkin)*0.1;
  23. my_mh=eval(['@(Tk,t)',vectorize(mh)]);
  24. mhv=my_mh(x',y);


  25. %m2求解部分
  26. for i=1:n
  27.     if i==1
  28.         m2=m1;
  29.     else
  30.         m2=m2-mh*t
  31.     end
  32.     i=i+1
  33. end
  34. my_m2=eval(['@(Tk,t)',vectorize(m2)]);
  35. m2v=my_m2(x',y);
  36. plot(x,m2v,'.-')
  37. grid on
  38. hold on
复制代码

感谢@stellari大神的指点!解决了我循环不能运行的情况,修改后程序确实可以运行了得到了结果图后出现了新的问题,当我修改参数继续运行时,出现的曲线和之前的曲线(用了hold on)都变成了两条直线……如果关掉figure再重新运行的话,出现的对应于新的参数值的曲线就又正常了……
完全不知道该怎么办了……

求大神指教!急!感激不尽!!



第一次运行程序

第一次运行程序

改变参数后再次运行,发现图片有了奇怪的变化

改变参数后再次运行,发现图片有了奇怪的变化

最佳答案


stellari 发表于 2015-6-4 01:21:22
if i == 1, 不是 if i = 1
回复此楼

5 条回复


stellari 发表于 2015-6-4 01:21:22
if i == 1, 不是 if i = 1
回复此楼

君长生 发表于 2015-6-4 01:53:05
本帖最后由 君长生 于 2015-6-4 01:55 编辑

明白了~~~谢谢!@stellari
简直感激不尽!对我帮助很大!修改后程序确实可以运行了~~~=333=
得到了结果图~但是新的问题出现了,当我修改参数继续运行时,出现的曲线和之前的曲线(用了hold on)都变成了两条直线……如果关掉figure再重新运行的话,出现的对应于新的参数值的曲线就又正常了……
完全不知道该怎么办了……求您再帮帮我!谢谢您!

未改变参数之前的曲线

未改变参数之前的曲线

改变参数后的情况,对应于原参数值的曲线和新参数值的曲线都变为了直线

改变参数后的情况,对应于原参数值的曲线和新参数值的曲线都变为了直线

君长生 发表于 2015-6-4 02:05:10
stellari 发表于 2015-6-4 01:21
if i == 1, 不是 if i = 1

谢谢您~您的回答对我帮助很大!
我运行出了程序,但再次运行时出的图有了改变,您看我该怎么办呢?因为要在同一图中画出不同的参数值对应的不同曲线,所以我用的是hold on,理论上改变参数再重新运行就行了,比如mh所出的图就是正确的,但m2就出现了问题。改变参数值后,旧曲线和新曲线都变成了平行于x轴的直线……
谢谢您的指点!不胜感激~~~

stellari 发表于 2015-6-4 10:45:25
君长生 发表于 2015-6-4 01:53
明白了~~~谢谢!@stellari
简直感激不尽!对我帮助很大!修改后程序确实可以运行了~~~=333=
得到了结果图~ ...

这也是正常的。仔细观察两图的y轴范围,你可以发现上图曲线在0~1.4的t范围内变化不到0.0001x10^11. 这一点点变化在下图中是根本显示不出来的。如果一定要体现这个微小的上升趋势,你可以考虑将下图进一步拆分成上下两个坐标轴,将两曲线分别画在两个坐标轴中。

君长生 发表于 2015-6-4 17:10:40
stellari 发表于 2015-6-4 10:45
这也是正常的。仔细观察两图的y轴范围,你可以发现上图曲线在0~1.4的t范围内变化不到0.0001x10^11. 这一 ...

仔细观察了一下,确实是这样的!
还以为是图错了,原来是y轴范围的原因啊……太感谢您了~不愧是大神!之前纠结这个纠结了好久~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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