|  | 
 
| 
我的代码解常微分一直说要返回列向量,有大神帮忙看看嘛
x
EDA365欢迎您登录!您需要 登录 才可以下载或查看,没有帐号?注册  : p' E: l% @; X3 J7 ^8 U) W3 J2 `$ }! o/ I, K
 这是代码:' V) G5 R! H- u3 N" ^
 function s=mywork(t,y,eta1,eta2,G1,yieldstress,contactstrain,flow,arg)
 $ c, W' Z; L7 L$ wswitch flow
 6 @1 |  U& ~& j. s4 x6 _case 'creep & recovery'
 ' M* O' y8 @1 `& X/ g3 k; {        stress0=arg(1);
 9 g- d6 i" d+ f1 ]; ^( z6 Q        risetime=arg(2);7 g) x3 n3 O: H8 I8 V; Z4 _, m3 d) d
 creeptime=arg(3);
 ) D7 J5 y: a; f$ k. P! O* F        if t<risetime: }$ T) C/ W" W% T9 i: g4 i; E
 stressrate=stress0/risetime;
 9 x. H. u1 f: j            stress=stressrate*t;9 O3 p5 d% j1 T9 Y* f
 elseif t<creeptime& g9 _0 B5 C5 @7 V7 a* G- d+ Y7 y
 stressrate=0;
 5 B/ p2 e2 E+ s0 f6 b& D+ w            stress=stress0;; l2 H% U( M5 ~7 W
 elseif t<creeptime+risetime
 6 V/ r. \$ Y3 ~; p8 C) w3 f: {            stressrate=stress0/risetime;' |0 x+ ]1 v. c% |
 stress=stress0-stressrate*(t-creeptime);
 $ ]8 g# Q8 z# I# o- s        else. a$ Y7 c3 S( h5 r
 stressrate=0;' l2 O; p* K; M; S% n. Y% `
 stress=0;' j% R9 |% B6 T. l2 f
 end% t! s) a& T+ L+ A
 gam1=y(1);+ r" I) H* I; s8 O+ c0 P) G
 gam2=y(2);
 . u* _" Y! b! E3 E1 u5 Y        s(1)=gam2;! [( ]: k9 @1 @
 s(2)=G1/(eta1*eta2*((abs(gam1)-contactstrain)>0))*((stress-eta2*gam2*((abs(gam1)-contactstrain)>0)-sign(stress-eta2*gam2*((abs(gam1)-contactstrain)>0))*yieldstress)*((abs(stress-eta2*gam2*((abs(gam1)-contactstrain)>0))-yieldstress)>0)-eta1*gam2+eta1/G1*stressrate);
 - i! p0 _9 a; T, w7 e" g- F1 R. [) d) P$ U- B, |( ^; i
 
 , e; m- |! z  x
 * \; S5 M" A1 z* e/ `clear all
 : [  P' k2 s) o: o# Gclc
 + j3 w" ]! D/ s' W9 g$ L1 [- z5 Q# kwarning off
 2 n, L* w) n. ?$ B8 @/ O( o
 , p; \: s1 y- C4 ~* h  x0 J* c* y' r4 Ueta1=10;  % [Pa.s]* |( V7 {6 F* d. c: B
 eta2=20;  % Pa.s]
 $ U9 G* f7 {, p0 W" l5 g/ E2 B6 uG1=2;   % [Pa]: G" u8 v+ I8 f+ p' T
 G2=5;   %[Pa]
 * o4 ]& p# s4 ^; e0 byieldstress=5;  % [Pa]4 ?+ j" o6 w5 {1 B! q" w/ g8 m
 contactstrain=5;
 5 f3 P8 d9 G$ \2 l! p+ g& s0 q( o& n1 T: Y! w
 * ^5 o7 W* K& v/ M3 O
 flow='creep & recovery';
 , ]% h% i) C  Kstress0=1:2:10;" {4 N  E: ~7 r8 s7 x* W
 risetime=0.01;
 ' G8 U  @/ q  h# J2 X$ B- @+ Ucreeptime=100;" k% C) X3 f9 o" V# a& ^. T$ l
 for i=1:length(stress0)0 X3 x" p+ `; b7 L8 _* `
 [t,strain]=ode15s(@mywork,[0 10],[0 0],[],eta1,eta2,G1,yieldstress,contactstrain,flow,[stress0(i) risetime creeptime]);$ v  i) z9 L8 b& H
 subplot(2,3,3);     semilogx(t,strain(:,1));        hold on8 Y' m5 c9 y1 e
 a{i}=strcatnum2str(stress0(i),'(Pa)');
 " @/ S; s7 V, e& Cend* h* _' ^7 f, [8 E( p8 A
 xlin([1e-4 1000]);
 - W3 ?# q6 H1 F; b- zxlabel('Time(s)');      ylabel('Shear strain(-)');9 y7 M- e' p: m9 A! j5 Z: y0 ~; a: o
 legend(a)
 * ^; T$ j# ?. c7 O6 K* Y' {! V) y3 m% V! @
 * ?% g) N# A1 Z4 y8 ]  S7 W
 
 # N# i! u" j1 a9 X) ]3 `* {& p错误使用 odearguments (第 93 行)5 N2 l+ c3 h. F' \( w; f
 MYWORK 必须返回列向量。& k- L9 Z' c4 Z  Q3 d8 j- P- M
 
 / h, a/ T6 u5 I$ m- Q出错 ode15s (第 152 行)
 # L' Y; |/ ]5 x' T    odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);
 : J: {) R& x8 J' `( D) j& Z1 L% m4 I2 M/ A0 L4 ^( x$ H, @3 f
 出错 Untitled2 (第 20 行)+ l- k, D5 F& A2 B0 q+ b& b
 [t,strain]=ode15s(@mywork,[0 10],[1 0],[],eta1,eta2,G1,yieldstress,contactstrain,flow,[stress0(i) risetime creeptime]);
 9 {% i4 t- m/ p2 M
 * l$ y" M( Z. L, Q, e+ G! k
 3 `0 A# J7 {2 f, |感谢大神们!  E# P# J  t" _. E- D/ x' w
 
 | 
 |