非线性方程求解
- 格式:ppt
- 大小:339.00 KB
- 文档页数:46


*姆● 解题技巧与方法 缠瞧礅 程 鼷晌 诩 ◎虞海磊 (杭州师范大学钱江学院数学与应用数学310012) 【摘要】近几十年来,随着数学研究本身的发展和大型 计算机的出现及完善,各种非线性问题目益引起科学家和 工程技术人员的兴趣和重视.特别是在近代物理和科学工 程计算中的一些关键问题,归根结底都依赖于某些特定的 非线性方程的求解.所以无论在理论研究方面,还是在实际 应用中,非线性方程的求解都占有非常重要的地位.本文所 提出的主要基于MATLAB程序设计教程,介绍了非线性代 数方程和非线性微分方程求解的几种方法. 【关键词】非线性微分;符号方程;积分因子;ode23 一、非线性方程求解的作用 非线性方程组的求解乃是非线性科学的核心;很多来 自工程、机械、科学研究等的实际问题最终都化为求解一个 非线性方程组;而非线性方程组的求解,是一个至今没有彻 底解决的数学问题;特别地,来自工程、机械等的几何约束 问题,最终都将产生一个非线性方程组,且该方程组中方程 和未知量的个数都非常多,且往往其中的未知量的次数还 非常高.因此,解决这些几何约束问题极其困难. 二、微分方程 微分方程指含有一次、二次乃至高次微分未知数的方 程,是解决偏微分方程、数理方程的基础.微分方程的表达 通式是f( , d ̄y, ,…, , )=o. 三、微分方程的线性化 大部分非线性微分方程,都不能得出通解.但是,可以 ,,2 对其在一定范围之内进行线性化求出近似解.例如, + d siny:3x.在y一0的情况下,siny—Y,我们得到近似线性微 2 , 分方程 Y:3x,它是可解的. d 一 有许多函数都是为了无法得出多项函数或超越函数形 式的解析解的微分方程而定义出来.这些特殊函数之所以 重要,是因为它们描述了自然界中的某些现象,例如,电子 的活动、鼓皮的振动、钟摆的摆动,等等. 四、常微分方程初值问题的数值解法 考虑常微分方程的初值问题Y =-厂(t,Y),Yo≤t≤T, Y(t0)=Yo. 所谓其数值解法就是求它的解,,(£)在节点t。<tl<…<t 处的近似值Yo,Y 一,y 的方法.所求的Yo,Y 一,ym的方法. 所以求得的Yo,Y 一,Y 称为常微分方程初值问题的数值解. 一般采用等距节点t =t。+nh(n=0,1,…,m),其中h为相邻两 个节点间的距离,叫做步长. 常微分方程初值问题的数值解法多种多样,比较常用 的有欧拉(Euler)法、龙格一库塔(Runge—Kutta)法、线性多 步法、预报校正法等. 五、龙格一库塔(Runge,Kutta)法 对于一阶常微分方程的初值问题,在求解未知函数Y 时,Y在t。点的值Y(t。)=Y。是已知的,并根据高等数学中的 中值定理,应有Y(to+h)y Y。+ t。,Y。),h>0,称为步长, Y(t0+2^)=Y2 Yl+ t1,Y。).一般地,在任何点t =to+访, 有Y(t0+ ^)=Y Y;一1+ 厂(t 一1,Y。~1)(i=1,2,…,n). 当(t。,Y。)确定后,根据上述递推式能计算出未知函数 Y在点t。=t。+ih(i=0,l,…,17,)的一例数值解Y =Y。,Y , Y2,…,Y ,(i=0,1,…,n). ● ・ ・ ● 当然,递推过程中有一个误差累计的问题.在实际计算 过程中,使用的递推公式一般进行改造,著名的龙格一库塔 公式是Y( +ih)=Y Y 一l十÷(kl+2k2+2k3+k4). 其中,k,= 0 一,), 。= 0 +—争,y 一,+—争 1, k3: 0。+÷,y 一,+÷ 21, =,(0.+ ,y 一。+ 3). 六、龙格一库塔法的实现 基于龙格一库塔法,MATLAB提供了求常微分方程值 解的函数,一般调用格式为: [t,Y]=ode23(‘name’,tespan,Y0), [t,Y]=ode45(‘name’,tespan,Y0). 其中,fname是定义_厂(t,Y)的函数文件名,该函数文件必须 返回一个列向量.Tespan形式为[t。, ,表示求解区间.Y。是初 始状态列向量.t和,,分别给出时间向量和相应的状态向量. 这两个函数分别采用了二阶、三阶龙格一库塔法和四阶、 五阶龙格一库塔法,并采用自适应变步长的求解方法,即当解 的变化较慢时采用较大的步长,从而使得计算速度很快,当解 的变化较快时步长会自动变小,从而使得计算精度很高. 七、符号常微分方程求解 在MATLAB中,用大写字母D表示导数.例如,Dy表示 Y ,D2y表示Y ,Dy(0)=5表示,, (0)=5.D3y+D2y+Dy— +5=0表示微分方程 Y +Y 一 +5=0.符号常微分方 程求解可以通过函数dsolve来实现,其调用格式为: dsolve(e,c, ). 该函数求解常微分方程e在初值条件c下的特解.参数 描述方程中的自变量,省略时按缺省原则处理,若没有给 出初值条件c,则求方程的通解. dsolve在求常微分方程组时的调用格式为: dsolve(el,e2,…,e ,cl,…,c ,口l,…, ). 该函数求解常微分方程组e 一,e 在初值条件下c 一, c 下的特解,若不给出初值条件,则求方程组的通解, 一,c 给出求解变量. 八、积分因子解非线性微分方程的一般应用 积分影子也可以用来解非线性微分方程.例如,考虑以 ,42 , 2 下的非线性二阶微分方程: =AyT. 可以看到, 是一个积分因子: 。 =A,,手‘ . 利用复合函数求导法则,可得 d【[2l I{d y, ̄ ]=詈( ).因此(鲁) = +co. 利用分离变量法,可得I—===二兰 ==t+C。. j 产 5 。 【参考文献】 [1]刘卫国.MATLAB程序设计教程.北京:中国水利水 电出版社. [2]何汉林,梅家斌.数值分析.北京:科学出版社. [3]王高雄,周之铭,朱思铭,王寿松.常微分方程(第三 版).北京:高等教育出版社. [4]吉米・威尔士.维基百科. 数学学习与研究
实验一:非线性方程求解
程序1:二分法:
syms f x;
f=input('请输入f(x)=');
A=input('请输入根的估计范围[a,b]=');
e=input('请输入根的误差限e=');
while (A(2)-A(1))>e
c=(A(1)+A(2))/2;
x=A(1);
f1=eval(f);
x=c;
f2=eval(f);
if (f1*f2)>0
A(1)=c;
else
A(2)=c;
end
end
c=(A(1)+A(2))/2;
fprintf('c=%.6f\na=%.6f\nb=%.6f\n',c,A)
用二分法计算方程:
1.请输入f(x)=sin(x)-x^2/2
请输入根的估计范围[a,b]=[1,2]
请输入根的误差限e=0.5e-005
c=1.404413
a=1.404411
b=1.404415
2.请输入f(x)=x^3-x-1
请输入根的估计范围[a,b]=[1,1.5]
请输入根的误差限e=0.5e-005
c=1.324717
a=1.324715
b=1.324718
程序2:newton法:
syms f x;
f=input('请输入f(x)=');
df=diff(f); x0=input('请输入迭代初值x0=');
e1=input('请输入奇异判断e1=');
e2=input('请输入根的误差限e2=');
N=input('请输入迭代次数限N=');
k=1;
while (k
x=x0;
if abs(eval(f))
fprintf('奇异!\nx=%.6f\n迭代次数为:%d\n',x0,k)
break
else
x1=x0-eval(f)/eval(df);
⾮线性⽅程求解
基于MATLAB的⾮线性⽅程的五种解法探讨摘要:本⽂利⽤matlab软件对⾮线性⽅程解法中的⼆分法、简单迭代法、⽜顿法、割线法以及Steffensen法的数值分析⽅法的算法原理及实现⽅法进⾏了探讨。对f x x x
=+-
()2ln2
的零点问题,分别运⽤以上五种不同的⽅法进⾏数值实验,⽐较⼏种解
法的优缺点并进⾏初步分析评价。
关键词:⼆分法、简单迭代法、⽜顿法、割线法、Steffensen法1、引⾔
在很多实际问题中,经常需要求⾮线性⽅程f(x) =0的根。⽅程f(x) =0的根叫做函数f(x)的零点。由连续函数的特性知:若f(x)在闭区间[a,b ]上连续,且()()0
f a f b
<
.
则f(x) =0在开区间(a,b)内⾄少有⼀个实根。这时称[a,b]为⽅程f(x) =0的根的存在区间。本⽂主要对⾮线性⽅程的数值解法进⾏分析,并介绍了⾮线性⽅程数值解法的五种⽅法。并设=+-.
f x x x
()2ln2
f x在[1,2]上的图形,如图1:. 显然,函数在[1,2]之间有⼀个零点。⾸先画出()
2、计算机配置
操作系统Windows 7 旗舰版
内存2GB
处理器AMD 4核 A6-3400M APU 1.4GHz
图.13、⼆分法
⼆分法的基本思想是将⽅程根的区间平分为两个⼩区间,把有根的⼩区间再平分为两个更⼩的区间,进⼀步考察根在哪个更⼩的区间内。如此继续下去,直到求出满⾜精度要求的近似值。
设函数()f x 在区间[a,b ]上连续,且f(a)·f(b) <0,则[a,b ]是⽅程f(x) =0的根的存在区间,设其内有⼀实根,记为x*。取区间[a,b ]的中点()
2k a b x +=
并计算1()f x ,则必有下列三种情况之⼀成⽴: (1) 1()f x =0,x1就是⽅程的根x*;(2)()f a .1()f x <0,⽅程的根x*位于区间[a, 1x ]之中,此时令111,a a b x ==; (3)1()f x .()f b <0,⽅程的根x*位于区间[1x ,b ]之中,此时令11a x =,1b b =。 在(2)、(3)两种情况下,取11
非线性微分方程的近似解法
一、泰勒级数方法
泰勒级数方法可以将非线性微分方程转化为线性微分方程,从而获得其近似解。该方法基于泰勒公式展开,将未知函数用其导数的级数表达式来逼近。通过截取级数的前几项,可以得到方程的近似解。这种方法的主要局限性在于,泰勒级数的收敛范围很小,因此只能用于小范围的近似计算。
二、微扰解法
微扰解法是一种将非线性微分方程转化为近似线性微分方程的方法。该方法假设非线性微分方程的解可以写成一个级数形式,其中级数中的项按照幂次递减。然后,通过求解线性微分方程的级数项,可以得到原方程的近似解。这种方法非常适用于具有小参数的问题。
三、极限环法
极限环法是一种通过运用线性微分方程的解来解决非线性微分方程的方法。该方法假设非线性微分方程的解为两个相近解的线性组合。然后,通过运用极限环理论,可以将原方程转化为一系列线性微分方程的组合,进而求得方程的近似解。
四、变分法
变分法是一种通过设定未知函数的一些形式,将非线性微分方程转化为一个变分问题的方法。通过求解该变分问题,可以得到非线性微分方程的近似解。变分法的核心思想是将问题转化为求一个泛函的驻定问题,通过变分法的原理求解该泛函,进而得到近似解。 五、数值解法
数值解法是一种通过数值计算的方法,来近似求解非线性微分方程。这种方法将微分方程离散化,将其转化为一个差分方程,通过计算机进行迭代运算,最终得到方程的近似解。数值解法的优点在于适用范围广,对各种类型的非线性微分方程都适用,但精度较低。
总结起来,非线性微分方程的近似解法有泰勒级数方法、微扰解法、极限环法、变分法和数值解法等。在实际应用中,我们可以根据具体情况选择合适的方法来解决非线性微分方程问题。