如何用matlab 求解高阶方程?

如题所述

第1个回答  2022-10-09

如何用matlab 求解高阶方程?

用roots(p)函数求解 其中p是方程的各次方的系数组成的矩阵 比如 你这道题的求根程序为: roots(p)matlab运行后的结果为:ans =10.3180 4.0487 1.8166 + 1.3141i 1.8166 - 1.3141i

如何用MATLAB求解LOGISTIC方程

至于Lyapunov方程的求解,你可以查下,下面我编写的一个帖子,里面详细说明了Lyapunov方程该如何使用Matlab求解,你可以参考下
【Lyapunov、Sylvester和Riati方程的Matlab求解】:matlabsky./thread-539-1-1.
%by dynamic
%see also :matlabsky.
%contact me matlabsky@gmail.
%2009.2.
%

急~如何利用MATLAB求解高阶方程的系数

依题意就变成了以下的方程组
%a+x(1)*b+x(1)^2*c+x(1)^3*d=y(1);
%a+x(2)*b+x(2)^2*c+x(2)^3*d=y(2);
%a+x(3)*b+x(3)^2*c+x(3)^3*d=y(3);
%写成矩阵的形式:xx(3*4)*aa(4*1)=y(3*1) 其中3*1表示3行1列
x=[1 2 3];y=[2; 1; 5];%依题意写入知道的X和Y的三组值
c=[0 1 2 3];
xx=zeros(3,4);
for i=1:3
xx(i,:)=x(i).^c;
end
aa=xx\y %因为是一个超定方程,即方程个数小于未知数个数只能得到一个特解
结果:
aa =
3.3636
0
-2.1364
0.7727

matlab如何用ode求解x’’+x=t这种二阶方程

分成两个一阶的做。

请问一个方程如何用MATLAB求解,

fsolve即可

如何用matlab求解线性方程组

比如:
1*x1+2*x2=3
4*x1+7*x2=5
怎么解方程呢?
A=[1,2;4,7];%系数矩阵
b=[3;5];%等号右边列
x=inv(A)*b

如何用matlab求解微分方程并画图

function zd0412
function dy=odefun(t,y)
dy=[y(2);
3*sin(2*t)+exp(t)*y(1)-t*y(2)];
end
tspan=[0,2];
y0=[1;-1]
[t,y]=ode45(@odefun,tspan,y0);
plot(t,y(:,1))
end

如何用matlab求解定态薛定谔方程

摘要:本文首先对薛定谔方程的提出及发展做了一个简单介绍。然后,以在一维空间运动的粒子构成的谐振子的体系为例,详细介绍了矩阵法求解薛定谔方程的过程及公式推导。最后,通过MATLAB编程仿真实现了求解结果。
关键词:定态薛定谔方程求解 矩阵法
MATLAB仿真
薛定谔方程简介
1.1背景资料
薛定谔方程是由奥地利物理学家薛定谔提出的量子力学中的一个基本方程,是将物质波的概念和波动方程相结合建立的二阶偏微分方程,可描述微观粒子的运动,每个微观系统都有一个相应的薛定谔方程式,通过解方程可得到波函数的具体形式以及对应的能量,从而了解微观系统的性质。其仅适用于速度不太大的非相对论粒子,其中也没有包含关于粒子自旋的描述。当计及相对论效应时,薛定谔方程由相对论量子力学方程所取代,其中自然包含了粒子的自旋。
薛定谔方程建立于
1926年。它是一个非相对论的波动方程。它反映了描述微观粒子的状态随时间变化的规律,它在量子力学中的地位相当于牛顿定律对于经典力学一样,是量子力学的基本假设之一。设描述微观粒子状态的波函数为Ψ(r,t),质量为m的微观粒子在势场V(r,t)中运动的薛定谔方程为
在给定初始条件和边界条件以及波函数所满足的单值、有限、连续的条件下,可解出波函数Ψ(r,t)。由此可计算粒子的分布概率和任何可能实验的平均值(期望值)。当势函数V不依赖于时间t时,粒子具有确定的能量,粒子的状态称为定态。定态时的波函数可写成式中Ψ(r)称为定态波函数,满足定态薛定谔方程,这一方程在数学上称为本征方程,式中E为本征值,是定态能量,Ψ(r)又称为属于本征值E的本征函数。
量子力学中求解粒子问题常归结为解薛定谔方程或定态薛定谔方程。薛定谔方程揭示了微观物理世界物质运动的基本规律,被广泛地用于原子物理、核物理和固体物理,对于原子、分子、核、固体等一系列问题中求解的结果都与实际符合得很好。
定态薛定谔方程直角坐标系形式
定态薛定谔方程球坐标系形式
1.2定态薛定谔方程
条件
V(r,t)=V(r), 与t无关。
用分离变量法,
令Ψ=φ(r)f(t),代入薛定谔方程,得两个方程:
此称定态薛定谔方程
整个定态波函数形式:
特点:
波函数由空间部分函数与时间部分函数相乘;
B.时间部分函数是确定的。
定态波函数几率密度W与t无关,几率分布不随时间而变,因此称为定态。
1.3本征方程、本征函数与本征值
算符: 本征方程:
λ:本征值,有多个,甚至无穷多个
ψλ:本征值为λ的本征函数,也有多个,甚至无穷多个,有时一个本征值对应多个不同的本征函数,这称为简并。若一个本征值对应的不同本征函数数目为N,则称N重简并。
1.4
定态情况下的薛定谔方程一般解
1、定态薛定谔方程或不含时的薛定谔方程是能量本征方程,E就称为体系的能量本征值,而相应的解称为能量的本征函数。
2、当不显含时时,体系的能量是收恒量,可用分离变量。
3、解定态薛定谔方程,关键是写出哈密顿量算符。
2.
利用矩阵法求解薛定谔方程
以在一维空间运动的粒子构成的谐振子的体系为例。
该粒子的势能是,是谐振子的角频率,因此谐振子的哈密顿量为


当时,谐振子的势能变为无穷大,因此,粒子只能在有限的空间上运动,并且能量值谱是分立的。下面采用矩阵的方法,确定谐振子的能量分立值。
从运动方程出发
(1)
而势能 那么
又代入上式(1)得
即 (2)
在矩阵形式下,该方程可以写为
含时坐标矩阵元
(3)
对它求导,我们得到
代入上式后,有
(4)
其中
(5)
所以,除了当或外,所有的坐标矩阵元都等于零
当时,由(5)式有
即 同理,
因此,只有变化时,才能得到频率即
所以不为零的坐标矩阵元为
根据定义[12-14]
对于存在的波函数,应为实数,所有的矩阵元也为实数,由厄密算符的性质得

为了计算坐标的矩阵元,由对易关系
又 代入上式易得
写为矩阵形式,有
根据矩阵的乘法规则,有
又,则有由前面的分析知,只有时,才存在矩阵元,代入上式,
从该方程我们可以得出
矩阵元不为零,但是当时,矩阵元则


依次类推,得出
最后,我们得到坐标矩阵元不为零的表达式
又谐振子的能量可以用来表示,且,计算该能量得
其中,对于全部的1求和,只有当参数时坐标矩阵元不为零,因此得到

亦即
因此,谐振子的能级以为间隔,最低能级是
MATLAB仿真结果
线性谐振子的前六个本征函数

上图为线性谐振子的前六个本征函数,图中纵轴横线表示具有相同能量的经典线性谐振子的振动范围。
有限方势阱前六个本征函数
上图为有限方势阱的前六个本征函数,图中纵轴横线表示具有相同能量的经典线性谐振子的振动范围。

如何用matlab求解向量微分方程

ODE部分--------ODE--->ordinary differential equations先总述一下:D 1、ode的求解器ode       ODE的求解器有很多,在help里可以查到。列出了每一种求解器的适应范围(stiff或者nonstiff)以及它采用的数学原理,比如Runge-Kutta,Adams,NDFs之类。(这个在数值分析课中会学到,可惜偶当时觉得很无聊,后悔中)。      大家有时间多去了解了解,懂了来给大家分享分享:D 。      如果不懂那么多理论,优先采用ode45,如果你发现它计算的效率特别低下或者是计算根本出不来,则考虑换ode15s。     sol是任意名字。对于怎么把要求解的方程写为function,2楼例子。所以你告诉求解器这三样东西(输入参数),它就可以为你求解出y。                       sol = ode45(@yourfun,[tmin,tmax],[y0,y0'])                                          你的公式    积分范围    初值                  sol=ode45(@vdp1,[0,20],[2,0]);      把以上代码命令行里直接执行,这是matlab自带的一个例子。在workspace里你会看到多了一个变量叫sol.没错这就是求解器的返回值。它是一个1*1的结构体。双击它,你会看到它的内部组织,各个field以及它们的“形状”。每一个你都可以双击它,继续深入看它的结构。我现在关心的只有X,Ysolverextdata,x,y,stats,idata================================================================================2、求解计算完毕后,我们可以做什么      首先,当然是得到结果。      deval(sol,x,1)       sol如上,写在求解等号左边的变量名字,是返回来的handles。x是一组向量,是你期望求值的点。数字1就表示你要y第一行的值(这个是在求解微分方程组的情况。不明白什么叫第一行,就去双击sol,再双击y),如果去掉1,则返回矩阵,也就是所有y的值。在matlab命令行运行以下代码:     sol=ode45(@vdp1,[0,20],[2,0]);x=linspace(0,20,100);y=deval(sol,x,1);plot(x,y);      此外,我们还可以扩展,matlab叫做odextend。扩展什么?         odextend(sol,odefun,tfinal)       看到最后一个变量名了吧,t_final 这样明显一点。也就是,我之前算过的微分方程组,原来算到t1,我现在要接着继续计算到新的t_final。默认以上次计算的y终值,作为此次计算的初值。         odextend(sol,odefun,tfinal,yinit)      当然,如果你想重新给它赋初值,也可以加入参数yinit。(友情提示:获取上次计算的Y的终值:y=sol.y(:,end))      sol=odextend(sol,@vdp1,20);plot(sol.x,sol.y(1,:))=====================================================================================      3、求解器的参数设置   也 就是option这个东西,既然是选项,则也可以不设置它,采用默认值。        要设置的话,可以用odeset这个命令。怎么用?       option=odeset('name1',value1,'name2',value2......) (matlab所有参数设置基本上都是这种形式)                    name自然就是属性名字。value就是你赋予它的值。求解器可以设置哪些参数,而设置了这些参数有什么影响,而这些参数应该则么设置。在命令行里输入 help odeset:D 。看到的绝对比我讲得详细。所以我不多说了。(友情提醒,如果使用ode15什么来着,可以为它设置Jacobian这个参数,以更快更准更好的求解。如何设置,不懂的话,偶过后会贴。)        O=odeget(option,'name')         编过GUI的话这两个命令再熟悉不过了:D

相似回答