matlab偏微分方程工具箱(matlab偏微分方程工具箱下载)

海潮机械 2023-01-03 20:31 编辑:admin 131阅读

1. matlab偏微分方程工具箱下载

如何用matlab求解微分方程的数值解和解析解?

一、微分方程的数值解可以ode函数来求解。其求解方法:

1、自定义微分方程组函数,odefun(x,y)

2、定义x【0,10】间若干等份的数值,如n=50

3、定义y的初值,即

y0=[2,7];

4、使用ode45函数求y(x),z(x)数值解,即

[x,y]=ode45(@odefun,x,y0);

5、使用plot函数,绘制x—y(x),x—z(x)曲线图

这里,y(1)代表y(x)的数值解,y(2)代表z(x)的数值解

二、微分方程的解析解可以dsolve函数来求解。

1、对变量y(x),z(x)进行声明,即

syms y(x) z(x)

2、对变量y(x),z(x)求一阶导数,即

Dy=diff(y,1);Dz=diff(z,1);

3、使用dsolve求y(x),z(x)解析表达式,即

[y,z]=dsolve(Dy-z==sin(x),Dz+y==1+x,y(0)==2,z(0)==7)

4、将x【0,10】间划分若干等份,如n=50

5、分别计算与x对应的y(x),z(x)值

6、使用plot函数,绘制x—y(x),x—z(x)曲线图

三、使用hold on命令,将微分方程组的数值解曲线图和解析解曲线图,表示在同一图窗中。

2. 偏微分方程 matlab

利用dsolve函数求微分方程的符号解(通解):对于一些不是很难,要求出通解的微分方程,用dsolve函数求解。

1. 打开Matlab软件-->点击新建脚本菜单,新建一个脚本文件用于编写微分方程求解程序。

2. 输入微分方程求解程序-->点击保存-->点击运行。

3. 在matlab的命令窗口即可看到求解结果,是一个关于参数a,b的表达式。

3. 偏微分方程matlab解法

偏微分函数可用diff(z,x)。z表示函数,x是自变量

4. matlab 偏微分工具箱

题主给出的微分方程组的图像,可以按下列步骤来实现。

1、首先,根据已知微分方程组,自定义微分方程组函数,ode_fun(x,s)

2、然后,用ode45函数求解,其微分方程组的数值解

[x,s]=ode45(@ode_fun,tspan,S0)

式中:tspan-x的范围,S0-初值

3、最后,用plot函数绘制其微分方程组的图像

按上述步骤编程后的运行结果。

5. matlab 偏微分方程

前言:matlab只是个软件,用来完成机械的计算,而如何安排这些计算,需要用户掌握最基本的数学概念。这篇将介绍工程数学中常用的数学概念,与matlab似乎并不相关,但实则是matlab的基础。

1.数值与符号

如果给工程数学问题分类,最大的两类肯定是数值问题和符号问题,对应matlab的数值运算和符号运算。简而言之,数值运算就是所有的变量的值已知,求解的也是一些具体的值;符号运算则刚好相反,不要求所有的变量都已知,求解的结果也不是变量具体的值,而是变量之间的关系。一个简单的例子是

①数值问题:求解一元二次方程,ax2+bx+c=0,其中a=b=c=1,所求得的结果一定是x=几点几+几点几i,是个复数,是个具体的数值。

②符号问题:求解一元二次方程,ax2+bx+c=0,所求的的结果一定是x=求根公式,是abc的函数,是个关系

可见,一个问题是数值问题还是符号问题,很大程度上决定于结果需要求解的是数值还是关系。当然两个问题也可以相互转化,比如数值问题的一元二次方程,我们一般会先转化成符号问题,把abc代入求根公式,求出来变量x的具体数值。但实际中,一般我们并不推荐这样做,原因是matlab的数值和符号是完全不同的两套系统,相互转化不仅需要多余的数值符号转换语言,更可能带来查错的不便。

2.典型数值问题

以下是常见的数值问题,文中提到的解法均可在数值计算、科学计算、数值算法这类书中找到。

2.1代数方程

代数方程又分为线性方程和非线性方程,线性方程一般可以转化为矩阵形式AX=b,对A求逆即可。求逆的数值解法一般有高斯赛德尔迭代,超松弛迭代等。非线性方程一般转化为f(x)=zeros其中x是个向量,右侧的zeros表示f是个多输出函数,数值解法一般是迭代,常见的有牛顿迭代,最速梯度,点斜式等。

2.2常微分方程

常微分方程一般转化为Dy=f(y,t),且y(0)=y0是初始条件,其中y和Dy都是向量,f也是个多输出函数,数值解法有欧拉法,龙格库塔法。

2.3偏微分方程

偏微分方程比较复杂,matlab处理偏微分方程也不专业,我也几乎不用matlab处理这类问题。但工程数学上,偏微分方程的解法有两类,差分法和有限元法。差分法需要采用中心差分,迎风差分等。有限元需要计算刚度矩阵等。

2.4插值和拟合

插值和拟合是完全不同的两个数学概念,虽然很多时候很多人都混淆了。两者的描述都可以归结为:已知函数上的点(x1,y1),(x2,y2)...(xn,yn),求一个已知的x,对应的y的数值。插值常用的多项式插值,三次样条插值。拟合的本质是一个最优化问题,其中最常用的一种拟合是线性拟合,求解方法是最小二乘法。

2.5离散周期傅里叶变换

严格说来,这并不能算一个数学问题,只是一种运算方式,就好像加减乘除一样。特殊性在于这种变换是对于一个向量进行,且运算后的结果依然是个向量。这里提出来是为了强调这种傅里叶变换的限定,要求是离散周期,这也是数值方法能处理的唯一一种傅里叶变换。

2.6最优化问题

最优化问题比较宽泛,一般可以归结为求目标函数f(x)的最大或者最小值,其中f是一个单输出的函数,x是一个向量。其中x需要满足线性约束条件、非线性约束条件、上下界。具体的解法有最速梯度,遗传,蚁群,退火等算法。

2.7数值积分

已知函数上的点(x1,y1),(x2,y2),...(xn,yn),求函数在x1到xn的定积分。常见算法有矩形公式,梯形公式,辛普森公式。类似的问题还有数值求导。

3.典型符号问题

以下是常见的符号问题,需要特别指出的是,无解问题。数值问题中也有一部分无解问题,但大多数工程中是碰不到的。而符号问题恰好相反,绝大部分我们遇到的符号问题都是没有解的,或者准确的说,没有解析解。比如求一元五次方程,我们知道x和这些系数存在关系,但无法写出显式的表达式,也就是说没有解析解。

3.1递推转通项

这个问题可以归结为:已知xn+1=f(xn),求xn,常见于数列的推导。

3.2代数方程

区别于数值问题中的代数方程, 这里的代数方程问题可以描述为:f(x,c)=0,求x=x(c),这里需要求解的其实是x和c的关系。

3.3常微分方程

区别于数值问题中的常微分数方程, 这里的代数方程问题可以描述为:Dy=f(y,t,c),求y=x(t,c),一般无需初值条件。

3.4符号积分

区别于数值问题中的数值积分,这里的符号积分可以描述为:已知函数关系y=f(x),求y的不定积分。同样的问题还有符号求导。

matlab最基础教程(一):软件基本概念

前言:①如果你是第一次使用matlab,建议阅读本教程。②以2017a版本为基础,适用于2014a及之后的版本,之前的版本未测试。③结合这两个月在坛子里回答的问题,整理成教程,水平有限,欢迎指正。

1.matlab的界面

home标签下,找到layout进行设置/复位,可以设置各板块的显示与隐藏。其中有几个部分,请务必要显示

①Current Folder:中文一般翻译成工作路径,一般设置成一个自己建立的、有读写权限的文件夹,例如我的文档下建立一个matlab文件夹

②Command Window:字面意思是命令窗口,用来运行代码,所有的代码都是在这里输入

③Workspace:字面意思是工作空间,其实就是暂存所有运行结果的地方,“暂”的具体含义是:关闭matlab后丢失

2.软件中的基本概念

2.1 函数

matlab之所以强大,就是因为提供大量的函数,你也可以建立自定义函数,方法是:Home->New->function。自定义函数一般保存在工作路径下。函数文件的特征是:扩展名m,内容的第一行以function开头,后续内容是“输出变量=函数名(输入变量)”。且函数名和文件名相同。

每个函数在Command Window中运行,用来完成特定的计算任务,运行方式是输入“输出变量=函数名(输入变量)”,然后按回车。例如有个系统自带的函数是用来求绝对值的,函数名abs,所以在Command Window里输入“a=abs(-1)”,就会显示运算结果为“a=1”。且运算结果会在Workspace里出现一个变量a,双击后可看到a的值是1。

2.2 脚本

可以理解为特殊的函数,这种函数内容的开头没有function那行,因此没有输入、输出变量,也没有函数名。文件扩展名和函数一样是m,也需要在Command Window里运行。脚本都是用户建立的,方法是:Home->New Script。一般保存在工作路径下。脚本的功能就是完成用户需要的、复杂的计算任务,通常脚本里会调用很多函数。

2.3 GUI

一般翻译为界面,就是人机交互界面的意思。写脚本处理问题的方法有点麻烦,让人看起来更像是码农,所以现在很多问题可以通过界面点点鼠标解决。这时候就需要打开界面,打开方法是:在APPS标签里可以找到所有已安装的GUI工具,单击即可。注意右边有个小三角可以点开。和函数一样,用户也可以自己建立自定义GUI,这部分较为复杂,对新手而言有点遥远。

2.4 toolbox

一般翻译成工具箱,matlab将功能相近或者应用上自成体系的一组函数和GUI打包成一个toolbox。正版的matlab在购买时,几乎每一个toolbox都是要单独收费的,所以toolbox也可以理解为matlab产品的模块,一个工具箱就是一个产品/商品。

2.5 simulink

一般用matlab解决问题的过程是:用户自定义脚本,在Command Window里运行脚本。而脚本的运行逻辑是顺序执行,和一般的编程一样。simulink则提供另一种思路,图形化编程,有点像labview,这种方法很适合于物理模型的仿真,因此有时用“matlab编程”和“simulink仿真”强调。使用方法是在home标签下点击simulink。

3.获得帮助

常用的获得帮助有四种方法

①home标签里,有个Help标志,点开后可以获得各工具箱/产品的完整帮助文档。新版本中默认使用在线,改用本地帮助的办法是在home标签里,Preferences下的matlab/Help里选择installed locally

②cn.mathworks.com官网上找到支持,然后可以获得教程。这种方法获得的帮助文档和第一种方法一样。

③在Command Window里输入 doc+函数名 来获得帮助。比如输入"doc fft"可以获得离散傅里叶变换函数fft的帮助和范例。这种方法获得的文档是前两种方法文档中的部分。当然,前提是你要知道函数名,才能找到帮助。这种方法适合于获得系统自带函数的使用说明。

④使用GUI时,通常界面的角落里有Help,点开可以获得帮助。这种方法获得的文档是第一和第二种方法文档中的部分。这种方法适合于获得系统自带GUI的使用说明。

这几种方法中,最常用的是第三种,只要知道自己需要的函数名,就可以用这种方式获得说明和范例。而实际使用中,一般常用的系统自带函数,也并不是非常多,大概几十个?真正需要牢记使用方法的可能就几个,通常都是知道函数名,要用的时候doc一下。

6. 微分方程Matlab

function [Y] = RK45(t,X,f,h)K1=f(t,X);K2=f(t+h/2,X+h/2*K1)

;K3=f(t+h/2,X+h/2*K2)

;K4=f(t+h,X+h*K3)

;Y=X+h/6*(K1+2*K2+2*K3+K4)

;end以上是4阶龙格库塔法的代码:自己写函数,存为f.

mfunction dxdt = f (t,x)dxdt(1)=exp(x(1)*sin(t))+x(2)

;dxdt(2)=exp(x(2)*cos(t))+x(1)

; % x(1)是你的f,x(2)是你的gdxdt=dxdt(:)

;end自己给出t0,x0,h的值(初始时间,初值,步长)

如果求t0到t1的轨迹的话:给个例子如下t0=0;t1=5;h=0.02;x0=[-1;-1];T=t0:h:t1;X=zeros(length(x0),length(T));X(:,1)=x0;for j=1:length(T)-1 X(:,j+1)=RK45(T(j),X(:,j),@(t,x) f(t,x),h)

;endplot(T,X(1,:));hold on;plot(T,X(2,:),'r')

;具体参数自己设置

7. 用matlab求偏微分方程

示例:

1. 求解微分方程 y ' + 2xy = xe-x2

syms x y; y=dsolve('Dy+2*x*y=x*exp(-x^2)','x')

2.. 求微分方程 xy ' + y - e x = 0 在初始条件 y (1) = 2e 下的特解并画出解函数的图形.

syms x y; y=dsolve('x*Dy+y-exp(1)=0','y(1)=2*exp(1)','x');ezplot(y)