|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
我的代码解常微分一直说要返回列向量,有大神帮忙看看嘛
^" j/ f% a) i" C) R1 b$ n: m1 [6 N. ?7 Y; X* I2 E6 g. X0 l
这是代码:0 `- p1 I( ?7 \9 j( y& m" Y
function s=mywork(t,y,eta1,eta2,G1,yieldstress,contactstrain,flow,arg)
: P! W7 [4 E6 ^6 M1 h- N$ @' ]# v, Bswitch flow
( ?! z$ J' `2 T# }7 }case 'creep & recovery'0 o$ z2 k+ l% X8 t/ y' w
stress0=arg(1);
1 {) M" w& Q; U( v* F9 k' b6 N" g risetime=arg(2);
+ k# ?) S V- z/ p4 P m creeptime=arg(3);
0 T4 S) M' \; Z/ f5 ~8 c- _ if t<risetime) n6 ? O& _. v( U# _
stressrate=stress0/risetime;, C7 l0 O' H! y/ @ `* g& X+ i+ u
stress=stressrate*t;& |+ w/ J: N4 v0 ^: U% w v
elseif t<creeptime. X. ^9 L3 |8 F
stressrate=0;! ?# U. C$ j0 \8 J; U
stress=stress0;7 G: Q& P' z' z1 o" w V
elseif t<creeptime+risetime
" Z6 K( P/ E' S, C. L" b3 p stressrate=stress0/risetime;
: ~8 L1 H4 i7 m stress=stress0-stressrate*(t-creeptime);
( T& n; U0 W" c% J; N- r# q' d else
9 o v$ }! M3 g7 p$ Q$ L% N, H stressrate=0;" \0 r7 m9 |1 Z7 M" p8 V
stress=0;
6 \6 y0 Q1 c" B; C end) h( H& u: I' f# F: K
gam1=y(1);
, J6 s4 t* l/ ~3 I- V! X- H gam2=y(2);0 ]6 p* l' J( z+ ~
s(1)=gam2;
+ \. d5 i3 o$ P3 P& J9 ^ 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);, t' }, K+ J$ [1 m0 ]
6 [1 a1 Q8 b) M: p1 V$ o
; U5 R) v7 J/ {8 A3 I) b" {. @4 E4 f' z3 U
clear all
/ p: G: f4 P% ~5 i* jclc
/ O. n" t ~7 L$ s0 w% Awarning off
' v0 f8 m* U( h/ ^ `# C8 @
& Z2 X' O" {1 o' X: U* Beta1=10; % [Pa.s]
- P, g' w: D1 T: v0 h. _eta2=20; % Pa.s]" X1 U! w. o m7 f% \9 U
G1=2; % [Pa]3 P) x" [3 b! [" W+ P
G2=5; %[Pa]( i! ~9 f& ]# w* W: R
yieldstress=5; % [Pa]
1 o% u j4 |/ }contactstrain=5;
" o, ]3 I1 W% T. v7 W' p& u
1 d: ^& N/ `" U0 E8 c9 y2 ~$ m& z& _2 u
flow='creep & recovery';
/ r X4 j g- S$ f0 ~+ estress0=1:2:10;
: z0 C1 R3 h3 l/ xrisetime=0.01;
% M3 o$ F( ~: \0 M+ H4 ocreeptime=100;9 { V$ Z8 `0 Y
for i=1:length(stress0)
" ~; B& F3 S% x+ n7 R9 X- b1 V [t,strain]=ode15s(@mywork,[0 10],[0 0],[],eta1,eta2,G1,yieldstress,contactstrain,flow,[stress0(i) risetime creeptime]); d% `1 \4 Y/ m U- \* S' W
subplot(2,3,3); semilogx(t,strain(:,1)); hold on
7 y3 L$ i- H1 S( m" D a{i}=strcatnum2str(stress0(i),'(Pa)');
) t- D- q1 e0 X5 o. Iend8 e1 `! m6 N5 W; _# t
xlin([1e-4 1000]);
( n6 S; o/ I, ]9 n0 n; M! Zxlabel('Time(s)'); ylabel('Shear strain(-)');1 g1 a+ [; C2 ?. t# o3 _3 U# Y
legend(a)8 s" t" q$ b( z( C
b. T6 b J$ }: y' |0 E1 M. S9 v
/ p5 O6 X4 ]% W( }
错误使用 odearguments (第 93 行) J5 [' t7 ~0 f2 B
MYWORK 必须返回列向量。
/ K T* \$ b. _+ {$ L1 l7 U; O% T0 j; `; N, K
出错 ode15s (第 152 行). S& B! e+ [6 D5 Z6 `2 F% m
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);# |8 a1 d+ i* v. I( D( O
0 o5 W6 j: T3 ? X. N/ g; I出错 Untitled2 (第 20 行)
# E$ X! I* |, H l5 T1 C- @1 } [t,strain]=ode15s(@mywork,[0 10],[1 0],[],eta1,eta2,G1,yieldstress,contactstrain,flow,[stress0(i) risetime creeptime]);9 z2 p* n3 Z0 n0 t/ ]
7 s7 N* p Z% c7 s- {0 I; v
( P2 ?3 `% M4 M: W感谢大神们!
2 @" ?$ v3 ^; O& N2 u |
|