total=-mtotal a10=eval(a10) a20=eval(a20) a30=eval(a30) a40=eval(a40) format short clear
buyu.m
function y=buyu(x);
global a10 a20 a30 a40 total k; syms k a10;
x1=dsolve('Dx1=-0.8*x1','x1(0)=a10'); t=1;
a20=subs(x1);
x2=dsolve('Dx2=-0.8*x2','x2(0)=a20'); t=1;
a30=subs(x2);
x31=dsolve('Dx31=-(0.8+0.4*k)*x31','x31(0)=a30'); t=2/3;
a31=subs(x31);
x32=dsolve('Dx32=-0.8*x32','x32(2/3)=a31'); t=1;
a40=subs(x32);
x41=dsolve('Dx41=-(0.8+k)*x41','x41(0)=a40'); t=2/3;
a41=subs(x41);
x42=dsolve('Dx42=-0.8*x42','x42(2/3)=a41'); t=2/3;
a31=subs(x31);
nn=1.109*10^5*(0.5*a31+a41);
Equ=a10-nn*1.22*10^11/(1.22*10^11+nn); S=solve(Equ,a10); a10=S(2,1); syms t; k=x;
t3=subs(subs(int(0.42*k*x31,t,0,2/3))); t4=subs(subs(int(k*x41,t,0,2/3))); total=17.86*t3+22.99*t4; y=subs((-1)*total) 6
运行结果为:
k =
18.25976795085083
total =
4.080548655562244e+011
a10 =
1.195809275167686e+011
a20 =
5.373117428928620e+010
a30 =
2.414297288420686e+010
a40 =
8.330238542343275e+007 >>
运行图为:
7
x 10114.154.14.0543.953.93.853.83.750510152025
function y=buyu(x); %Function应为function global a10 a20 a30 a40 total k; syms k a10;
x1=dsolve('Dx1=-0.8*x1','x1(0)=a10'); %单引号须为英文下的单引号 t=1;a20=subs(x1);
x2=dsolve('Dx2=-0.8*x2','x2(0)=a20'); t=1;a30=subs(x2);
x31=dsolve('Dx31=-(0.8+0.4*k)*x31','x31(0)=a30'); t=2/3;a31=subs(x31);
x32=dsolve('Dx32=-0.8*x32','x32(2/3)=a31'); t=1;a40=subs(x32);
x41=dsolve('Dx41=-(0.8+k)*x41','x41(0)=a40'); %多了一个*号,已删。 t=2/3;a41=subs(x41);
x42=dsolve('Dx42=-0.8*x42','x42(2/3)=a41'); t=2/3;a31=subs(x31);
nn=1.109*10^5*(0.5*a31+a41); %N应为n Equ=a10-nn*1.22*10^11/(1.22*10^11+nn);
S=solve(Equ,a10); a10=S(2,1); %eq1应为Equ Syms t; k=x;
t3=subs(subs(int(0.42*k*x31,t,0,2/3))); t4=subs(subs(int(k*x41,t,0,2/3))); total=17.86*t3+22.99*t4;
8
y=subs((-1)*total);
以下为buyu1.m
global a10 a20 a30 a40 total; [k,mtotal]=fminbnd('buyu', 0,20); Ezplot(total,0,25) Xlabel('') ylabel('') title('')
format long; k
total=-mtotal a10=eval(a10) a20=eval(a20) a30=eval(a30) a40=eval(a40) format short clear
运行结果: k =
18.25976795085083
total =
4.080548655562244e+011
a10 =
1.195809275167686e+011
a20 =
5.373117428928620e+010
a30 =
9
2.414297288420686e+010
a40 =
8.330238542343275e+007
10