【数学建模】常微分,偏微分方程

news2024/11/18 21:40:02

1.常微分方程

普通边界  

已知t0时刻的初值    ode45()  龙格-库塔法 一阶,高阶都一样 如下:

s(1) = y , s(2)=y' 

s(3) = x , s(4)=x'  

//匿名函数   下为方程组   核心函数
s_chuzhi = [0;0;0;0];  //初值 分别两个位移和速度的初值
t0 = 0:0.2:180;  
f = @(t,s)[s(2);(f*cos(w*t) - K1*s(2) - s(1)*rou*g*Aw - K2*(s(1) - s(3)) - K3*(s(2)-s(4)) ) / (m+namd);
           s(4);( K2*(s(1)-s(3)) + K3*(s(2)-s(4)) ) / m1];
[t,s] = ode45(f,t0,s_chuzhi);

分段边界 非匿名函数

% 主函数
s_chuzhi = [0;0;0];  %  位移,速度,加速度的初值
t0 = 0:0.2:180;  
[t,s] = ode45(@f1,t0,s_chuzhi);




% f1函数
% s(1) = s , s(2) =s' , s(3) = s''
function ds = (t,s)
    ds = zeros(3,1);  %有更高阶的可以初始化为 4,1 5,1 等等
    
    %分段  可以是以函数值或自变量时间分段
    if ...
        s(1) = ...    %s
        s(2) = ...    %s'
        s(3) = ...    %s''  下同

    else if ...
        s(1) = ...
        s(2) = ...
        s(3) = ...

    else ...
        s(1) = ...
        s(2) = ...
        s(3) = ...

end

 

 手写改进的ode45()函数代码

function varargout=odes_rk4(odefun,xspan,y0,n) 
% 经典四阶 Runge-Kutta 法求解微分方程组
if nargin<4
 n=10; % 默认区间等分数为 10
end
w=length(y0); % 方程的维数
x=linspace(xspan(1),xspan(2),n+1); % 离散节点值
y=[y0(:),zeros(w,n)].'; % 存储微分方程的解向量
K=zeros(4,w); % 存储节点处的导数值
for k=1:n 
 l=x(k+1)-x(k); % 步长
 K(1,:)=feval(odefun,x(k),y(k,:)); % 求 K1 的值
 K(2,:)=feval(odefun,x(k)+l/2,y(k,:)+l/2*K(1,:)); % 求 K2 的值
 K(3,:)=feval(odefun,x(k)+l/2,y(k,:)+l/2*K(2,:)); % 求 K3 的值
 K(4,:)=feval(odefun,x(k)+l,y(k,:)+l*K(3,:)); % 求 K4 的值
 y(k+1,:)=y(k,:)+l/6*[1,2,2,1]*K; % 经典四阶 Runge-Kutta 公式
end
[varargout{1:2}]=deal(x(:),... % 第一个输出参数为离散节点值
 y); % 第二个输出参数为微分方程的解

复杂边界值(即已知初始值,也知道末尾值),用bvp4c()函数

2.偏微分方程

1. pdepe()函数 椭圆-抛物线型

控制方程  左边界 右边界 初始值

标准格式

 初始值格式

 边界值标准格式   左边界 右边界 两个方程

m = 0;  % m 结合标准方程求出
x = [0 0.005 0.01 0.05 0.1 0.2 0.5 0.7 0.9 0.95 0.99 0.995 1];
t = [0 0.005 0.01 0.05 0.1 0.5 1 1.5 2];

sol = pdepe(m,@pdex4pde,@pdex4ic,@pdex4bc,x,t);  %有三个函数
u1 = sol(:,:,1);
u2 = sol(:,:,2);

figure
surf(x,t,u1)
title('u1(x,t)')
xlabel('Distance x')
ylabel('Time t')

figure
surf(x,t,u2)
title('u2(x,t)')
xlabel('Distance x')
ylabel('Time t')
% --------------------------------------------------------------
function [c,f,s] = pdex4pde(x,t,u,DuDx)  %函数一  结合标准方程格式(1)求程求 c,f,s
c = [1; 1]; 
f = [0.024; 0.17] .* DuDx; 
y = u(1) - u(2);
F = exp(5.73*y)-exp(-11.47*y);
s = [-F; F]; 
% --------------------------------------------------------------
function u0 = pdex4ic(x);    %函数二  方程初始值 即t=0时刻的值
u0 = [1; 0]; 
% --------------------------------------------------------------
function [pl,ql,pr,qr] = pdex4bc(xl,ul,xr,ur,t)  %结合左边界标准格式(3)求p,q  
pl = [0; ul(2)];                                 %结合右边界标准格式(3)求p,q 
ql = [1; 0]; 
pr = [ur(1)-1; 0]; 
qr = [0; 1]; 

2.一维热传导方程解法

clc,clear;
a=1;   %热传导方程中的 
dx=0.02;   %尽量大
x=0:dx:1;
dt=0.0001; %尽量小
t=0:dt:1;

%构造温度分布矩阵
u=zeros(length(x),length(t));

u(:,1)=sin(pi*x); %初始条件  可以改
m1=10+0.5*sin(t); %左边界条件 可以改     m1就是那个μ1 ,本子上记的
m2=10-0.5*sin(10*t); %右边界条件 可以改  m2就是那个μ2

%系数矩阵
A=-2*eye(length(x))+diag(ones(1,length(x)-1),1)+diag(ones(1,length(x)-1),-1);
 
for n=1:length(t)-1
    u(:,n+1)=u(:,n)+(a^2*dt/dx^2)*A*u(:,n) ; %A是系数矩阵  a是热传导方程公式中的
    
%第一类边界条件的话
    u(1,n+1)=m1(n+1);                       %单独计算每一行的左边界值
    u(end,n+1)=m2(n+1);                     %单独计算每一行的右边界值
    
%第二类边界条件的话
    %u(1,n+1)=u(2,n+1)-m1(n+1)*dx;
    %u(end,n+1)=u(end-1,n+1)+m2(n+1)*dx;
    
%第三类边界条件的话
     

end

plot(x,u(:,end)); %画出最后一行

figure
[T,X]=meshgrid(t,x);
surf(X,T,u);
shading interp
 


%%  加热源 f
clc,clear;
a=1;   %热传导方程中的 
dx=0.02;   %尽量大
x=0:dx:1;
dt=0.00001; %尽量小
t=0:dt:1;

%构造温度分布矩阵
u=zeros(length(x),length(t));

u(:,1)=0; %t=0初始条件  可以改
f=20*exp(-20*(x-1/2).^2);        %热源
m1=0+0.0*sin(t); %左边界条件 可以改
m2=0-0.0*sin(10*t); %右边界条件 可以改


%系数矩阵
A=-2*eye(length(x))+diag(ones(1,length(x)-1),1)+diag(ones(1,length(x)-1),-1);
c=1; 
for n=1:length(t)-1
    u(:,n+1)=u(:,n)+(a^2/dx^2*A*u(:,n)+f')*dt ; %A是系数矩阵  a是热传导方程公式中的
    
    %第一类边界条件的话
    %u(1,n+1)=m1(n+1);                       %单独计算每一行的左边界值
    %u(end,n+1)=m2(n+1);                     %单独计算每一行的右边界值
    
    %第二类边界条件的话
    %u(1,n+1)=u(2,n+1)-m1(n+1)*dx;
    %u(end,n+1)=u(end-1,n+1)+m2(n+1)*dx;
    
    
    %第三类边界条件的话
    u(1,n+1)=(dx*m1(n+1)-c*u(2,n+1)) / (dx-c);  % c为公式中的系数 具体看笔记
    u(end,n+1)=(dx*m2(n+1)+c*u(end-1,n+1)) / (dx+c);
end

plot(x,u(:,end)); %画出最后一行
%axis([x(1) x(end) 0 1]);
figure
[T,X]=meshgrid(t,x);
surf(X,T,u);
shading interp

3.一维波动方程  b站吴一东

3.最小二乘法

实际的一组数据和拟合出来的一组数据进行逐个:

(1)作差 

(2)平方

(3)再求和

(4)再迭代使得和越来越小(迭代用随机优化算法或变步长算法遍历都行)

(5)画图  拟合图 还有的看论文

需要画神魔图?????

4.二分搜索法 适合单变量,单目标最优化算法

主要适合于单变量,单调函数

% 单变量优化 
 clc,clear
 xmin = 1;
 xmax = 5;
 x = xmin:0.0001:xmax;
 yy = ones(1,length(x)).*4;
 plot(x,exp(x),x,yy,' r:');
 i = 1;
 hold on
 while (abs(xmax-xmin)>1e-5)
     xmid(i) = (xmax+xmin)/2;  %取中点  自变量
     ymid(i) = exp(xmid(i)); %将中点带入函数计算结果  因变量 前提函数得是单调函数
     if ymid(i)>4   % 4为函数目标值 这是已知了函数目标值
         xmax = xmid(i);
     else
         xmin = xmid(i);
     end
     plot(xmid(i),ymid(i),'ro'); %要画中点收敛图
     hold on
     i=i+1;
 end
 figure
 plot(xmid,'k');
 xlabel('迭代次数');
 ylabel('中点位置变化');
 figure
 plot(ymid,'k');
 xlabel('迭代次数');
 ylabel('中点位置处的函数值变化');

5.遗传算法 

6.绘图

  1.多条线在同一张图上,不同颜色,不同线段

figure
plot(t(1,:),T(11,:),'-');
hold on
plot(t(1,:),T(21,:),'--');
plot(t(1,:),T(31,:),':');
plot(t(1,:),T(41,:)'-.');
plot(t(1,:),T(51,:));
plot(t(1,:),T(61,:));
plot(t(1,:),T(71,:));
plot(t(1,:),T(81,:));
hold off
legend({'x=0.3','x=0.6','x=3.6','x=6.6','x=8.4','x=10.2','x=12.7','x=15.2'},'Location','southeast','NumColumns',2);

 

 

   2.三维图函数

mesh(),plot3(),  scatter(),  scatter3()

figure
[t,x] = meshgrid(t,x);
surf(t,x,T)
shading interp

 3.数据导入函数xlsread()

data = xlsread('实验数据.xlsx',2); %提取表格二数据
t = data(:,1); %表格二第一列数据
T_test = data(:,2);  %表格二第二列数据

7.随机优化算法(2018问题一)+ 最小二乘法或其他 --- > 数据拟合

8.梯度法-最优化算法

得画U型图   算法具有局限性 

算法:

  

9.多起点全局搜索算法(MultiStart 算法


10.定积分与不定积分

1.不定积分:

在int命令中加入积分限,就可以求得函数的定积分值。

syms x
>> int(log(x)/(1-x)^2)
 
ans =
 
- log(x/(x - 1)) - log(x)/(x - 1)  %不定积分求出来为解析解


 2.定积分:

syms x
>> d = int(exp(-x)/(x+2),x,0,2)
 
d =
 
-exp(2)*(ei(-2) - ei(-4))
 
>> double(d)
ans =
 
    0.333        %定积分求出来为数值解

11.求解常微分,偏微分方程的通解,特解 dsolve -> 链接

12.近五年国A题

2016 系泊系统的设计

2017 CT系统参数标定及成像

2018 高温作业专用服装设计

2019 高压油管的压力控制

2020 炉温曲线

2021  “FAST”主动反射面的形状调节

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/962376.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于YOLO v5的病虫害检测与优化

《A fast and lightweight detection algorithm for passion fruit pests based on improved YOLOv5》 a new point-line distance loss function is proposed to reduce redundant computations and shorten detection timethe attention module is added to the network for…

postgis中将数据库备份到其它数据库中还原

1、备份数据库 可以用命令操作 pg_dump -U postgres -h hostip -d joint-boot -Fc > "D:\\python\\Project\\PG\\data\\joint.jar"2、创建新的数据库 可以在其它postgis数据库中创建 3、还原数据库 可以用命令操作 pg_restore -U postgres -h hostip -d C -F…

vue之若依分页组件的导入使用(不直接使用若依框架,只使用若依分页组件)

vue之若依分页组件的导入使用 步骤 步骤&#xff1a; 工具类&#xff1a;src/utils/scroll-to.js 样式&#xff1a;src/assets/styles/ruoyi.scss 组件&#xff1a;src/components/Pagination 全局挂载&#xff1a;src/main.js 复制工具类 复制若依框架中的src/utils/scrol…

GO远程构建并调试

GO远程调试 之前写C&#xff0c;一直习惯了本地IDERemote CMake/GDB编译调试的模式。 因为6.824课程需要用GO&#xff0c;好像没有特别好的支持。记录一下如何配置调试的。 IDE: Goland 操作系统&#xff1a;Windows 远程服务器&#xff1a;Ubuntu 首先配置SSH,让其可以连接到…

1.12 进程注入ShellCode套接字

在笔者前几篇文章中我们一直在探讨如何利用Metasploit这个渗透工具生成ShellCode以及如何将ShellCode注入到特定进程内&#xff0c;本章我们将自己实现一个正向ShellCodeShell&#xff0c;当进程被注入后&#xff0c;则我们可以通过利用NC等工具连接到被注入进程内&#xff0c;…

内存泄漏的原因

内存泄漏的原因 静态集合类引起内存泄漏 静态集合的生命周期和 JVM 一致&#xff0c;所以静态集合引用的对象不能被释放。 public class OOM {static List list new ArrayList(); ​public void oomTests(){Object obj new Object();list.add(obj);} } 单例模式 和上面的例子…

【Vue3 知识第五讲】条件渲染、列表渲染知识详解

文章目录 一、条件渲染1.1 概述1.2 演示代码 二、列表渲染2.1 使用 指令 v-for 遍历数组2.2 **使用 指令 v-for 遍历对象** 十、案例作业十一、总结 在前端开发过程中&#xff0c;条件和循环是经常被用到的逻辑。vue中封装了自己的组件渲染指令&#xff0c;可以更加方便的帮助开…

vue2 vuex

一、Vuex 概述 Vuex 是一个 Vue 的 状态管理工具&#xff0c;状态就是数据。 大白话&#xff1a;Vuex 是一个插件&#xff0c;可以帮我们管理 Vue 通用的数据 (多组件共享的数据)。 使用场景 某个状态 在 很多个组件 来使用 (个人信息) 多个组件 共同维护 一份数据 (购物车) …

Go framework-go-zero

一、Go Go天然适配云原生&#xff0c;而云原生时代已经到来&#xff0c;各个应用组件基础设施等都应该积极的去拥抱云原生。 不要让框架束缚开发。 1、go-zero介绍 go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性&#xff0c;…

新唐nuc980-串口测试笔记

测试新唐nuc980串口功能的过程&#xff0c;如下&#xff1a; 1. 直接下载使用官方的ubuntu系统。 2. 直接使用官方的文件&#xff0c;在家目录下 NUC970_Buildroot 目录下或者自己git clone NUC970_Buildroot 工程也可以&#xff0c;克隆地址如下&#xff1a; git clone https:…

Revit SDK 介绍:AutoRoute 自动路由

前言 这个例子介绍如何用 Revit API 创建自动路由&#xff0c;本质上就是通过 API 创建机电管道。 内容 将出风口和风机自动连接&#xff0c;最终效果。 下面按步骤将其组装起来&#xff1a; 风机立管及连接件 生成红框内容的核心逻辑&#xff1a; ducts.Add(Duct.Create…

Ei Scopus 双检索 |第三届信息与通信工程国际会议国际会议(JCICE 2024)

会议简介 Brief Introduction 2024年第三届信息与通信工程国际会议国际会议(JCICE 2024) 会议时间&#xff1a;2024年5月10日-12日 召开地点&#xff1a;中国福州 大会官网&#xff1a;JCICE 2024-2024 International Joint Conference on Information and Communication Engin…

结构体的简单介绍

目录 概念&#xff1a; 与数组类比&#xff1a; 结构体声明&#xff1a; 注意&#xff1a; 结构体变量、全局变量、局部变量&#xff1a; 结构体声明中包含其他结构体变量&#xff1a; 结构体变量的初始化&#xff1a; 包含了其他结构体变量的初始化&#xff1a; 结构体…

报错:axios 发送的接口请求 404

axios 发送的接口请求 404 一、问题二、分析 一、问题 二、分析 axios 发送的接口请求 404&#xff0c;根本没有把接口信息发送到后端&#xff0c;这个时候你可以查看检查一下自己的接口名字&#xff0c;或让后端配合换一个接口名字再发送一次接口请求

性能提升5倍!翼支付基于多租户的降本增效实践

作者&#xff1a;王硕 中国电信翼支付 DBA 翼支付是天翼电子商务有限公司旗下第三方服务平台&#xff0c;面向 7000 万月活用户&#xff0c;提供民生缴费、消费购物、金融理财等服务内容&#xff0c;依托云计算、大数据、人工智能等技术&#xff0c;联合合作伙伴&#xff0c;赋…

Python操作文件的读取和写入,详解和案例介绍

Python文件IO操作是Python编程中非常重要的一部分&#xff0c;可以通过文件IO操作来读取和写入文件。文件IO操作提供了一种在程序中处理文件的方法&#xff0c;可以读取文件中的数据&#xff0c;也可以将数据写入到文件中。在本文中&#xff0c;我们将介绍Python中文件IO操作的…

【一对一学习小组】2023年有三AI-CV高阶-项目实战组发布,超过30个案例,60小时项目实战+2大基础方向专栏+3本书赠送...

2023年有三AI-CV高阶-项目实战组正式发布&#xff01;有三AI已经推出了CV初-中-高级培养计划&#xff08;原名有三AI-CV季划&#xff09;&#xff0c;这是我们的终身计算机视觉学习小组。 该培养计划具有以下特点&#xff1a; 【系统性】配套有非常完备的理论与实践 【永久性】…

stable diffusion实践操作-SD原理

本文专门开一节写提示词相关的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 正文 1、出图原理 1.1 AI画画不是和人一样&#xff0c;从0开始&#xff0c;而是一个去噪点的过程&#xff1a; 1.2 逆向去噪 所有的人图片都是从一张噪…

大型商城系统功能逻辑架构_各大系统关系设计_OctShop

一个商城系统应该具备什么样的功能才算一个合格的网上商城呢&#xff0c;才能满意用户的下单支付&#xff0c;退款退货&#xff0c;售后等需求呢&#xff01; 商城一般分为三种角色&#xff1a;买家&#xff0c;商家&#xff0c;平台&#xff0c;这三种角色都有各自的功能特点。…

记录--前端使用a链接下载内容增加loading效果

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 问题描述&#xff1a;最近工作中出现一个需求&#xff0c;纯前端下载 Excel 数据&#xff0c;并且有的下载内容很多&#xff0c;这时需要给下载增加一个 loading 效果。 代码如下&#xff1a; // util…