3 常微分方程的数值解法
数值分析第九章常微分方程数值解法

松弛法
通过迭代更新函数值并逐步放松约束 条件来逼近解,适用于刚性和非刚性 问题。
利用线性组合迭代函数值来逼近解, 具有更高的收敛速度和稳定性。
03
数值解法的稳定性分析
数值解法的稳定性定义
数值解法的稳定性是指当微分方程的初值有微小的扰动时, 其数值解的近似值的变化情况。如果数值解在微小扰动下变 化较小,则称该数值方法是稳定的。
更高的精度和稳定性。
数值逼近法
泰勒级数法
将微分方程的解展开为泰勒级数,通过截断级数来逼 近解。
多项式逼近法
利用多项式来逼近微分方程的解,通过选取合适的基 函数和系数来提高逼近精度。
样条插值法
利用样条函数来逼近微分方程的解,具有更好的光滑 性和连续性。
迭代法
雅可比迭代法
通过迭代更新函数值来逼近微分方程 的解,具有简单易行的优点。
初值和边界条件的处理
根据实际问题,合理设定初值和边界 条件,以获得更准确的数值解。
收敛性和误差分析
对数值解进行收敛性和误差分析,评 估解的精度和稳定性。
数值解法的应用案例分析
人口增长模型
通过数值解法求解人口增长模型,预测未来人口数量,为政策制 定提供依据。
化学反应动力学
利用数值解法研究化学反应的动力学过程,模拟反应过程和结果。
数值分析第九章常微分方 程数值解法
• 引言 • 常微分方程数值解法的基本思想 • 数值解法的稳定性分析 • 数值解法的收敛性和误差分析 • 数值解法的实现和应用案例
01
引言
常微分方程的应用背景
自然科学
描述物理、化学、生物等自然 现象的变化规律。
工程领域
控制系统设计、航天器轨道计 算等。
微分方程的数值解法

微分方程的数值解法微分方程是自然科学和现代技术领域中一种最基本的数学描述工具,它可以描述物理世界中的各种现象。
微分方程的解析解往往很难求出,因此数值解法成为解决微分方程问题的主要手段之一。
本文将介绍几种常见的微分方程的数值解法。
一、欧拉法欧拉法是微分方程初值问题的最简单的数值方法之一,它是由欧拉提出的。
考虑一阶常微分方程:$y'=f(t,y),y(t_0)=y_0$其中,$f(t,y)$表示$y$对$t$的导数,则$y(t_{i+1})=y(t_i)+hf(t_i,y_i)$其中,$h$为步长,$t_i=t_0+ih$,$y_i$是$y(t_i)$的近似值。
欧拉法的精度较低,误差随着步长的增加而增大,因此不适用于求解精度要求较高的问题。
二、改进欧拉法改进欧拉法又称为Heun方法,它是由Heun提出的。
改进欧拉法是在欧拉法的基础上进行的改进,它在每个步长内提高求解精度。
改进欧拉法的步骤如下:1. 根据当前$t_i$和$y_i$估算$y_{i+1}$:$y^*=y_i+hf(t_i,y_i),t^*=t_i+h$2. 利用$y^*$和$t^*$估算$f(t^*,y^*)$:$f^*=f(t^*,y^*)$3. 利用$y_i$、$f(t_i,y_i)$和$f^*$估算$y_{i+1}$:$y_{i+1}=y_i+\frac{h}{2}(f(t_i,y_i)+f^*)$改进欧拉法具有比欧拉法更高的精度,但是相较于其他更高精度的数值方法,它的精度仍然较低。
三、龙格-库塔法龙格-库塔法是一种广泛使用的高精度数值方法,它不仅能够求解一阶和二阶常微分方程,还能够求解高阶常微分方程和偏微分方程。
其中,经典的四阶龙格-库塔法是最常用的数值方法之一。
四阶龙格-库塔法的步骤如下:1. 根据当前$t_i$和$y_i$估算$k_1$:$k_1=f(t_i,y_i)$2. 根据$k_1$和$y_i$估算$k_2$:$k_2=f(t_i+\frac{h}{2},y_i+\frac{h}{2}k_1)$3. 根据$k_2$和$y_i$估算$k_3$:$k_3=f(t_i+\frac{h}{2},y_i+\frac{h}{2}k_2)$4. 根据$k_3$和$y_i$估算$k_4$:$k_4=f(t_i+h,y_i+hk_3)$5. 根据$k_1$、$k_2$、$k_3$和$k_4$计算$y_{i+1}$:$y_{i+1}=y_i+\frac{h}{6}(k_1+2k_2+2k_3+k_4)$龙格-库塔法的精度较高,在求解一些对精度要求较高的问题时,龙格-库塔法是一个比较好的选择。
常微分方程的解法总结总结

常微分方程的解法总结前言常微分方程(Ordinary Differential Equation,ODE)是研究一阶或高阶导数与未知函数之间关系的数学方程。
在物理学、工程学和计算机科学等领域,常微分方程扮演着重要的角色。
解决常微分方程是这些领域中许多问题的关键。
本文将总结常用的常微分方程解法方法,帮助读者加深对常微分方程的理解并提供解决问题的思路。
一、可分离变量法可分离变量法是一种常见且简单的求解常微分方程的方法。
它适用于形如dy/dx = f(x)g(y)的一阶常微分方程。
解题思路:1.将方程写成dy/g(y) = f(x)dx的形式,将变量进行分离。
2.两边同时积分得到∫(1/g(y))dy = ∫f(x)dx。
3.求出积分后的表达式,并整理得到解 y 的表达式。
使用这种方法解决常微分方程的步骤相对简单,但要注意确认分母不为零以及选取合适的积分常数。
二、特殊方程类型的求解除了可分离变量法,常微分方程还存在一些特殊的方程类型,它们可以通过特定的方法进行解决。
1. 齐次方程齐次方程是指形如dy/dx = F(y/x)的方程。
其中,F(t) 是一个只有一个变量的函数。
解题思路:1.令 v = y/x,即 y = vx。
将方程转化为dy/dx = F(v)。
2.对于dv/dx = F(v)/x这个方程,可以使用分离变量法进行求解。
3.求出 v(x) 后,将其代入 y = vx 得到完整的解。
2. 齐次线性方程齐次线性方程是指形如dy/dx + P(x)y = 0的方程。
解题思路:1.使用积分因子法求解,将方程乘以一个积分因子,使得左边变成一个可积的形式。
2.求积分因子的方法是根据公式μ = e^(∫P(x)dx),其中 P(x) 是已知的函数。
3.通过乘积的方式求解完整的方程。
3. 一阶线性常微分方程一阶线性常微分方程是指形如dy/dx + P(x)y = Q(x)的方程。
解题思路:1.使用积分因子法,将方程乘以一个积分因子,使得左边变成一个可积的形式。
常微分方程(组)的数值解法

刚性常微分方程组求解
function demo1 figure ode23s(@fun,[0,100],[0;1]) hold on, pause ode45(@fun,[0,100],[0;1]) %-------------------------------------------------------------------------function f=fun(x,y) dy1dx = 0.04*(1-y(1))-(1-y(2)).*y(1)+0.0001*(1-y(2)).^2; dy2dx = -1e4*dy1dx + 3000*(1-y(2)).^2; f = [dy1dx; dy2dx];
解算指令的使用方法
[T,Y]=ode45(@fun, TSPAN,Y0) 输出变量T为返回时间列向量;解矩阵Y的每一行对应于T的 一个元素,列数与求解变量数相等。
@fun为函数句柄,为根据待求解的ODE方程所编写的ode文
件(odefile); TSPAN=[T0 TFINAL]是微分系统y'=F(t,y)的积分区间;Y0 为初始条件
2.3 常微分方程(组)的数值解法
知识要点
常微分方程初值问题---ode45,0de23
微分方程在化工模型中的应用
•间歇反应器的计算 •活塞流反应器的计算
•全混流反应器的动态模拟
•定态一维热传导问题
•逆流壁冷式固定床反应器一维模型
•固定床反应器的分散模型
Matlab常微分方程求解问题分类
边值问题:
ode解算指令的选择(2)
2.根据常微分方程组是否为刚性方程
y ' Ay b( x) y ( x0 ) y0
常微分方程中的数值方法

常微分方程中的数值方法常微分方程是数学中的一个重要分支。
它主要研究的对象是随时间变化的函数。
在实际应用中,我们需要求解这些函数的解析解,但通常情况下,解析解并不容易得到,甚至是不可能得到。
因此,我们需要使用数值方法来求解这些函数的数值近似解。
在本文中,我们将介绍常微分方程中的数值方法。
一、欧拉法欧拉法是常微分方程数值解法中最基本的一种方法。
它是根据欧拉公式推导而来的。
具体地,我们可以将一阶常微分方程dy/dt=f(t,y)写成如下形式:y(t+h)=y(t)+hf(t,y(t))其中,h是步长,f(t,y)是t时刻y的导数。
欧拉法就是通过上面的公式进行逐步逼近,然后得到最终的数值解。
欧拉法的计算过程非常简单,但所得到的解可能会出现误差。
这是因为欧拉法忽略了f(t+h,y(t+h))和f(t,y(t))之间的变化。
因此,我们需要使用更为精确的数值方法来解决这个问题。
二、改进欧拉法为了解决欧拉法中的误差问题,我们可以使用改进欧拉法。
改进欧拉法又称作四阶龙格-库塔法。
它的基本思想是对欧拉法公式进行改进,以提高计算精度。
具体地,根据龙格-库塔公式,可将改进欧拉法表示为:y(t+h)=y(t)+1/6(k1+2k2+2k3+k4)其中,k1=h*f(t,y)k2=h*f(t+h/2,y+k1/2)k3=h*f(t+h/2,y+k2/2)k4=h*f(t+h,y+k3)改进欧拉法的计算过程比欧拉法要复杂些,但所得到的数值解比欧拉法更精确。
这种方法适用于一些特殊的问题,但在求解一些更为复杂的问题时,还需要使用其他的数值方法。
三、龙格-库塔法龙格-库塔法是求解常微分方程中数值解的常用方法之一。
它最常用的是四阶龙格-库塔法。
这种方法的基本思想是使用四个不同的斜率来计算数值解。
具体地,我们可以将四阶龙格-库塔法表示为:y(t+h)=y(t)+1/6(k1+2k2+2k3+k4)其中,k1=h*f(t,y)k2=h*f(t+h/2,y+k1/2)k3=h*f(t+h/2,y+k2/2)k4=h*f(t+h,y+k3)与改进欧拉法相比,龙格-库塔法的计算复杂度更高,但所得到的数值解更为精确。
常微分方程数值解法

介绍常微分方程数值解法常微分方程(ordinary differential equations,ODE)可用于描述许多日常存在的物理系统。
处理ODE问题常常被称为数值求解法,这指的是找到概括ODE或者其他适用于数学模型的解决方案来模括这些ODE。
这种解决方案可能在一系列不同方案中发挥重要作用,以此来提供更好的解释和预测。
常微分方程与几何图形更为相关,它利用二维或者三维空间中曲线的绘制以及分析。
通过引入一些不同的方法,可以对不同的常微分方程中的量进行描述,使得可以通过数值方法的解析来进行研究。
数值解法可能是时间消耗较多的,但有助于验证几何图形中的某些过程,以此帮助揭示数学模型。
四种常见的常微分方程数值解法四种常见的常微分方程数值解法是:前向差分法、向后差分法、中点法和全分方法。
•前向差分法:前向差分法的基本概念是利用ODE的特定解来表达时间步的影响。
这是一种基本的数值法,可以在ODE中确定任意位置的点作为终点。
在这里,任何这样的点都可以表示为ODE右边的时间步。
•向后差分法:它是反过来基于前向差分法。
它要求对ODE中的时间步进行逆向推导,以获得某一特定点的解。
向后差分法要求推导反向解中点,以便可以从每一步中获取该点的解。
•中点法:这是一种非常基本的数值解法,可以用来求解ODE中的某一步的解,但不具有直观的方法解释。
主要的思想是在每一次时间步中通过求出ODE的中点来寻找解。
•全分方法:这是一种更复杂的数值解法,它要求将ODE中的每一步解细分并解决。
与前面提到的三种解法不同,它首先要求将ODE分解成若干离散区间,然后计算每一段区间中的点。
这种解法可以更准确地进行处理,但时间消耗较多,因此比较少被使用。
优化方案在需要解决常微分方程时,为了得到最佳的结果,有必要考虑一些优化措施。
•首先,应考虑将一个复杂的ODE拆分成一些更易解决的问题。
这样做的结果是,预见到解决此ODR的总耗时将会降低。
•其次,为了加快计算速度,可以考虑使用预解算法。
常微分方程的数值解法

常微分方程的数值解法1. 引言常微分方程是自变量只有一个的微分方程,广泛应用于自然科学、工程技术和社会科学等领域。
由于常微分方程的解析解不易得到或难以求得,数值解法成为解决常微分方程问题的重要手段之一。
本文将介绍几种常用的常微分方程的数值解法。
2. 欧拉方法欧拉方法是最简单的一种数值解法,其具体步骤如下:- 将自变量的区间等分为n个子区间;- 在每个子区间上假设解函数为线性函数,即通过给定的初始条件在每个子区间上构造切线;- 使用切线的斜率(即导数)逼近每个子区间上的解函数,并将其作为下一个子区间的初始条件;- 重复上述过程直至达到所需的精度。
3. 改进的欧拉方法改进的欧拉方法是对欧拉方法的一种改进,主要思想是利用两个切线的斜率的平均值来逼近每个子区间上的解函数。
具体步骤如下: - 将自变量的区间等分为n个子区间;- 在每个子区间上构造两个切线,分别通过给定的初始条件和通过欧拉方法得到的下一个初始条件;- 取两个切线的斜率的平均值,将其作为该子区间上解函数的斜率,并计算下一个子区间的初始条件;- 重复上述过程直至达到所需的精度。
4. 二阶龙格-库塔方法二阶龙格-库塔方法是一种更为精确的数值解法,其基本思想是通过近似计算解函数在每个子区间上的平均斜率。
具体步骤如下: - 将自变量的区间等分为n个子区间;- 在每个子区间上计算解函数的斜率,并以该斜率的平均值近似表示该子区间上解函数的斜率;- 利用该斜率近似值计算下一个子区间的初始条件,并进一步逼近解函数;- 重复上述过程直至达到所需的精度。
5. 龙格-库塔法(四阶)龙格-库塔法是目前常用的数值解法之一,其精度较高。
四阶龙格-库塔法是其中较为常用的一种,其具体步骤如下:- 将自变量的区间等分为n个子区间;- 在每个子区间上进行多次迭代计算,得到该子区间上解函数的近似值;- 利用近似值计算每个子区间上的斜率,并以其加权平均值逼近解函数的斜率;- 计算下一个子区间的初始条件,并进一步逼近解函数;- 重复上述过程直至达到所需的精度。
常微分方程的数值解法

主要内容
§1、引言 §2、初值问题的数值解法--单步法 §3、龙格-库塔方法 §4、收敛性与稳定性 §5、初值问题的数值解法―多步法 §6、方程组和刚性方程 §7、习题和总结
§1、 引 言 主要内容 ➢研究的问题 ➢数值解法的意义
1.什么是微分方程 ? 现实世界中大多数事物
使得对任意的x [a,b]及y1, y2都成立
则称 f (x,y) 对y 满足李普希兹条件,L 称为 Lipschitz常数.
就可保证方程解的存在唯一性
若 f (x,y) 在区域 G连续,关于y
满足李普希兹 条件
一阶常微分方程的初值问题的解存在且唯一. 我们以下的讨论,都在满足上述条件下进行.
一阶常微分方程组常表述为:
y(x0
)
y0
(1.2)
种 数 值 解
法
其中f (x,y)是已知函数,(1.2)是定解条件也称为 初值条件。
常微分方程的理论指出:
当 f (x,y) 定义在区域 G=(a≤x≤b,|y|<∞)
若存在正的常数 L 使:
(Lipschitz)条件
| f (x, y1) f (x, y2) | L | y1 y2 | (1.3)
节点 xi a ihi,一般取hi h( (b a) / n)即等距
要计算出解函数 y(x) 在一系列节点
a x0 x1 xn b
处的近似值 yi y(xi )
y f (x, y)
y
(
x0
)
y0
a xb
(1.1) (1.2)
对微分方程(1.1)两端从 xn到xn1 进行积分
内部联系非常复杂
其状态随着 时间、地点、条件 的不同而不同
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
因之有
y ( x n 1 ) y n 1 h2 y ( ) 2
7
故尤拉方法仅为一阶方法。
3.1.2 隐式尤拉公式
1 改用向后差商 [ y( xn1 ) y( xn )] 替代方程 h
y ( xn1 ) f ( xn1 , y( xn1 ))
n=N?
n+1=>n x1=>x0,y1=>y0
结束
22
(3.11)
分别将 K 1 和 K 2 泰勒展开有 :
K1 f ( xn , y n ) y ( xn )
19
K 2 f ( xn p , y n phK1 ) y ( x n ) phy ( xn ) O(h 2 )
代入式(3.11)知:
y n 1 y ( x n ) hy ( x n ) ph2 y ( x n ) O(h 3 )
中南大学能源科学与工程学院
第三章 常微分方程的数值解法
内容提要
1. 尤拉方法 2. 改进的尤拉方法
3. 龙格-库塔方法
1
引言
一阶方程的初值问题:
y ' f ( x, y ) y( x0 ) y0
数值解法
寻求一系列离散节点 x1 x2 xn 上的近 似解 y1 , y 2 , y n , 。相邻两个节点的间距 h xn1 xn 称步长。
同尤拉方法的计算结果比较,改进的尤拉方法明显地改 善了精度。
17
3.3
龙格—库塔方法
3.3.1 龙格—库塔方法的基本思想 Runge-Kutta方法的基本思想: 在 [ xn
xn 1 ] 内多预报几个点的斜率值,然后将它们加
权平均作为平均斜率K*,则有可能构造出具有更高精度 的计算格式 。 对尤拉法:它取点 xn 的斜率值K f xn , y n 作为平均斜 率K*,精度自然很低。 对改进尤拉法:它用 xn 与 xn1 两个点的斜率值 K 1 和 K 2 取 算术平均作为平均斜率K*。
y n1 y n hf ( xn , y n )
其中n=0,1,2,…
尤拉 格式
若初值已知,则据上式可逐步算出y1,y2,…。
5
局部截断误差
在 yn y ( xn ) 的前提下,估计误差 y( xn1 ) yn1 ,这 种误差称为局部截断误差。 如果其局部截断误差为O(hp+1),称该数值方法的 精度是p阶的,或称该方法是p阶方法。
(3.14)
21
龙格—库塔方法流程图:
开始 读入 x0,y0,h,N n=1
x0+h=>x1 f(x0,y0)=>K1,f(x0+h/2,y0+hK1/2)=>K2 f(x0+h/2,y0+hK2/2)=>K3,f(x1,y0+hK3)=>K4 y0+h(K1+2K2+2K3+k4)/6=>y1
输出x1,y1 ≠
(3.13)
常用的四阶龙格—库塔格式 :
h y n 1 y n [ K1 2 K 2 2 K 3 K 4 ] 6 K1 f ( x n , y n ) h K 2 f ( x n 1 , y n K1 ) 2 2 h K 3 f ( xn 1 , yn K 2 ) 2 2 K 4 f ( x n 1 , y n hK3 )
尤拉、梯形法小结
显式尤拉方法是一种显式算法,计算量小,但精 度很低
梯形方法虽提高了精度,但它是一种隐式算法, 需要借助于迭代过程求解,计算量大
12
3.2.2 改进的尤拉格式
先用尤拉方法求得一个初步的近似值,记 y n1, 称之为预报值;预报值的精度不高,我们用它替代 梯形格式右端的yn+1再直接计算,得到校正值yn+1。 这样建立的预报—校正系统
类似地,用区间 [ xn xn1 ] 内三点或四点的斜率加权平均,可 分别得出三阶、四阶龙格—库塔格式。
20
典型的三阶龙格—库塔格式:
h y n 1 y n [ K1 4 K 2 K 3 ] 6 K1 f ( x n , y n ) K 2 f ( x 1 , y n h K1 ) n 2 2 K f ( x , y h ( K 2 K )) n 1 n 1 2 3
只要近似地算出其中的积分项,就可以获得 y(xn+1)的近似值。而选用不同的计算方法计算这个 积分项,就会得到不同的差分格式。 容易验证,数值积分采用矩形法得到尤拉公式。
10
3.2.1 梯形格式
为了提高精度,用梯形方法计算积分项:
xn 1 xn
h f ( x, y( x))dx [ f ( xn , y( xn )) f ( xn1 , y( xn1 ))] 2
或表示为下列平均化形式
y p y n hf ( x n , y n ) y c y n hf ( x n 1 , y p ) y n 1 1 ( y p y c ) 2
14
开始
读入 x0,y0,h,N
改 进 尤 拉 法 算 法 框 图
再代入积分式有
h y( xn1 ) y( xn ) [ f ( xn , y( xn )) f ( xn1 , y( xn1 ))] 2
得到
y n1 h y n [ f ( xn , y n ) f ( xn1 , y n1 )] 2
梯形格式
梯形格式是显式尤拉格式与隐式尤拉格式的算 11 术平均。
6
尤拉格式的精度
对于尤拉公式,假定yn=y(xn),则由一阶方程有
y n1 y( xn ) hf ( xn , y( xn )) y( xn ) hy ( xn )
而按泰勒公式
h2 y( x n 1 ) y( x n ) hy ( x n ) y ( ) 2
2
数值解法的特点和难点
特点
采取“步进式”,即求解过程顺着节点排列 的次序一步一步地向前推进。描述这类算法,只 要给出从已知信息yn, yn-1, yn-2, … 计算yn+1的递推 公式,即所谓差分格式。
难点
含有导数项 y (x )
3
3.1 尤拉方法 3.1.1 尤拉格式
用差商替代导数
若在点xn列出一阶方程
中的导数项,再离散化,即可导出下列格式
y n1 y n hf ( xn1 , y( xn1 ))
隐式尤拉格式
隐式尤拉格式与显式尤拉格式的精度相当,都 是一阶方法。
8
3.1.2 两步尤拉公式
1 改用中心差商 [ y( xn1 ) y( xn1 )]替代方程 2h
y ( xn ) f ( xn , y( xn ))
1. 尤拉法 2 xn y 其具体形式为: n 1 y n h y n y n 取步长h=0.1,计算结果见表 :
xn yn y(xn) 0.1 1.1000 1.0954 0.2 1.1918 1.1832 0.3 1.2774 1.2649 0.4 1.3582 1.3416 0.5 1.4351 1.4142 0.6 1.5090 1.4832 0.7 1.5803 1.5492 0.8 1.6498 1.6125 0.9 1.7178 1.6733 1.0 1.7848 1.7321
n=1
x0+h=>x1 y0+hf(x0,y0)=>yp y0+hf(x1,yp)=>yc (yp+yc)/2=>y1
输出x1,y1
n=N? =
≠
n+1=>n x1=>x0,y1=>y0
结束Βιβλιοθήκη 15例3-1用尤拉法及改进的尤拉法求解初值问题:
(0 x 1)
2x y y y y (0) 1
中的导数项,离散化可导出下列格式
y n1 y n1 2hf ( xn , y n )
两步尤拉格式
两步尤拉格式是二阶方法。
9
3.2 改进的尤拉方法
引言
将方程的两端从xn到xn+1求积分,得
y ( x n 1 ) y ( x n )
xn 1 xn
f ( x, y ( x ))dx
预报
y n1 y n hf ( xn , y n )
h y n [ f ( xn , y n ) f ( xn1 , y n1 )] 2
校正 yn1
称作改进的尤拉格式。
13
改进的尤拉格式的嵌套形式
改进的尤拉格式是一种一步显式格式,它可 表示为嵌套形式
h y n1 y n [ f ( xn , y n ) f ( xn1 , y n hf ( xn , y n ))] 2
18
3.3.2 龙格—库塔方法
推广改进的尤拉方法 :
区间 [ xn xn1 ] 内一点 xn p
K 率为 K 1 、 2 令:
xn ph 0 p 1 点 xn 与 x n p 处的斜
y n1 y n h[(1 ) K1 K 2 ]
式中λ 待定
则有:
y n 1 y n h[(1 ) K1 K 2 ] K1 f ( x n , y n ) K f ( x ph, y phK ) n n 1 2
和二阶泰勒展开式
h2 y ( x n 1 ) y( x n ) hy ( x n ) y ( x n ) O(h 3 ) 2