1面向方程的数值积分方法仿真
- 格式:doc
- 大小:606.00 KB
- 文档页数:11
Simulink是一个功能强大的仿真工具,可以用于模拟和求解各种物理系统和数学模型。
在Simulink中,积分求解是一种常用的数值方法,用于求解一阶常微分方程的解。
下面是一个使用Simulink求解积分的基本步骤:1. 建立模型:首先,在Simulink中建立一个包含一阶常微分方程的系统模型。
通常,需要将微分方程作为模型的输入,并将输出连接到需要求解的物理系统或数学模型的输入端。
2. 配置参数:在模型中,需要配置积分器的参数,包括积分器类型、步长、初始值等。
不同的积分器类型适用于不同的微分方程,需要根据实际情况选择合适的积分器类型。
3. 运行仿真:在模型中设置好参数后,可以运行仿真以求解积分。
Simulink会自动使用积分器对微分方程进行求解,并将结果输出到模型的输出端。
4. 结果分析:通过观察仿真结果,可以了解微分方程的解随时间的变化情况。
可以使用Simulink提供的各种工具和图表来可视化仿真结果,以便更好地分析和理解。
下面是一个简单的示例,说明如何使用Simulink求解一阶常微分方程的积分:假设有一阶常微分方程dy/dt = y - 2,可以使用Simulink建立如下模型:* 输入端连接微分方程dy/dt = y - 2的右侧,即y(t) - 2;* 输出端连接到需要求解的物理系统或数学模型的输入端;* 在模型中配置积分器参数为默认的Simulink积分器,并设置合适的步长和初始值;* 运行仿真并观察仿真结果。
在这个例子中,微分方程的解为y(t) = 2e^(-t) + C,其中C 为初始条件。
通过观察仿真结果,可以验证这个解是否正确。
总之,使用Simulink求解积分是一个简单而有效的方法,可以用于模拟和求解各种物理系统和数学模型。
通过建立模型、配置参数、运行仿真和结果分析,可以更好地了解微分方程的解随时间的变化情况,为实际应用提供有价值的参考。
多物理场模拟仿真第一部分多物理场概述 (2)第二部分仿真模拟技术发展 (3)第三部分数值求解方法介绍 (6)第四部分计算流体力学应用 (8)第五部分热传导与温度调控 (11)第六部分电磁场模拟与优化 (13)第七部分光学现象与仿真应用 (15)第八部分多物理场耦合问题研究 (17)第一部分多物理场概述括对流、热传导、电磁学、力学等多个物理学科的交叉,要求研究人员具备丰富的知识和技能。
在过去的几十年中,随着计算机技术的飞速发展和数值方法的不断创新,多物理场模拟仿真技术得到了广泛应用。
例如,在航空航天领域,需要模拟气动弹性、传热、结构强度等多种物理现象。
在能源方面,需要模拟温度、压力、化学反应等物理参数,以提高能源转换效率和减少污染排放。
此外,在生物医学、环境科学等领域也都需要进行多物理场模拟仿真来提高研究水平。
然而,多物理场模拟仿真的实现并不容易。
它涉及到多种不同的物理现象,需要精确描述每个物理场的相关方程,还需要处理不同时间尺度、空间尺度和物理单元之间的复杂相互作用。
因此,多物理场模拟仿真需要强大的计算能力和先进的算法支持。
为了解决这些问题,研究人员开发了各种多物理场模拟仿真方法。
其中最常用的方法是有限元法,该方法通过将连续体离散化为网格节点,并利用插值函数将物理量从节点扩展到整个区域,从而求解偏微分方程。
此外,还有有限差分法、边界元法、谱元法等多种方法可供选择。
尽管已经取得了一些进展,但多物理场模拟仿真仍然是一个充满挑战的领域。
随着物理问题的复杂性和计算能力的不断提高,新的方法和算法仍需不断研发,以满足日益增长的需求。
第二部分仿真模拟技术发展仿真模拟技术是一种通过计算机模拟真实世界中的物理现象和过程的技术,在科研、工程设计和教学等领域具有广泛的应用。
随着计算能力的提高和数值方法的发展,仿真模拟技术不断进步,为人类社会的发展做出了巨大的贡献。
早在 20 世纪 40 年代,仿真模拟技术就已经开始萌芽。
为了更好地理解欧拉法求解一阶微分方程在Matlab中的应用,我们首先来了解一些背景知识。
一阶微分方程是指只含有一阶导数的方程,通常表示为dy/dx=f(x,y),其中f(x,y)是关于x和y的函数。
欧拉法是一种常见的数值解法,用于求解微分方程的近似数值解。
它是一种基本的显式数值积分方法,通过将微分方程转化为差分方程来进行逼近。
在Matlab中,我们可以利用欧拉法求解一阶微分方程。
我们需要定义微分方程的函数表达式,然后选择合适的步长和初始条件,最后使用循环计算逼近解。
下面我们来具体讨论如何在Matlab中使用欧拉法来求解一阶微分方程。
我们假设要求解的微分方程为dy/dx=-2x+y,初始条件为y(0)=1。
我们可以通过以下步骤来实现:1. 我们需要在Matlab中定义微分方程的函数表达式。
在Matlab中,我们可以使用function关键字来定义函数。
在这个例子中,我们可以定义一个名为diff_eqn的函数,表示微分方程的右侧表达式。
在Matlab中,这个函数可以定义为:```matlabfunction dydx = diff_eqn(x, y)dydx = -2*x + y;end```2. 我们需要选择合适的步长和初始条件。
在欧拉法中,步长的选择对于数值解的精度非常重要。
通常情况下,可以先尝试较小的步长,然后根据需要进行调整。
在这个例子中,我们可以选择步长h=0.1,并设置初始条件x0=0,y0=1。
3. 接下来,我们可以使用循环来逼近微分方程的数值解。
在每一步,根据欧拉法的迭代公式y(i+1) = y(i) + h * f(x(i), y(i)),我们可以按照下面的Matlab代码计算逼近解:```matlabh = 0.1; % 步长x = 0:h:2; % 定义计算区间y = zeros(1, length(x)); % 初始化y的值y(1) = 1; % 设置初始条件for i = 1:(length(x)-1) % 欧拉法迭代y(i+1) = y(i) + h * diff_eqn(x(i), y(i));end```通过上述步骤,在Matlab中就可以用欧拉法求解一阶微分方程。
实验一面向微分方程的数值积分法仿真一、实验目的1•掌握数值积分法的基本概念、原理及应用;2•用龙格-库塔法解算微分方程,增加编写仿真程序的能力;3•分析数值积分算法的计算步长与计算精度、速度、稳定性的关系; 4.对数值算法中的“病态问题”进行研究。
二、实验内容1、已知系统微分方程及初值条件y =t y, y(0) =1取步长h .0.1 ,试分别用欧拉方程法和RK4法求t =2h时的y值,y(t) =2& -t -1比较(将三个解绘于同一坐标中,且用数值进行比较因。
(①编程完成;②选用MATLAB ode函数完成。
)程序代码如下:t0=0;tf=2;h=0.1;y1=1;y2=1;y3=1;t1=0;t2=0;t3=0n=rou nd(tf-t0)/h;for i=1: ny1(i+1)=y1(i)+h*(2*h+y1(i)); t1=[t1,t1(i)+h];endfor i=1: nk1=y2(i)+t2(i);k2=y2(i)+h*k1/2+t2(i)+h/2;k3=y2(i)+h*k2/2+t2(i)+h/2; k4=y2(i)+h*k3+t2(i)+h;y2(i+1)=y2(i)+h*(k1+2*k2+2*k3+k4)/6;t2=[t2,t2(i)+h];endfor i=1: ny3(i+1)=2*exp(t3(i))-t3(i)-1;t3=[t3,t3(i)+h];endplot(t1,y1, 'r' ,t2,y2, 'g' ,t3,y3, 'k')实验结果如下;并将求得的值与解析解),说明造成差异的原1210「 ' -8 ■ / . -6 - / -4「-2 - -0 1 1 1 10 0.5 1 1.5 2 2.5分析:红线为用欧拉法得到的结果,绿线为用四阶龙格一库塔法得到的结果,蓝线为根据解析方程得到的结果。
其差异原因主要有两个:1、二者的方法不同,欧拉法是根据一阶微分方程计算得到的,龙格一库塔法是根据四阶微分方程得到的;2、由于步长取为0.1,所以得到的图像与解析解之间存在差异,若将步长取小,则得到的解将更靠近解析解。
积分方程的数值解法及其应用积分方程是一种重要的数学工具,广泛应用于科学和工程等各个领域。
然而,积分方程通常没有解析解,需要借助数值方法来求解。
本文将介绍积分方程的数值解法及其应用。
积分方程的数值解法积分方程的数值解法有很多种,常用的方法包括:•格点法:将积分方程离散化为一组代数方程组,然后用数值方法求解代数方程组。
格点法是积分方程数值解法中最简单的方法,但精度不高。
•边界元法:将积分方程转化为一组边界积分方程,然后用数值方法求解边界积分方程。
边界元法比格点法精度更高,但计算量更大。
•谱法:将积分方程转化为一组谱方程,然后用数值方法求解谱方程。
谱法是一种高精度的积分方程数值解法,但计算量非常大。
积分方程的应用积分方程在科学和工程等各个领域都有广泛的应用,例如:•电磁学:积分方程可以用来求解电磁场问题,如天线设计、微波电路设计等。
•流体力学:积分方程可以用来求解流体力学问题,如流体流动、湍流、热传导等。
•固体力学:积分方程可以用来求解固体力学问题,如弹性力学、塑性力学、断裂力学等。
•化学工程:积分方程可以用来求解化学工程问题,如反应器设计、传质、传热等。
•生物学:积分方程可以用来求解生物学问题,如种群动态、流行病学、药物动力学等。
积分方程数值解法的发展前景积分方程数值解法是一个不断发展的领域,随着计算技术的进步,积分方程数值解法的方法和精度也在不断提高。
近年来,积分方程数值解法在以下几个方面取得了重大进展:•快速算法的开发:近年来,人们开发了许多快速算法来求解积分方程,如快速多极子算法、快速边界元算法、快速谱法等。
这些算法大大提高了积分方程数值解法的速度和效率。
•并行算法的开发:随着并行计算技术的兴起,人们也开发了许多并行算法来求解积分方程。
这些算法可以充分利用多核处理器和分布式计算资源,进一步提高积分方程数值解法的速度和效率。
•自适应算法的开发:自适应算法是一种根据积分方程的局部误差来调整计算精度的算法。
MATLAB是一种流行的数学软件,用于解决各种数学问题,包括微分方程的数值积分。
微分方程是许多科学和工程问题的数学描述方式,通过数值积分可以得到微分方程的数值解。
本文将介绍在MATLAB中如何进行微分方程的数值积分,以及一些相关的技巧和注意事项。
一、MATLAB中微分方程的数值积分的基本方法1. 常微分方程的数值积分在MATLAB中,常微分方程的数值积分可以使用ode45函数来实现。
ode45是一种常用的数值积分函数,它使用4阶和5阶Runge-Kutta 方法来求解常微分方程。
用户只需要将微分方程表示为函数的形式,并且提供初值条件,ode45就可以自动进行数值积分,并得到微分方程的数值解。
2. 偏微分方程的数值积分对于偏微分方程的数值积分,在MATLAB中可以使用pdepe函数来实现。
pdepe可以求解具有定解条件的一维和二维偏微分方程,用户只需要提供偏微分方程的形式和边界条件,pdepe就可以进行数值积分,并得到偏微分方程的数值解。
二、在MATLAB中进行微分方程数值积分的注意事项1. 数值积分的精度和稳定性在进行微分方程的数值积分时,需要注意数值积分的精度和稳定性。
如果数值积分的精度不够,可能会导致数值解的误差过大;如果数值积分的稳定性差,可能会导致数值解发散。
在选择数值积分方法时,需要根据具体的微分方程来选择合适的数值积分方法,以保证数值解的精度和稳定性。
2. 初值条件的选择初值条件对微分方程的数值解有很大的影响,因此在进行微分方程的数值积分时,需要选择合适的初值条件。
通常可以通过对微分方程进行分析,或者通过试验求解来确定合适的初值条件。
3. 数值积分的时间步长在进行微分方程的数值积分时,需要选择合适的时间步长,以保证数值积分的稳定性和效率。
选择时间步长时,可以通过试验求解来确定合适的时间步长,以得到最优的数值解。
三、MATLAB中微分方程数值积分的实例以下通过一个简单的例子来演示在MATLAB中如何进行微分方程的数值积分。
实验一数值积分算法仿真实验数值积分算法是对微积分中每个基本概念的具体应用,它被广泛应用于数学、工程、物理学、计算机科学等领域。
实验一旨在通过仿真实验来理解数值积分的基本原理以及各种算法的优劣。
1. 实验目的通过本实验,我们将探索数值积分算法的基本原理,以及了解求解积分的各种算法的使用方法和适用范围。
具体而言,本实验的目的包括:1. 理解数值积分的基本原理和方法。
2. 掌握数值积分算法的使用方法和步骤。
3. 比较不同积分算法的优缺点,了解它们适用的范围。
2. 实验内容本实验的具体内容包括:1. Simpson 积分算法的仿真实验3. 辛普森—三分积分算法的仿真实验4. 实验结果的分析与比较3. 实验原理在本次实验中,我们将介绍三种数值积分算法,分别是 Simpson 积分算法、梯形积分算法和辛普森-三分积分算法。
Simpson 积分算法也称为复化 Simpson 公式,是一种求解一定区间内函数积分值的数值计算方法。
这种方法的基本思路是将区间内的几何图形近似为二次函数,从而完成积分的近似计算。
具体而言,这种方法是通过将区间内的函数曲线分成若干个小区间,计算每一个小区间内的积分值,最后将这些积分值加起来得到整个区间内的积分值。
Simpson 积分公式如下所示:$I=\frac{h}{3}(f(x_0)+4f(x_1)+2f(x_2)+4f(x_3)+2f(x_4)+...+4f(x_{n-1})+f(x_n))$其中,$n$ 表示小区间的数目,$h$ 表示每个小区间的长度,$f(x_i)$ 表示区间内的函数值。
3.2 梯形积分算法辛普森-三分积分公式如下所示:$I=\frac{2b-a}{6n}(f(a)+f(b)+2\sum_{j=1}^{n/2}f(x_{2j})+4\sum_{j=1}^{n/2-1}f(x _{2j + 1}))$```% Simpson 积分算法function result = simpson(a,b,f,n)h = (b-a)/n;x = a:h:b;y = f(x);result = h/3*(y(1) + 4*sum(y(2:2:n)) + 2*sum(y(3:2:n-1)) + y(n+1));end我们可以通过实验数据来比较不同积分算法的优缺点。
机械系统动力学建模与仿真在现代工程领域中,机械系统的动力学建模与仿真技术是一个非常重要的研究方向。
这项技术可以帮助工程师们更好地理解和预测机械系统的行为,从而设计出更加稳定高效的产品。
本文将深入探讨机械系统的动力学建模与仿真方法,希望能对该领域的研究人员和工程师有所帮助。
一、机械系统动力学建模的意义机械系统动力学建模是将机械系统的运动学、动力学和控制特性用数学模型来描述的过程。
通过建立这些数学模型,我们可以更好地理解机械系统的运行机制,分析和预测系统的性能。
这对于工程领域中的产品设计、工艺规划以及系统优化等工作都具有重要意义。
在机械系统动力学建模中,常用的方法包括基于物理原理的理论建模和实验数据拟合等。
理论建模可以帮助我们深入理解机械系统背后的物理原理,并提供准确的数学方程来描述系统的行为。
而实验数据拟合则可以通过测量机械系统的运行数据,对其进行数学拟合,得到系统的数学模型。
这两种方法相辅相成,可以提高机械系统动力学建模的准确性和可信度。
二、机械系统动力学建模的方法机械系统动力学建模的方法多种多样,根据不同的需求和应用场景,选择合适的方法非常重要。
下面将介绍几种常用的动力学建模方法。
1. 基于拉格朗日方程的动力学建模方法拉格朗日方程是描述多体系统动力学的常用数学工具。
通过建立多体系统的拉格朗日方程,可以将系统的所有运动学和动力学信息整合到一个相对简洁的方程组中,方便进行分析和求解。
这种动力学建模方法适用于复杂的多体机械系统,例如机器人、建筑结构等。
2. 基于状态空间模型的动力学建模方法状态空间模型是一种以系统状态为变量的数学模型。
通过建立系统的状态空间模型,可以分析系统的稳定性、可控性和可观性等性质。
此外,状态空间模型还可以方便地应用于控制系统设计和优化。
这种动力学建模方法广泛应用于控制领域,对于机电一体化系统的建模也非常适用。
3. 基于有限元分析的动力学建模方法有限元分析是一种常用的结构力学分析方法。
建筑物理环境模拟分析中的计算技术与仿真方法随着人们对建筑物理环境舒适性、能源效率和环境可持续性等方面的要求越来越高,建筑物理环境模拟分析已经成为建筑设计和工程领域中一项必不可少的技术手段。
建筑物理环境模拟分析是通过计算机模拟和仿真建筑物内外的物理环境,以预测建筑物的舒适性、能源消耗情况和环境影响。
本文将探讨建筑物理环境模拟分析中的计算技术与仿真方法。
一、计算技术建筑物理环境模拟分析的计算技术通常涉及到数值计算、统计计算、优化计算、多物理场耦合计算等方面。
其中,数值计算是建筑物理环境模拟分析的重要技术之一。
数值计算通常包括有限元法、有限差分法、边界元法、界面重构方法等。
1. 有限元法有限元法是一种广泛应用于工程设计和科学计算的数值分析方法。
它是将要分析的物体或系统连续地分成有限个小元素,对每个小元素上的物理过程进行离散,最终通过有限个小元素的组合来近似整个物体或系统的物理行为。
在建筑物理环境模拟分析中,有限元法通常用于分析建筑物内部的温度、湿度、光照等物理场分布和相互作用。
2. 有限差分法有限差分法是一种利用差分逼近微分算子的数值方法,它将要求解的微分方程转化为差分方程,然后通过数值方法求解差分方程得到微分方程的解。
在建筑物理环境模拟分析中,有限差分法通常用于求解建筑物内部的空气流动和热传递过程。
3. 边界元法边界元法是一种基于边界积分方程的数值方法,它将要求解的微分方程转化成边界积分方程,然后通过对边界积分方程进行求解来得到微分方程的解。
在建筑物理环境模拟分析中,边界元法通常用于求解建筑物表面上的温度、湿度、光照等物理场分布。
4. 界面重构方法界面重构方法是一种基于离散面的空间重构方法,它能够处理多相流、燃烧、化学反应等流动问题。
在建筑物理环境模拟分析中,界面重构方法通常用于分析流体在建筑物内部的运动和传热过程。
二、仿真方法建筑物理环境模拟分析的仿真方法主要包括CFD仿真、能耗仿真、照明仿真等多种技术手段。
实验09数值微积分与方程数值解(第6章)《数学软件》课内实验王平(第6章MATLAB数值计算)一、实验目的1.掌握求数值导数和数值积分的方法。
2.掌握代数方程数值求解的方法。
3.掌握常微分方程数值求解的方法。
二、实验内容1.求函数在指定点的数值导数某f(某)1程序及运行结果:某2某36某2某3某2,某1,2,3 022.用数值方法求定积分(1)I120cot24in(2t)21dt的近似值。
程序及运行结果:(2)I220ln(1某)d某1某2程序及运行结果:3.分别用3种不同的数值方法解线性方程组6某5y2z5u49某y4zu133某4y2z2u13某9y2u11程序及运行结果:4.求非齐次线性方程组的通解2某17某23某3某463某15某22某32某449某4某某7某22341程序及运行结果(提示:要用教材中的函数程序line_olution):5.求代数方程的数值解(1)3某+in某-e某=0在某0=1.5附近的根。
程序及运行结果(提示:要用教材中的函数程序line_olution):(2)在给定的初值某0=1,y0=1,z0=1下,求方程组的数值解。
in某y2lnz70y33某2z10某yz50程序及运行结果:26.求函数在指定区间的极值某3co某某log某(1)f(某)在(0,1)内的最小值。
e某程序及运行结果:332(2)f(某1,某2)2某1在[0,0]附近的最小值点和最小值。
4某1某210某1某2某2程序及运行结果:7.求微分方程的数值解,并绘制解的曲线某d2ydy5y0d某2d某y(0)0y'(0)0程序及运行结果(注意:参数中不能取0,用足够小的正数代替):令y2=y,y1=y',将二阶方程转化为一阶方程组:1'5yy1某1某y2'y2y1y(0)0,y(0)0218.求微分方程组的数值解,并绘制解的曲线y'1y2y3y'yy213y'0.51yy123y1(0)0,y2(0)1,y3(0)1程序及运行结果:3三、实验提示四、教程:第6章MATLAB数值计算(2/2)6.2数值微积分p1556.2.1数值微分1.数值差分与差商对任意函数f(某),假设h>0。
实验一 数字仿真方法验证一、实验目的1.掌握基于数值积分法的系统仿真、了解各仿真参数的影响; 2.掌握基于离散相似法的系统仿真、了解各仿真参数的影响; 3.掌握SIMULINK 动态仿真; 4.熟悉MATLAB 语言及应用环境。
二、实验环境网络计算机系统(采矿楼四楼测试实验室),MATLAB 语言环境三 实验内容(一)试将示例1的问题改为调用ode45函数求解,并比较结果。
解:1、实验源程序A 、 先建立微分方程组的函数m 文件 function du=vdp(t,u) du=u-2*t/u;B 、再调用解题器指令求解y [t,u]=ode45(@vdp,[0 1],1); plot(t,u,'r'); axis([0 1 0 2]); axis on ; grid on ;C 、结果如下 u(1)=1.7321 图像如下:[]1,01)0(2∈⎪⎩⎪⎨⎧=-=t u u t u dt du(二)试用四阶RK 法编程求解下列微分方程初值问题。
仿真时间2s ,取步长h=0.1。
⎪⎩⎪⎨⎧=-=1)0(2y t y dt dy解:1、实验源程序cleart0=0; y0=1; h=0.1; n=2/h; y(1)=1; t(1)=0;for i=0:n-1; k1=y0-t0*t0k2=y0+(h*k1)/2-(t0+h/2)*(t0+h/2); k3=y0+(h*k2)/2-(t0+h/2)*(t0+h/2); k4=y0+(h*k3)/2-(t0+h)*(t0+h); y1=y0+h*(k1+2*k2+2*k3+k4)/6; t1=t0+h; y0=y1; t0=t1; y(i+2)=y1;t(i+2)=t1; end y1 t1 plot(t,y) axis on grid on结果:y(1)=2.5578图像如下:(三)试求示例3分别在周期为5s 的方波信号和脉冲信号下的响应,仿真时间20s ,采样周期Ts=0.1。
各种数值积分方法的MATLAB 程序和分析 --以一个实际问题为例问题回顾从某条河的横截面上获得与河岸不同距离(y,m)处的深度数据(H,m)如下,确定这条河的平问题分析由于所得数据为离散点,并且数据点的间隔不均匀,因此先对离散数据进行连续化处理,再对所得函数进行数值积分。
离散数据点的分布图如下:一般来说,不考虑泥沙沉降因素的河底,用变分法来求取切力最小的河床面,可以知道椭圆是最理想的截面形状,然而根据上图可知,河床底部明显存在泥沙沉降。
并且该河段可能处于流向曲率较大的河段,导致内河床(x <5)泥沙沉降较多,河床较浅;而外河床(x >5)部分由于水流速度大于泥沙启动速度,河床底部泥沙被水流携带,因而较深。
根据泥沙启动概率与流速的关系可将泥沙沉降量与河岸距离近似处理为三次关系,如下图:河岸距离 m河道深度 m泥沙沉降量与离河岸距离的关系离河岸距离泥沙沉降量(负值为携带量)由于泥沙启动速度为止,那么将泥沙沉降和携带量达到平衡的地方作为拟合参数处理。
在理想河床截面形状的基础上以上述三次关系修正形状,则回归的函数模型如下:H=α1√1−α2(y−5)2−α3y(y−α4)(y−10)上式中前一项为理想河床截面的椭圆方程,后一项为泥沙沉降量的修正项,先利用非线性回归对上述数据进行拟合。
非线性回归采用Levenberg–Marquardt算法,其函数fitnonpoly.m 源代码如下:%本函数使用Levenberg–Marquardt算法计算待求数据点在要求函数类下的最佳拟合函数%输入:% x为待拟合数据点的横坐标,y为待拟合数据点的纵坐标% fun为自变量和待求参数的函数句柄,格式为fun(x,a),其中a为参数向量% n为待求参数向量个数,即a长度% tol为结果要求精度%输出:% funchd为所得的非线性拟合函数,可直接使用function funchd=fitnonpoly(x,y,fun,n,tol)m=length(x);%输入检查if m~=length(y)error('The length of x must equal that of y !')elseif m<=n+1error('The length of x must be larger than n+1 !');end%变量创建a=zeros(1,n)+0.1;Z=zeros(m,n);delt=tol/10; %数值微分的扰动项delta=Inf*ones(1,n); %迭代的参数增量初始化v=5; %阻尼项衰减比lambda=10^-2; %阻尼项初始化flag=0;while norm(delta,Inf)>tol||flag==0 %迭代停止条件为参数增量小于要求精度%计算迭代矩阵方程for p=1:nTemp=zeros(1,n);Temp(p)=delt;Z(:,p)=(fun(x',a+Temp)-fun(x',a))./delt;endD=y'-fun(x',a);%计算迭代所得参数增量向量delta=(Z'*Z+lambda*eye(n))\(Z'*D);if norm(y'-fun(x',a+delta'))<norm(D)%若当前迭代收敛,则更新参数向量a=a+delta';lambda=lambda/v; %衰减阻尼项flag=1; elselambda=lambda*v; %若当前迭代不收敛,则增大阻尼 flag=0; end end%将函数表达式转换为可直接使用的函数句柄 syms tfunchd=@(t)fun(t,a); %依次显示所求得的参数值 disp('The parameter in turn is'); disp(a); end运行附件中脚本文件scriofint.m 可以得到拟合后的函数,拟合结果如下:非线性回归所得函数如下:H =1.782√1−0.3995(y −5)2−0.02014y(y −2.735)(y −10)可见泥沙沉降和携带量达到动态平衡的地方里河岸2.735m ,下面对河岸截面积进行数值积分求取。
实验五 数值微积分与方程数值求解一、实验目的1. 掌握求数值导数和数值积分的方法。
2. 掌握代数方程数值求解的方法。
3. 掌握常微分方程数值求解的方法。
二、实验内容要求:命令手工 ( )输入1. 求函数在指定点的数值导数。
232()123,1,2,3026x x x f x x x x x==2. 用数值方法求定积分。
(1) 210I π=⎰的近似值。
(2) 2220ln(1)1x I dt xπ+=+⎰3. 分别用三种不同的数值方法解线性方程组。
6525494133422139211x y z u x y z u x y z u x y u +-+=-⎧⎪-+-=⎪⎨++-=⎪⎪-+=⎩4. 求非齐次线性方程组的通解。
1234123412342736352249472x x x x x x x x x x x x +++=⎧⎪+++=⎨⎪+++=⎩解:先建立M 函数文件,然后命令窗口中写命令。
121/119/112/115/111/1110/11100010X k k --⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥=++⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦,其中12,k k 为任意常数。
5. 求代数方程的数值解。
(1) 3x +sin x -e x =0在x 0=1.5附近的根。
(2) 在给定的初值x 0=1,y 0=1,z 0=1下,求方程组的数值解。
23sin ln 70321050y x y z x z x y z ⎧++-=⎪+-+=⎨⎪++-=⎩ans =1289/6826. 求函数在指定区间的极值。
(1) 3cos log ()xx x x x f x e ++=在(0,1)内的最小值。
(2) 33212112122(,)2410f x x x x x x x x =+-+在[0,0]附近的最小值点和最小值。
(以下选作题,是微分方程的数值解)7. 求微分方程的数值解。
x 在[1.0e-9,20]2250(0)0'(0)0xd y dy y dx dx y y ⎧-+=⎪⎪⎪=⎨⎪=⎪⎪⎩解:M 文件:运行结果:8. 求微分方程组的数值解,并绘制解的曲线。