matlab第三次作业题

第三次作业题

1.实验9-1

在这里插入图片描述
思路
用 fplot 函数fplot(fun,lims)画出图像,fun 必须为一个 M 文件的函数名或对变量 x 的可执行字符串,lims为限制区间。用求解边界约束条件下的非线性最小化函数 fminbnd,调用格式:x=fminbnd(‘fun’,x1,x2)来求出顶点,并画出相应虚线。
代码

clc 
clear
fplot('0.1*x*(1-x)',[0 1.1 0 0.03]);
title('SI模型di/dt~i曲线');
x=fminbnd('-0.1*x*(1-x)',0,1);
y=0.1*x*(1-x);
hold on; %在上面的同一张图上画线(同坐标系)
plot([0,x],[y,y],':',[x,x],[0,y],':');
text(0,y,'(di/dt)m','VerticalAlignment','bottom');%水平控制属性
text(x,-0.001,num2str(x),'HorizontalAlignment','center');%垂直控制属性,num2str(A) 将数值数组转换为表示数字的字符数组
xlabel('i');
ylabel('di/dt')

2.实验9-2

在这里插入图片描述
搜的
思路
用dsolve来求解常微分方程x的解。解出x为
在这里插入图片描述
x中记录字符串表达式。
plot(x,y)中x,y必须为向量,矩阵或标量,所以设矩阵tt=0:0.1:30,xx应为对应的矩阵,
用for循环来计算出xx矩阵中每一个值。用eval执行x中记录的字符串表达式,求出每一个tt对应的表达式的值。
代码

clc
clear
x=dsolve('Dx=0.2*x*(1-x)','x(0)=0.15')
tt=0:0.1:30;
for s=1:length(tt)%length求出tt数组的个数
    t=tt(s);%变量t为tt[s]
    xx(s)=eval(x);
    %eval将字符串转换为matlab可执行语句x=1/(1+17/3*exp(-1/5*t))
end
plot(tt,xx);
xlabel('t(天)');
ylabel('i(病人所占比例)');
title('图 1 SI模 型 的 i~t曲 线');
axis([0,30,0,1.1])

3.实验9-3

在这里插入图片描述
思路
用 fplot 函数fplot(fun,lims)画出图像,fun 必须为一个 M 文件的函数名或对变量 x 的可执行字符串,lims为限制区间。令y=0,plot([0,0.4],[y,y],’:’);
代码

clc
clear
fplot('-0.1*x*(x-(1-(1/1.5)))',[0 0.4 -0.0005 0.003]);
xlabel('i');
ylabel('di/dt');
title('SIS模 型 的 di/dt~i曲 线');
y=0;
hold on; 
plot([0,0.4],[y,y],':');

4.实验9-4

在这里插入图片描述
思路
类似于实验9-2用desolve解出微分方程1x(0)=0.2,和方程2x(0)=0.9。并用plot画出红线和蓝线。令y=,x=0:0.1:40,画出黑色虚线。并用legend进行图例标注。
代码

clc
clear
x1=dsolve('Dx=-0.2*x*(x-(1-1/3))','x(0)=0.2');
x2=dsolve('Dx=-0.2*x*(x-(1-1/3))','x(0)=0.9');
tt=0:0.1:40;
for s=1:length(tt)
    t=tt(s);
    xx1(s)=eval(x1);
    xx2(s)=eval(x2);
end
plot(tt,xx1);
hold on;
hold on;
plot(tt,1-1/3,'k-.');
plot(tt,xx2,'r:');
xlabel('t(天)');
ylabel('i(病人所占比例)');
title('图 1 SI模 型 的 i~t曲 线 (λ=0.2,σ=3)');
axis([0,40,0,1])
legend('i(0)=0.2','1-1/σ','i(0)=0.9' );

5.实验9-5

在这里插入图片描述
思路
先建立函数fexch(t,x),建立,存储要求解的式子在这里插入图片描述
令自变量ts=0:50
将i(0),s(0)存储在向量x(0)中。带入函数fexth,用求解ode45微分方程
则返回值x向量中第一列为i表达式,第二列为s表达式
用plot画出i(t),s(t)图形,i~s 图形。
代码

function y=fexch(t,x)
a=1;%λ用a表示
b=0.3;%μ用b表示
y=[a*x(1)*x(2)-b*x(1),-a*x(1)*x(2)]';%i用x(1)表示,s用s(2)表示

在另一个文件中运行

clc
clear
ts=0:50;%ts从050
x0=[0.02,0.98];%i(0)=0.02,s(0)=0.98
[t,x]=ode45('fexch',ts,x0);%要求返回函数中的t,x
y1=x(:,1);%取x矩阵第一列
y2=x(:,2);%取x矩阵第二列
figure(1)
plot(t,y1)%i(t)图像
figure(2)
plot(t,y2)%t(t)图像
figure(3)
plot(t,y1,t,y2)%i~t(t)图像
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值