matlab解高次方程组(MATLAB解高次方程)

本文目录
- MATLAB解高次方程
- 如何用matlab 求解高阶方程
- 怎样用MATLAB求解高次方程
- 怎样用matlab解多元高次方程只有一个方程,我要多组解的那种
- 急!matlab解多元高次方程组
- 用matlab解高次方程组
MATLAB解高次方程
solve函数解方程用的是符号计算而非数值计算的方法,是在复数域上求解代数方程,其程序内部的求解算法由于和符号计算结合在一起变得比较复杂。
方程要求实根推荐用牛顿迭代法。
x(k+1)=x(k)-f(k)/f’(k),
只要方程收敛即可以通过设置初值来得到实数解。
clear;
%改变运算精度
format long;
%设置误差和误差容限
wucha=1;
eppp=10^-30;
%赋初值
x=-1;
%迭代次数,防止函数发散时死循环
n=0;
%开始迭代
while wucha》=eppp&&n《=2000;
n=n+1;
x1=x;
x=x-(5*x^23-6*x^7+8*x^6-5*x^2)/(23*5*x^22-7*6*x^6+6*8*x^5-2*5*x);
wucha=abs(x1-x)/(1+abs(x));
end
%显示
sprintf(’方程解为:%0.8f’,x)
通过x的赋值,我得到的结果为
在-10000~-0.5;-0.5~0.5;0.5~10000内
实数根分别为:
-1.041631176358943;
0;
0.976776193980718;
如何用matlab 求解高阶方程
如何用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=;%依题意写入知道的X和Y的三组值
c=;
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=;%系数矩阵
b=;%等号右边列
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=;
y0=
=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)式有
即 同理,
因此,只有变化时,才能得到频率即
所以不为零的坐标矩阵元为
根据定义
对于存在的波函数,应为实数,所有的矩阵元也为实数,由厄密算符的性质得
为了计算坐标的矩阵元,由对易关系
又 代入上式易得
写为矩阵形式,有
根据矩阵的乘法规则,有
又,则有由前面的分析知,只有时,才存在矩阵元,代入上式,
从该方程我们可以得出
矩阵元不为零,但是当时,矩阵元则
即
又
依次类推,得出
最后,我们得到坐标矩阵元不为零的表达式
又谐振子的能量可以用来表示,且,计算该能量得
其中,对于全部的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,);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
怎样用MATLAB求解高次方程
% 最后一句改为
i0=solve(Ttq*ig*et/r*i0-Ff-Fw);
% 因为你前面定义过syms i0,所以solve里不用引号,可以直接把各个参数代入,是一个自变量为i0的sym类型的表达式,不加引号的话也不能加=号,方程两边要挪到一边。
%如果你不定义syms i0,那也可以直接用
i0=solve(’Ttq*ig*et/r*i0-Ff-Fw=0’ , ’i0’)
% 此时因为多个未知数,所以必须指定所求的i0,结果用其他参数表示,所以要换成数值,还要加一句
x=subs(i0) %这句的意思就是用现有变量内容替换sym类型里的变量名
怎样用matlab解多元高次方程只有一个方程,我要多组解的那种
这个可以借助矩阵来解,利用自动控制理论的系统矩阵转换到约旦标准型的过程,即是对s求根的过程,因此可以如下作:
设方程为s^n+(An-1)*s^(n-1)+.....+A1*s+A0=0
其中,A0,A1...An-1为各个系数,最高次项的系数要化为1
写为如下n*n阶友矩阵
0 1 0 ..........0
0 0 1 ..........0
..................
0 0 0 ..........1
-A0 -A1 -A2.....-An-1
也就是最下面一行的元素是方程各项系数的负值,上面对角线以上部分为1,其他为0
设以上矩阵为A
在matlab利用:
=eig(A);
T和Λ都是矩阵;
T是归一化以后的变换矩阵,对于你目前的这个方程,是没有什么用处的;
Λ矩阵对角线上的数值,就是你需要的解了,对角线上的数值若有相同的表示方程有重根,几个相同表示几重根
如果是多元的,先把个同元的放到一起,设一个等式,令这个等式为一个变量,对每一个自变量都这么作,最后可以得到这些自变量和这个设定值的关系
例如f(x)+g(y)+h(z)=0
令f(x)=A, g(y)=B; h(z)=C,利用上面的友矩阵求根法,求出的x,y,z对应的矩阵Λ分别为Λ1,Λ2,Λ3
他们分别是A,B,C的表达式,由于A+B+C=0,因此还可以把C用A,B表示,即第三个矩阵Λ3,即z可用A,B表示出来,
而A B就是最小的变量了,这个值可以任意取(当然了,要在函数值域之内)
这样x,y,z就可以用A,B表示出来,如果要研究x,y,z的根的变化情况,只用让A,B取一些值就可以了
急!matlab解多元高次方程组
既然是“解多元一次方程组”的话,如果你把系数抽取出来生成矩阵,然后使用矩阵除法就好了。这样处理矩阵的问题matlab就非常之强大了。
例如:
x1+2*x2+x3=1;
x1-x3=3;
然后提取系数ax=b
a=[1
2
1;
1
0
-1];
b=;
这样就好了,更详细可以看一下书籍《线性代数》
用matlab解高次方程组
把方括号都改成圆括号,v后面的小数点去掉。
syms
x
y
z
v
=solve(’(x-1700)^2+(y-700)^2-(x-2900)^2-(y-900)^2=0’,...
’sqrt((x-500)^2+(y-3300)^2+z^2)-sqrt((x-300)^2+(y-200)^2+z^2)-5*v/3=0’,...
’sqrt((x-1400)^2+(y-2200)^2+z^2)-sqrt((x-2300)^2+(y-2800)^2+z^2)-3*v/2=0’,...
’sqrt((x-800)^2+(y-1600)^2+z^2)-sqrt((x-2300)^2+(y-2800)^2+z^2)-v/15=0’);

更多文章:
在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)
2026年10月11日 05:20
countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)
2026年10月11日 03:30
正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)
2026年10月11日 03:00
orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)
2026年10月10日 23:00
display的用法(display是什么意思 详解display的含义和用法)
2026年10月10日 22:00
html全部居中代码(怎么让网页居中显示,html如何让网页居中)
2026年10月10日 21:10





