师生关系
问题背景:
老师在第天的心情,第天来上课的学生数量。当有50个学生来上课,老师的心情是60,反之亦然。
用这个方程来描述老师的心情:
%学生数目和老师的情绪的稳定程度
用这个方程来描述学生上课的数量:
%老师的变化和学生数目成正比,β越大,说明学生越积极,
分别就
,编写程序说明的稳定性。
代码:
clear
num = 20;
alpha = 0.12;%越大越不稳定,越小越稳定
beta = 5;
x = zeros(1,num);
y = zeros(1,num);
x(1) = 30; %第一天上课的学生数目
y(1) = -alpha*(x(1)-50)+60;
for i = 2:num
x(i) = 50+beta*(y(i-1)-60);
y(i) = 60-alpha*(x(i)-50);
end
plot(1:num,x,'-s')
plot(1:num,y,'-o')
alpha = 0.24;
beta = 5;
x = zeros(1,num);
y = zeros(1,num);
x(1) = 30;
y(1) = -alpha*(x(1)-50)+60;
for i = 2:num
x(i) = 50+beta*(y(i-1)-60);
y(i) = 60-alpha*(x(i)-50);
end
plot(1:num,x,'-s')
plot(1:num,y,'-o')
存储模型
问题:
配件厂为装配线生产若干种产品,轮换产品时因更换设备要付生产准备费,产量大于需求时要付贮存费. 该厂生产能力非常大,即所需数量可在很短时间内产出.
已知某产品日需求量100件,生产准备费5000元,贮存费每日每件1元. 试安排该产品的生产计划,即多少天生产一次(生产周期),每次产量多少,使总费用最小.
除以T求每天平均总费用
c1 = 5000;
c2 = 1;
r = 100;
T = [1:100];
Q = c1./T + c2*r*T/2;
plot(T,Q,'-o');
[Qmin,index]=min(Q)
T(index)
Qmin =
1000
index =
10
ans =
10
牛奶模型
一桶牛奶可经过两种加工方式,A加工方式为12小时/桶,可得到3kg牛奶,牛奶可卖2元/kg。B加工方式为8小时/桶,可得到4Kg 牛奶,牛奶获利16元/kg。
加工厂每天最多可供50桶牛奶,加工时长最多480h,加工得到的牛奶做多100kg。求最多获利时候,多少桶牛奶用于生产,多少桶用于生产。
clear
x=optimvar('x',1,2) //创建1X2矩阵
problem = optimproblem('ObjectiveSense','max') //
problem.Objective = 72*x(1)+64*x(2)
problem.Constraints.milk = x(1)+x(2)<=50;
problem.Constraints.time = sum([12 8].*x) <= 480;
x=solve(problem)
自来水模型
clear
x = optimvar('x',3,4);
prob = optimproblem("ObjectiveSense","min");
A=[160 130 220 170;
140 130 190 150;
190 200 230 0;];
pro.Objective = sum(sum(x.*A)); %对矩阵求和
prob.Constraints.one = sum(x,2) == [50;60;50]; %sum(x,2)对矩阵行求和,sum(x,)
prob.Constraints.second = sum(x,1) >= [30 70 10 10]
prob.Constraints.third = sum(x,1) <=[80 140 30 50]
[S,F] = solve(prob)
S.x
求解微分方程
clear
x0=[10,0]
x1=1,x2=2
[T,X] = ode45(@(t,i)x1*i*(1-i)-x2*i ,[0,10],0.05)
plot(T,X)
[T,Y] = ode45(odefun,tspan,y0)
odefun 是函数句柄,可以是函数文件名,匿名函数句柄或内联函数名
tspan 是区间 [t0 tf] 或者一系列散点[t0,t1,...,tf]
y0 是初始值向量
T 返回列向量的时间点
Y 返回对应T的求解列向量
酒杯模型
代码
clear
w1 = 1;
w2 = 0.3;
x = [0:0.01:1];
s1 = x/2;
s = (w1*x.*s1 + w2*1/2)./(w1*x + w2);
plot(x,s,'-o')
[smin,index] = min(s);
s(index)
药物模型
clear
x0=[1000,0];%看PPT上第一个初值x(0)=1000,第二个初值y(0)=0
[T,X] = ode45(@func,[0,10],x0)
plot(T,X)
function dotx = func(t,x)
lambda=1,mu=2;
dotx=zeros(2,1);
dotx(1) = -lambda*x(1);
dotx(2) = lambda*x(1)-mu*x(2);
end
捕鱼业
x0=2
[T,X] = ode45(@func,[0,10],x0)
plot(T,X)
function dotx = func(t,x)
r = 2;
N = 100;
E = 0.5;
dotx = r*(1-x/N)*x-E*x;
end