数学实验课MATLAB实验报告二(题目+代码)

前言

2022年10月21日晴转多云转晴然后黑天了,不冷。今天有一件要紧的事要做,但我就是要先写完这个再去做。

1.(1)

题目

解微分方程
{ d 3 y d x 3 = ( d 2 y d x 2 − 1 ) 2 − d y d x − y 2 , y ( 0 ) = 0 , y ′ ( 0 ) = 1 , y ′ ′ ( 0 ) = − 1. \begin{cases} \dfrac{d^3y}{dx^3}=(\dfrac{d^2y}{dx^2}-1)^2-\dfrac{dy}{dx}-y^2, \\y(0)=0,y'(0)=1,y''(0)=-1. \end{cases} dx3d3y=(dx2d2y1)2dxdyy2,y(0)=0,y(0)=1,y′′(0)=1.
(考虑 x ∈ [ 0 , 20 ] x\in[0,20] x[0,20],画出数值解及其一阶、二阶导数曲线图形).

代码

高阶微分方程,先化成一阶微分方程组,再求解。
y 1 = y , y 2 = y ′ , y 3 = y ′ ′ y_1=y,y_2=y',y_3=y'' y1=y,y2=y,y3=y′′,则原方程化为方程组
{ y 1 ′ = y 2 , y 2 ′ = y 3 , y 3 ′ = ( y 3 − 1 ) 2 − y 2 − y 1 2 , y 1 ( 0 ) = 0 , y 2 ( 0 ) = 1 , y 3 ( 0 ) = − 1. \begin{cases} y_1'=y_2, \\y_2'=y_3, \\y_3'=(y_3-1)^2-y_2-y_1^2, \\y_1(0)=0,y_2(0)=1,y_3(0)=-1. \end{cases} y1=y2,y2=y3,y3=(y31)2y2y12,y1(0)=0,y2(0)=1,y3(0)=1.
所以在编写函数脚本文件时,要写成下面这样。

function dy=f1(t,y)
dy=[y(2);y(3);(y(3)-1).^2-y(2)-y(1).^2];
end

将上面的代码保存为f1.m。其中y是一个三列的向量,分量1为 y 1 y_1 y1,分量2为 y 2 y_2 y2,分量3为 y 3 y_3 y3。下面我们就要在ode45中调用f1啦:

[T,y]=ode45('f1',[0 20],[0 1 -1]);
plot(T,y(:,1),'-',T,y(:,2),'o',T,y(:,3),'x')

代码中[0 20]中的0是初值条件中的初值点,后面的[0 1 -1]是初值条件。画出的图像如下:
Alt

1.(2)

题目


{ d y d x = − 0.01 y − 99.99 z , d z d x = − 100 z , y ( 0 ) = 2 , z ( 0 ) = 1. \begin{cases} \dfrac{dy}{dx}=-0.01y-99.99z, \\ \dfrac{dz}{dx}=-100z, \\y(0)=2,z(0)=1. \end{cases} dxdy=0.01y99.99z,dxdz=100z,y(0)=2,z(0)=1.
的数值解,并画出数值解的图像。

代码

一样的,令 y 1 = y , y 2 = z y_1=y,y_2=z y1=y,y2=z,则有
{ y 1 ′ = − 0.01 y 1 − 99.99 y 2 , y 2 ′ = − 100 y 2 , y 1 ( 0 ) = 2 , y 2 ( 0 ) = 1. \begin{cases} y_1'=-0.01y_1-99.99y_2, \\y_2'=-100y_2, \\y_1(0)=2,y_2(0)=1. \end{cases} y1=0.01y199.99y2,y2=100y2,y1(0)=2,y2(0)=1.

function dy=f2(t,y)
dy=[-0.01*y(1)-99.99*y(2);-100*y(2)];
end

将上面这个代码保存为f2.m。调用:

[T,y]=ode45('f2',[0 500],[2 1]);
plot(T,y(:,1),'-',T,y(:,2),'.')

刚开始画的区间是0到20,但是很丑,很怪,不断调整区间,最终觉得0到500画出来的图还能入眼:
Alt

1.(3)

题目

求下列方程的通解及特解。
{ x 2 y ′ ′ + x y ′ + ( x 2 − 1 4 ) y = 0 , y ( π 2 ) = 2 , y ′ ( π 2 ) = − 2 π . \begin{cases} x^2y''+xy'+(x^2-\dfrac{1}{4})y=0, \\y(\dfrac{\pi}{2})=2,y'(\dfrac{\pi}{2})=-\dfrac{2}{\pi}. \end{cases} x2y′′+xy+(x241)y=0,y(2π)=2,y(2π)=π2.

代码

%求通解
y=dsolve('x.^2*D2y+x*Dy+(x.^2-1/4)*y=0','x');
disp('通解')
disp('y=')
pretty(y)
%求特解
y0=dsolve('x.^2*D2y+x*Dy+(x.^2-1/4)*y=0','y(pi/2)=2,Dy(pi/2)=-2/pi','x');
disp('特解')
disp('y0=')
pretty(y0)

dsolve求解。求通解不需要写初值,求特解时要写初值。结果如下:
Alt
Alt

1.(4)

题目

已知 y ( 0 ) = − 0.2 , y ′ ( 0 ) = − 0.7 y(0)=-0.2,y'(0)=-0.7 y(0)=0.2,y(0)=0.7用数值方法求 V a n   d e r   P o l Van\ der\ Pol Van der Pol方程 y ′ ′ + μ ( y 2 − 1 ) y ′ + y = 0 y''+\mu(y^2-1)y'+y=0 y′′+μ(y21)y+y=0的解,并画出当 μ = 1000 \mu=1000 μ=1000时的图像。

代码

倦了。。。令 y 1 = y , y 2 = y ′ y_1=y,y_2=y' y1=y,y2=y。So easy!!!

function dy=vdp1000(t,y)
dy=[y(2);-1000*(y(1).^2-1)*y(2)-y(1)];
end

保存为vdp1000.m。。。

[T,Y]=ode45('vdp1000',[0 0.05],[-0.2;-0.7]);
plot(T,Y(:,1),'-');
title('$Solution\ of\ van\ der\ Pol\ Equation,\mu=1000$','interpreter','latex');

哦,这里注意一下,最开始我给的区间是0到20,画出来的图巨丑,后来发现它就这么点好看的地方,我就把区间改成0到0.05咯。结果:
Alt

2.

题目

凶杀案作案时间问题:受害者的尸体于晚上7:30被发现,法医于晚上8:20赶到凶案现场,测得尸体温度为32.6℃;一小时后,当尸体即将被抬走时,测得尸体温度为31.4℃,室温在几个小时内始终保持21.1℃。此案最大的嫌疑犯张某声称自己是无罪的,并有证人说:“下午张某一直在办公室上班,5:00时打完电话后就离开了办公室”。从张某到受害者家(凶案现场)步行需5分钟,现在的问题是,张某不在凶案现场的证言能否被采信,使他排除在嫌疑犯之外。(提示:1、Newton冷却定理告诉我们“物体在介质中冷却速度同该物体温度与介质温度之差成正比” 2、自己假设人体的正常体温的温度值;3、求解非线性方程的MATLAB命令有fzero,solve

代码

这个题目我们要求的是受害者死亡的时刻 t 0 t_0 t0
首先介绍一下,%%在脚本文件中是分节符。在第一节,我们把体温随时间变化的关系式解出来了。将第一次测温的8:20作为0时刻,求解即可。运行第一节,我们得到关系式为 T = 23 e k t 2 + 211 10 T=\dfrac{23e^{kt}}{2} + \dfrac{211}{10} T=223ekt+10211
在第二节中,使用一小时后9:20的条件解出 k k k 的值。这里选择时间 t t t 的单位为小时,故 t = 1 t=1 t=1,用solve解非线性方程即可,解出 k k k 的值赋给 k 0 k_0 k0
下面利用得到的特解 T = 23 e k 0 t 2 + 211 10 T=\dfrac{23e^{k_0t}}{2} + \dfrac{211}{10} T=223ek0t+10211求温度 T = 37 T=37 T=37 的时间 t 0 t_0 t0。为什么体温是37呢?因为人受到惊吓时体温会上升那么一丢丢。

%%求解温度变化曲线
clc,clear
T=dsolve('DT-k*(T-21.1)=0','T(0)=32.6','t')
%%
syms k
k0=solve((23*exp(k))/2 + 211/10-31.4==0);
syms t
t0=solve((23*exp(k0*t))/2 + 211/10-37==0);
time=8+1/3-ceil(abs(t0))+mod(t0,1);
a=sprintf('%d',floor(time));%时
b=sprintf('%d',floor(mod(time,1)*60));%分钟
disp(['案发时间为' a ':' b '左右'])

代码到time=…之前就已经把题目求解完了,后面只是将输出结果美化。blingbling美美哒的结果:
Alt
心机之蛙一直摸你肚子!案发时间是5:23左右,那么张某的嫌疑就无法排除了。

总结

妹想到这么快又摸MATLAB了…心碎。随便做了做,若有错误请指正(抱拳)(充满侠气地离开)。

  • 14
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值