|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
我的代码解常微分一直说要返回列向量,有大神帮忙看看嘛
7 l; p; q$ C3 V! ]$ c9 A( k* @/ d7 g" _6 J3 U0 V
这是代码:( X2 b2 b6 u* l* i. t
function s=mywork(t,y,eta1,eta2,G1,yieldstress,contactstrain,flow,arg)
( {' `$ k4 M' S% |- s: Iswitch flow4 \/ G* `6 o6 N! X5 L' A
case 'creep & recovery'
# i1 s. l+ k* ?5 d stress0=arg(1);
0 O' L1 c1 P; m# [9 S7 S% I risetime=arg(2);/ I9 z: T9 ` G
creeptime=arg(3);
6 z0 Z9 ^0 m$ p+ c if t<risetime( O; ]0 L3 h. p) N4 _ v, O
stressrate=stress0/risetime;; Z* W$ n2 s$ J/ k2 T
stress=stressrate*t;4 P* c, l9 X1 R( z/ u) E( S
elseif t<creeptime& R7 Q; k' i) C* G1 a& Y
stressrate=0;
4 O% J. K2 F6 O! p6 ^' a stress=stress0; M) f$ ?/ H3 _. k6 c. M: P
elseif t<creeptime+risetime
1 @) e! d, M2 o) B! M% y$ u: z o stressrate=stress0/risetime;
7 t& D3 `! y7 Z stress=stress0-stressrate*(t-creeptime);( t. `0 F4 m8 `
else- s: R- B u# K7 e" s
stressrate=0;! C1 X4 b8 c5 ~* W3 Q) u" }( D$ y
stress=0;# M9 V+ T* z' O+ }2 q1 Q
end" G9 H& N5 i4 x/ V9 e
gam1=y(1);8 D0 @/ m% |; W: R+ v
gam2=y(2);2 Q5 q+ n# @4 L: V5 r' I
s(1)=gam2;
T9 K" n0 E) K 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);9 C$ U$ J- @3 _4 k6 r2 D
1 T- I' ] @8 y ~) K
$ x) X9 |0 u, r! e; Q, h6 U8 \
n0 F# l# G! k: k H: y& D
clear all
; p l/ E6 J+ u4 U% u1 ^" l. gclc7 h: B; Z6 u- s; @ G
warning off
- m( W9 L) }* J9 Q# p3 N7 N0 f8 U: d; i6 s# \
eta1=10; % [Pa.s]" n" b- X% _! K1 j8 C- v
eta2=20; % Pa.s]
7 o# }# b% z, z. I# Q) e: h: gG1=2; % [Pa]
% \# l1 E2 H& z; d2 {G2=5; %[Pa]
' e$ l3 g1 N9 R1 v+ yyieldstress=5; % [Pa], z8 M/ x* F/ _0 a, _3 k
contactstrain=5;
& O& C7 P* y4 n7 A0 F4 O, J2 J) m( @
6 {: {/ p" W0 ?% W6 E! _& P5 m. H! [$ n* v1 [& t( A- Z1 m P& a
flow='creep & recovery';
- m3 c/ X7 ?. }1 o" Z6 mstress0=1:2:10;+ q0 ]" }% y5 a( Q8 H# Y
risetime=0.01;
: {- r7 t5 c1 x* U( m- wcreeptime=100;! F$ [) k/ c( m6 l- G0 [5 ]2 E Z
for i=1:length(stress0)
' ^, D5 B5 q7 d [t,strain]=ode15s(@mywork,[0 10],[0 0],[],eta1,eta2,G1,yieldstress,contactstrain,flow,[stress0(i) risetime creeptime]);0 ?* |5 T% J) _+ ~ }
subplot(2,3,3); semilogx(t,strain(:,1)); hold on
& l- |: V$ Y% X% k5 i, S a{i}=strcatnum2str(stress0(i),'(Pa)');* c- Q! h& y# p9 g' G$ H! S
end
& w& x7 `* K$ L7 U1 [2 Gxlin([1e-4 1000]); , b* b8 A) F2 @+ O
xlabel('Time(s)'); ylabel('Shear strain(-)');
5 y+ Z, ~! p" L2 i; {legend(a)3 }4 q2 |6 \+ O4 H W
8 ~% H8 Q+ V) \; ]' c2 T! D7 r X7 T- x9 |
0 E7 R7 W( `: p8 |1 `$ Z& j+ a
错误使用 odearguments (第 93 行), f2 D+ r. r. f- l( t
MYWORK 必须返回列向量。
+ ?; \5 @5 J5 t6 [( m* d( s: p0 a4 y- x
出错 ode15s (第 152 行)
9 R' f' p# G" o1 ^2 v odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);7 [$ y' b8 M- |! G6 Q( I! N
5 }" @ Y2 c) }5 R出错 Untitled2 (第 20 行)
+ u' o3 l6 }9 _) W; s [t,strain]=ode15s(@mywork,[0 10],[1 0],[],eta1,eta2,G1,yieldstress,contactstrain,flow,[stress0(i) risetime creeptime]);6 z* T! m5 E; ]8 |% }! i; E
7 @- }/ }, i1 }8 e9 a- X+ T* L
0 m( K; A Y1 d3 n
感谢大神们!
8 l, W+ R1 F& y9 t2 S" t0 n' m |
|