【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码)

这篇具有很好参考价值的文章主要介绍了【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如果这篇文章对你有帮助,欢迎点赞与收藏~
【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码),数学建模,数学建模,matlab,开发语言,算法,线性代数

基本概念

微分方程建模是数学建模中一种极其重要的方法,它在解决众多实际问题时发挥着关键作用。这些实际问题的数学表述通常会导致求解特定的微分方程。将各种实际问题转换为微分方程的定解问题主要包括以下几个步骤:

  1. 确定研究对象:首先,需要明确研究的量,这包括自变量、未知函数和必要的参数等,并选择合适的坐标系。

  2. 找出基本规律:接下来,需要识别这些量所遵循的基本规律,这些规律可能源自物理、几何、化学或生物学等领域。

  3. 列出方程和定解条件:利用这些规律来构建方程和相应的定解条件。

在列出方程时,常见的方法有以下几种:

  1. 直接列方程法:在数学、力学、物理、化学等领域,许多自然现象的规律已被广泛认识,并可直接用微分方程描述。如牛顿第二定律、放射性物质的衰变规律等。常利用这些已知规律直接建立微分方程。

  2. 微元分析法和积分法:对于一些自然现象,其规律需通过变量的微元间的关系来表达。在这种情况下,不能直接列出自变量与未知函数及其变化率之间的关系,而是通过微元分析法,利用已知规律建立变量间的微元关系,再通过取极限得到微分方程,或通过在任意区域上进行积分来建立微分方程。

  3. 模拟近似法:在生物学、经济学等领域,许多现象的规律不明确且相当复杂。在这些情况下,需要根据实际资料或实验数据提出各种假设,然后在这些假设下,利用合适的数学方法列出微分方程。

在实际的微分方程建模过程中,这些方法往往是综合应用的。无论采用哪种方法,通常需要根据实际情况做出一定的假设和简化,并将模型的理论或计算结果与实际情况对比验证,以此来修改模型,使其更准确地描述实际问题,从而达到预测和预报的目的。

习题6.4

1. 题目要求

【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码),数学建模,数学建模,matlab,开发语言,算法,线性代数

2.解题过程

解:

(1)

对函数值 s ( t ) s(t) s(t) 的影响因素,根据题目分析,可以得到如下两点:

  • 下降速度与 s ( t ) s(t) s(t) 的值的大小成正比,设比例系数为 λ \lambda λ ,所以式子中有一个部分为: − λ s ( t ) -\lambda s(t) λs(t)
  • 增长速度与 a ( t ) a(t) a(t) 的值的大小成正比,设比例系数为 μ \mu μ ,所以式子中有一个部分为: + μ a ( t ) +\mu a(t) +μa(t)

但是,题目中说到,广告只能影响这种商品在市场上尚未饱和的部分(设饱和量为M),所以有两个选择:分段函数 或者 渐进函数。

我选择使用渐进函数,渐近线为M,增长部分改为: μ a ( t ) ( 1 − s ( t ) M ) \mu a(t)\left(1-\frac{s(t)}{M}\right) μa(t)(1Ms(t))

这样,当 s=M 或者 a=0 时,销量都不会上涨,符合题意。

将所有分析合并,建立如下模型:
d s d t = μ a ( t ) ( 1 − s ( t ) M ) − λ s ( t ) \frac{\mathrm{d} s}{\mathrm{d} t}=\mu a(t)\left(1-\frac{s(t)}{M}\right)-\lambda s(t) dtds=μa(t)(1Ms(t))λs(t)

(2)

广告宣传只进行有限时间 τ \tau τ ,且广告费为常数a,所以建立下列函数
a ( t ) = { a / c , 0 < t ⩽ τ , 0 , t ⩾ τ . a(t)= \begin{cases}a/c, & 0<t \leqslant \tau, \\ 0, & t \geqslant \tau . \end{cases} a(t)={a/c,0,0<tτ,tτ.
带入(1)中公式,并移项,有:
d s d t + ( λ   + μ a M τ ) s   = μ a τ , 0   < t < τ , {\frac{\mathrm{d}s}{\mathrm{d}t}}+\left(\lambda\,+{\frac{\mu a}{M\tau}}\right)s\ ={\frac{\mu a}{\tau}},0\ <t<\tau, dtds+(λ+Mτμa)s =τμa,0 <t<τ,

(3)

先讨论 0 < t ⩽ τ 0<t \leqslant \tau 0<tτ :

为了运算方便,进行换元:
b = λ   +   μ a M τ ,     c = μ a τ b = {\lambda\,+\,{\frac{\mu a}{M\tau}} , \,\,\, c={\frac{\mu a}{\tau}}}\\ b=λ+Mτμa,c=τμa
则上述式子化简为:
d s d t   +   b s   =   c   , {\frac{\mathrm{d}s}{\mathrm{d}t}\,+\,b s\,=\,c\,,} dtds+bs=c,

(4)

这是一个一阶非齐次线性微分方程.

假设初始值为 s 0 s_0 s0 ,可以得出结果为:
s ( t ) = c b ( 1 − e − b t ) + s 0 e − b t , 0 < t ⩽ τ s(t)= \frac{c}{b}\left(1-\mathrm{e}^{-b t}\right)+s_{0} \mathrm{e}^{-b t}, 0<t \leqslant \tau s(t)=bc(1ebt)+s0ebt,0<tτ

(5)

再讨论 t ⩾ τ t \geqslant \tau tτ :

式子为:
d s d t = −   λ s , {\frac{\mathrm{d}s}{\mathrm{d}t}}=-\,\lambda s, dtds=λs,
可以得出结果为:
s ( t ) = s ( τ ) e λ ( τ − t ) , t ⩾ τ . s(t)= s(\tau) \mathrm{e}^{\lambda(\tau-t)}, t \geqslant \tau . s(t)=s(τ)eλ(τt),tτ.
(6)

合并所有结果,得到:
s ( t ) = { c b ( 1 − e − b t ) + s 0 e − b t , 0 < t ⩽ τ , s ( τ ) e λ ( τ − t ) , t ⩾ τ . s(t)= \left\{\begin{array}{ll} \frac{c}{b}\left(1-\mathrm{e}^{-b t}\right)+s_{0} \mathrm{e}^{-b t}, & 0<t \leqslant \tau, \\ s(\tau) \mathrm{e}^{\lambda(\tau-t)}, & t \geqslant \tau . \end{array}\right. s(t)={bc(1ebt)+s0ebt,s(τ)eλ(τt),0<tτ,tτ.

3.结果

s ( t ) s(t) s(t) 的变化符合下列函数:
s ( t ) = { c b ( 1 − e − b t ) + s 0 e − b t , 0 < t ⩽ τ , s ( τ ) e λ ( τ − t ) , t ⩾ τ . s(t)= \left\{\begin{array}{ll} \frac{c}{b}\left(1-\mathrm{e}^{-b t}\right)+s_{0} \mathrm{e}^{-b t}, & 0<t \leqslant \tau, \\ s(\tau) \mathrm{e}^{\lambda(\tau-t)}, & t \geqslant \tau . \end{array}\right. s(t)={bc(1ebt)+s0ebt,s(τ)eλ(τt),0<tτ,tτ.
其中,
b = λ   +   μ a M τ ,     c = μ a τ b = {\lambda\,+\,{\frac{\mu a}{M\tau}} , \,\,\, c={\frac{\mu a}{\tau}}}\\ b=λ+Mτμa,c=τμa

习题6.5(1)

1. 题目要求

【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码),数学建模,数学建模,matlab,开发语言,算法,线性代数
【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码),数学建模,数学建模,matlab,开发语言,算法,线性代数

2.解题过程

解:

Matlab的工具箱提供了几个解常微分方程的功能函数,如ode45 、ode23 、ode113 。其中,ode45 采用四五阶龙格库塔方法(以下简称RK方法),是解非刚性常微分方程的首选方法; ode23 采用二三阶龙格库塔方法。

高阶常微分方程,必须做变量替换, 化成一阶微分方程组,才能使用Matlab求数值解。

y 1 = y , y 2 = y ′ y_1=y,y_2=y^{\prime} y1=y,y2=y ,则原式化为:
{ y 1 ′ = y 2 , y 1 ( π 2 ) = 2 , y 2 ′ = ( n 2 x 2 − 1 ) y 1 − y 2 x , y 2 ( π 2 ) = − 2 π . \left\{\begin{array}{ll} y_{1}^{\prime}=y_{2}, & y_{1}\left(\frac{\pi}{2}\right)=2, \\ y_{2}^{\prime}=\left(\frac{n^{2}}{x^{2}}-1\right) y_{1}-\frac{y_{2}}{x}, & y_{2}\left(\frac{\pi}{2}\right)=-\frac{2}{\pi} . \end{array}\right. {y1=y2,y2=(x2n21)y1xy2,y1(2π)=2,y2(2π)=π2.

接下来就可以用ode45来解决相关问题。

3.程序

求解的MATLAB程序如下:

clc, clear

syms y(x) % 符号变量
dy = diff(y); % 一阶导
d2y = diff(dy); % 二阶导

% 为了分析比较,首先求解符号解
y = dsolve(x^2*d2y+x*dy+(x^2 - 1 / 4)*y, ...
    y(pi/2) == 2, dy(pi/2) == -2/pi); % 直接所有内容
y = simplify(y); % 化简结果
symdisp(y); % 直观输出函数(自建函数)
fplot(y); % 画图
hold on

%龙格库塔方法求解数值解
dy_2 = @(x, y) [y(2); (1 / 4 / x^x - 1) * y(1) - y(2) / x]; % 方程组的右端 注意:用分号隔开!!!

% 求解的区间是 [pi / 2, 15]
% 注意:2和-2/pi是区间左端点的时候的函数值,即x=pi/2时
[x, y] = ode45(dy_2, [pi / 2, 15], [2, -2 / pi]);
plot(x, y(:,1), '*'); % 画图 注意画的是y1

legend('符号解','数值解');

4.结果

微分方程求解结果如下:

【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码),数学建模,数学建模,matlab,开发语言,算法,线性代数

通过函数曲线可以看出,解析解和数值解吻合。

【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码),数学建模,数学建模,matlab,开发语言,算法,线性代数

习题6.5(2)

1. 题目要求

【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码),数学建模,数学建模,matlab,开发语言,算法,线性代数

【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码),数学建模,数学建模,matlab,开发语言,算法,线性代数

2.解题过程

解:

y 1 = y , y 2 = y ′ y_1=y,y_2=y^{\prime} y1=y,y2=y ,则原式化为:
{ y 1 ′ =   y 2   , y 1 ( 0 )   =   1   , y 2 ′ = −   y 1 c o s x   , y 2 ( 0 )   =   0. \left\{\begin{array}{ll} y_{1}^{\prime}= \,y_{2}\,,&{{y_{1}(0)~=~1\,,}} \\ y_{2}^{\prime}= -\,y_{1}\mathrm{cos}x\,,&y_{2}(0)~=\,0. \end{array}\right. {y1=y2,y2=y1cosx,y1(0) = 1,y2(0) =0.
接下来就可以用ode45来解决相关问题。

3.程序

求解的MATLAB程序如下:

clc, clear

% 使用幂级数解作为对照
power_series = @(x) 1 - 1 / gamma(3) * x.^2 + 2 / gamma(5) * x.^4 - 9 / gamma(7) * x.^6 + 55 / gamma(9) * x.^8;
x = 0:0.1:4;
y = power_series(x);
plot(x, y);
hold on

%龙格库塔方法求解数值解
dy = @(x, y) [y(2); -y(1) * cos(x)]; % 方程组的右端 注意:用分号隔开!!!

[x, y] = ode45(dy, [0, 4], [1, 0]);
plot(x, y(:, 1), '*'); % 画图 注意画的是y1

legend('幂级数解', '数值解');

4.结果

通过函数曲线可以看出,当x较小的时候,级数解的近似值和数值解吻合较好。

【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码),数学建模,数学建模,matlab,开发语言,算法,线性代数

习题6.6

1. 题目要求

【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码),数学建模,数学建模,matlab,开发语言,算法,线性代数

2.第(1)问

解:

(1)

【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码),数学建模,数学建模,matlab,开发语言,算法,线性代数

如图建立坐标系。

我们可以看出,小船的和速度是水速和静水速度的向量和,其中,水速平行与河岸(y轴),静水速度始终朝向B点。

根据正交分解,我们可以求出x与y方向的速度:
d x d t = −   v 2 cos ⁡ θ   , d y d t = v 1 −   v 2 sin ⁡ θ . {\frac{\mathrm{d}x}{\mathrm{d}t}}=-\,v_{2}\cos\theta\,,{\frac{\mathrm{d}y}{\mathrm{d}t}}=v_{1}-\,v_{2}\sin\theta. dtdx=v2cosθ,dtdy=v1v2sinθ.

根据几何关系,我们可以求出:
cos ⁡ θ   =   x x 2   +   y 2 , sin ⁡ θ   =   y x 2   +   y 2 , \cos\theta\,=\,{\frac{x}{\sqrt{x^{2}\,+\,y^{2}}}},\sin\theta\,=\,{\frac{y}{\sqrt{x^{2}\,+\,y^{2}}}}, cosθ=x2+y2 x,sinθ=x2+y2 y,
联立(14)(15)式,得到:
d x d t = − v 2   x x 2 + y 2   , d y d t = v 1 − v 2   y x 2 + y 2 , {\frac{\mathrm{d}x}{\mathrm{d}t}}=-v_{2}\,{\frac{x}{\sqrt{x^{2}+y^{2}}}}\,,{\frac{\mathrm{d}y}{\mathrm{d}t}}=v_{1}-v_{2}\,{\frac{y}{\sqrt{x^{2}+y^{2}}}}, dtdx=v2x2+y2 x,dtdy=v1v2x2+y2 y,
将(16)的两个式子相除,得到:
d y d x = −   k   x 2 + y 2 x + y x , 0 < x < d \frac{\mathrm{d}y}{\mathrm{d}x}=-\,k\,{\frac{{\sqrt{x^{2}+y^{2}}}}{x}}+{\frac{y}{x}},0<x<d dxdy=kxx2+y2 +xy,0<x<d
这是一个一阶齐次微分方程,于是得到初值问题:
{ d y d x = −   k   x 2 + y 2 x + y x , 0 < x < d y ( d ) = 0 \left\{\begin{array}{ll} {\frac{\mathrm{d}y}{\mathrm{d}x}}=-\,k\,{\frac{{\sqrt{x^{2}+y^{2}}}}{x}}+{\frac{y}{x}},0<x<d\\ y(d)=0 \end{array}\right. {dxdy=kxx2+y2 +xy,0<x<dy(d)=0
为了求解这个微分方程,我试图使用Matlab的dsolve函数解决,但是matlab无法解决这个微分方程。

【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码),数学建模,数学建模,matlab,开发语言,算法,线性代数

使用Wolfram Mathematica软件的Dsolve函数,成功解出了微分方程的解为:
y   =   d 2   [ ( x d ) 1 − k   −   ( x d ) 1 + k   ] , 0 < x < d . y\,=\,\frac{d}{2}\,\Bigl[\left(\frac{x}{d}\right)^{1-k}\,-\,\left(\frac{x}{d}\right)^{1+k}\,\Bigr],0<x<d. y=2d[(dx)1k(dx)1+k],0<x<d.

3.第(2)问

根据第一问,可知参数方程为:
{ d x d t = − 2 x x 2 + y 2 , x ( 0 ) = d d y d t = 1 − 2 y x 2 + y 2 , y ( 0 ) = 0 \left\{\begin{array}{ll} {\frac{\mathrm{d}x}{\mathrm{d}t}}=-{\frac{2x}{\sqrt{x^{2}+y^{2}}}},x(0)=d\\ {\frac{\mathrm{d}y}{\mathrm{d}t}}=1-{\frac{2y}{\sqrt{x^{2}+y^{2}}}},y(0)=0 \end{array}\right. dtdx=x2+y2 2x,x(0)=ddtdy=1x2+y2 2y,y(0)=0
求解的MATLAB程序如下:

clc, clear

d = 100;
v1 = 1;
v2 = 2;
k = 0.5;

% 第一问的解析解
y = @(x)d / 2 * ((x / d).^(1 - k) - (x / d).^(1 + k));
fplot(y, [0, 100]);
hold on

%龙格库塔方法求解数值解
dy = @(t, xy) [-2 * xy(1) / sqrt(xy(1)^2+xy(2)^2); 1 - 2 * xy(2) / sqrt(xy(1)^2+xy(2)^2)]; % 方程组的右端 注意:用分号隔开!!!

[t, xy] = ode45(dy, [0, 60], [100, 0]);
plot(xy(:, 1), xy(:, 2), '*'); % 画图 注意画的是y1

legend('符号解', '数值解');

4.结果

渡河所需时间需要不断地尝试,修改处如下图所示:

【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码),数学建模,数学建模,matlab,开发语言,算法,线性代数

测试过程如下图(测试数据为40,很明显未到岸):

【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码),数学建模,数学建模,matlab,开发语言,算法,线性代数

最终,试验得到渡河所用时间为66.6秒,数值解与解析解的对照图(航行曲线)如下图:

【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码),数学建模,数学建模,matlab,开发语言,算法,线性代数

如果这篇文章对你有帮助,欢迎点赞与收藏~文章来源地址https://www.toymoban.com/news/detail-841134.html

到了这里,关于【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【数学建模】《实战数学建模:例题与讲解》第十讲-时间序列预测(含Matlab代码)

    【数学建模】《实战数学建模:例题与讲解》第十讲-时间序列预测(含Matlab代码)

    本系列侧重于例题实战与讲解,希望能够在例题中理解相应技巧。文章开头相关基础知识只是进行简单回顾,读者可以搭配课本或其他博客了解相应章节,然后进入本文例题实战,效果更佳。 如果这篇文章对你有帮助,欢迎点赞与收藏~ 时间序列预测是一种预测方法,它通过

    2024年02月03日
    浏览(10)
  • 【数学建模】《实战数学建模:例题与讲解》第十二讲-因子分析、判别分析(含Matlab代码)

    【数学建模】《实战数学建模:例题与讲解》第十二讲-因子分析、判别分析(含Matlab代码)

    本系列侧重于例题实战与讲解,希望能够在例题中理解相应技巧。文章开头相关基础知识只是进行简单回顾,读者可以搭配课本或其他博客了解相应章节,然后进入本文正文例题实战,效果更佳。 如果这篇文章对你有帮助,欢迎点赞与收藏~ 判别分析是一种统计方法,它根据

    2024年02月04日
    浏览(16)
  • 【数学建模】《实战数学建模:例题与讲解》第十四讲-模拟退火、遗传算法(含Matlab代码)

    【数学建模】《实战数学建模:例题与讲解》第十四讲-模拟退火、遗传算法(含Matlab代码)

    本系列侧重于例题实战与讲解,希望能够在例题中理解相应技巧。文章开头相关基础知识只是进行简单回顾,读者可以搭配课本或其他博客了解相应章节,然后进入本文正文例题实战,效果更佳。 如果这篇文章对你有帮助,欢迎点赞与收藏~ 现代优化算法,自20世纪80年代初开

    2024年02月04日
    浏览(17)
  • 【数学建模】经典简单例题实例1

    【数学建模】经典简单例题实例1

    例1 某人平时下班总是按预定时间到达某处,然然后他妻子开车接他回家。有一天,他比平时提早了三十分钟到达该处,于是此人就沿着他朋友来接他的方向步行回去并在途中遇到了她,这一天,他比 平时 提前了十分钟到家,问此人共步行了多长时间? 该问题求解涉及到对

    2023年04月21日
    浏览(10)
  • 数学建模 | 第一章 线性规划例题

    数学建模 | 第一章 线性规划例题

    例1.1 某机床厂生产甲、乙两种机床,每台销售后的利润分别为 4000 元与 3000 元。生产甲机床需用A、B机器加工,加工时间分别为每台2小时和1小时;生产乙机床需用A、B、C三种机器加工,加工时间为每台各一小时。若每天可用于加工的机器时数分别为A机器10小时、B机器8小时和

    2024年02月03日
    浏览(14)
  • 数学建模超细致讲解,从建立模型到论文写作

    数学建模超细致讲解,从建立模型到论文写作

    目录 奖状证书 赛事介绍 题型概况 获奖比例 比赛时间 官方网站 赛前准备 团队分工 建模 编程 写作 软件准备 知识体系 学习要点 资源推荐 bilibili 书籍 算法储备 赛事相关  比赛策略  评委解读 结语 我们团队在数学建模领域浸淫多年,积累了无数宝贵经验,这篇文章是我们

    2024年02月13日
    浏览(14)
  • 2023mathorcup大数据数学建模竞赛A题完整论文讲解

    2023mathorcup大数据数学建模竞赛A题完整论文讲解

    大家好呀,从发布赛题一直到现在,总算完成了2023mathorcup大数据数学建模竞赛A题完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 论文共67页,一些修改说明9页,正文52页,附录

    2024年02月06日
    浏览(10)
  • 2023认证杯数学建模第二阶段C题完整论文讲解

    2023认证杯数学建模第二阶段C题完整论文讲解

    大家好呀,从昨天发布赛题一直到现在,总算完成了认证杯二阶段C题完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 C第二阶段完整论文共64页,一些修改说明7页,正文47页,附录

    2024年02月09日
    浏览(29)
  • 2023华数杯数学建模C题母亲对婴儿影响论文完整讲解

    2023华数杯数学建模C题母亲对婴儿影响论文完整讲解

    大家好呀,从昨天发布赛题一直到现在,总算完成了华数杯数学建模C题完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 C题论文共72页,一些修改说明7页,正文54页,附录11页。 这

    2024年02月14日
    浏览(8)
  • 数学建模实战Matlab绘图

    数学建模实战Matlab绘图

    二维曲线、散点图 绘图命令: plot( x,y,’line specifiers’,’ PropertyName ’, PropertyValue ) 例子:绘图表示年收入与年份的关系 ‘--r*’:-- 设置线型; r: 设置颜色为红色; * 节点型号 ‘ linewidth ’:设置线宽;‘ markersize ’ :节点大小 常用命令: hold on(off):在一张图上持续绘图

    2024年01月21日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包