文档库 最新最全的文档下载
当前位置:文档库 › 非线性状态方程约束下的一类动态多尺度系统建模和估计算法

非线性状态方程约束下的一类动态多尺度系统建模和估计算法

非线性动力系统的连续线性化模型及其数值计算方法

垫拯生』选盆煎!!! 非线性动力系统的连续线性化模型及其数值计算方法。 苏志霄郑兆昌 (清华大学工程力学系,北京,100084) 谁≮ 'I广 摘要秭4用Taylor级数展开导出了任意自治或非自治非线性动力系统的瞬时线性化方程,该线性方程的连续变化描述了系统的全部复杂动力行为。 进一步求解系统的线性化方程,得到一种非线性动力系统数值计算的新 的递推格式,计算实例表明其精度高于传统的Houbolt、Wilson.o及 Newmark-13等方法,且在计算时间步长较大时,仍然具有足够的计算精 度3文末通过数值计算研究了Duffing方程和vanderPol方程的混沌及 周期特性。 关键词非线性动力系统连续线性化模型Dumng方程vailderPol方程 近年来,非线性动力系统的定性分析方法在低维系统中的应用已逐步完善。然而。由于非线性系统一般不存在解析解,因此通常利用逐步积分法、有限差分法[1,2]及其他方法,如Taylor变换法[3】等数值算法得到其数值解。各种数值方法均是基于时间历程上的差分方法,也即通过各种形式的函数曲线来近似代替时间步长上振动系统的实际响应形式。 运动学研究历史上,静止被认为是运动的瞬时存在状态。与此类似,线性结构可认为是非线性系统的瞬时表现形式,线性系统的连续变化反映了非线性动力系统的全部复杂行为。非线性系统的瞬态响应依赖于该瞬时的线性结构,而该时刻线性结构的确定又依赖于上一连续瞬时非线性系统的响应。因此,非线性系统的响应具有连续递推性。由此观点可发展为非线性动力系统的连续线性模型理论。本文即从此出发,推导了一般自治或非自治非线性动力系统的瞬态线性方程,精确求解该线性化方程得到非线性系统的一种新的数值算法。该方法本质上以瞬态线性结构的精确响应来近似代替离散时间段内非线性系统的响应,区别于传统差分方法中以直线或各种曲线近似代替的思想。计算实例表明该方法较传统方法相比,大大提高了计算精度。文末计算了强迫Duffmg方程与强迫vallderP01方程的混沌及周期特性。 1非线性系统的连续线性化模型 考虑相空间中的,l维自治或非自治非线性系统 ‘国家重点基础研究发展规划项目(编号:G1998020316)。国家自然科学基金资助项目(NO.19972029),中国博士后科学基金资助项目(中博基【1999】)17号。

电子科技大学非线性系统作业

非线性系统理论分析及其应用 XXX (1.电子科技大学,XXXXX学院,XXXXXXX) Theoretical Analysis Of nonlinear Systems And Its Applications XXXXXXXXXX (University of Electronic Science and Technology of China,School of Energy Science and Engineering,XXXXXXXXXXXXXXXX) 摘要:本文通过通过对非线性系统的原理,分类,性质等做了细致的分析,并重点介绍了非线性系统在电力系统,自行车自动控制等方面的应用,得出非线性系统在控制领域的重要地位。 关键词:非线性;原理;应用 ABSTRACT: In this paper, through the principle of non-linear systems, classification, properties, and so do a detailed analysis and focuses on the application of nonlinear systems in the power system, automatic control and other aspects of the bike, draw an important role in the control field of nonlinear systems . KEY WORDS:Nonlinear; principle; application 1 非线性系统的原理 非线性系统是状态变量和输出变量对于所有可能的输入变量和初始状态都满足叠加原理的系统。一个由线性元部件所组成的系统必是线性系统。但是,相反的命题在某些情况下可能不成立。线性系统的状态变量(或输出变量)与输入变量间的因果关系可用一组线性微分方程或差分方程来描述,这种方程称为系统的数学模型。 1.1 非线性与线性概述 线性,指量与量之间按比例、成直线的关系,在空间和时间上代表规则和光滑的运动;而非线性则指不按比例、不成直线的关系,代表不规则的运动和突变。如问:两个眼睛的视敏度是一个眼睛的几倍?很容易想到的是两倍,可实际是6-10倍!这就是非线性:1+1不等于2。激光的生成就是非线性的!当外加电压较小时,激光器犹如普通电灯,光向四面八方散射;而当外加电压达到某一定值时,会突然出现一种全新现象:受激原子好像听到“向右看齐”的命令,发射出相位和方向都一致的单色光,就是激光。非线性的特点是:横断各个专业,渗透各个领域,几乎可以说是:“无处不在时时有。”如:天体运动存在混沌;电、光与声波的振荡,会突陷混沌;地磁场在400万年间,方向突变16次,也是由于混沌。甚至人类自己,原来都是非线性的:与传统的想法相反,健康人的脑电图和心脏跳动并不是规则的,而是混沌的,混沌正是生命力的表现,混沌系统对外界的刺激反应,比非混沌系统快。由此可见,非线性就在我们身边,躲也躲不掉了。 1.2 非线性与线性的比较 定性地说,线性关系只有一种,而非线性关系则千变万化,不胜枚举。线性是非线性的特例,它是简单的比例关系,各部分的贡献是相互独立的;而非线性是对这种简单关系的偏离,各部分之间彼此影响,发生耦合作用,这是产生非线性问题的复杂性和多样性的根本原因。正因为如此,非线性系统中各种因素的独立性就丧失了:整体不等于部分之和,叠加原理失效,非线性方程的两个解之和不再是原方程的解。因此,对于非线性问题只能具体问题具体分析。 线性与非线性现象的区别一般还有以下特征:(1)在运动形式上,线性现象一般表现为时空中的平滑运动,并可用性能良好的函数关系表示,而非线性现象则表现为从规则运动向不规则运动的转化和跃变; (2)线性系统对外界影响的响应平缓、光滑,而非线性系统中参数的极微小变动,在一些关节点上,可以引起系统运动形式的定性改变。在自然界和人类社会中大量存在的相互作用都是非线性的,线性作用只不过是非线性作用在一定条件下的近似。 1.3 非线性系统分类

动态系统建模仿真 实验报告

动态系统建模仿真实验报告 实验二,实验四 姓名 学号

实验二直流电动机-负载建模及仿真实验 1实验内容 在运动控制系统中电机带动负载转动,电机-负载成为系统的被控对象。本实验项目要求根据电机工作原理及动力学方程,建立模型并仿真。 2实验目的 掌握直流电动机-负载的模型的建立方法; 3实验器材 (1)硬件:PC机。 (2)工具软件:操作系统:Windows系列;软件工具:MATLAB及simulink。 4实验原理 在很多应用场合中,直流电动机的输出轴直接与负载轴相连,转动部件固定在负载轴上,即为常见的电机直接驱动负载形式。如果不考虑传动轴在转动过程中的弹性形变,即把传动轴的刚度看作无穷大,就可以在系统设计过程中,将执行电机和负载视为一个整体对象,这样被控对象的模型就可以用如图2.1所示的 框图来表示。其中 U表示控制电压;a U,a L,a R分别表示电机的电枢电压,电 r 枢电感和电枢电阻; J为电机的转动惯量,L J为负载的转动惯量,包括由电机 m 驱动的转动体、轴承内圈、转动轴、轴套、速度测量元件、角度测量元件以及被测试件折合到电机轴上的转动惯量等; D、L D分别表示电机和负载的粘性阻尼 m 系数; k为电机的电磁力矩系数;e k为电机的反电势系数;mθ为电机-负载的转 m 角, θ 为电机-负载的角速度。 m 在这一实验中,认为电机与负载的转角是相同的,并考虑了电机及负载转动中产生的粘滞阻尼力矩,所以其电压方程、力矩方程变为如下形式

?????+=+--=+=-s s J J D D M s I k s k s E s s I T s I Ra s E s Ua m l m L m l m m e l )()()()()()())()(()()(θθ (2.1) 由方程组(2.1)可以得到相应的结构框图如图1所示。 图1直流电动机-负载数学模型结构框图 5实验要求: (1)建立从a u 到m θ 的传递函数模型,求其频率特性,并与项目1中的电机频率特性进行对比。 (2)分别取(Dm+D L )1=0.1(Dm+D L )和(Dm+D L )2=0.01(Dm+D L ),编制MATLAB 或simulink 程序,比较阻尼系数不同时电机-负载模型的频率特性。 (3)分别取J L1=0.1J L 和J L 2=10J L ,编制MATLAB 或simulink 程序,比较电机-负载模型的频率特性。 实验所需具体参数如下表。

非线性动力学之一瞥_Lorenz系统

非线性动力学 非线性系统之一瞥——Lorenz系统 2013-01-30

0 前言 0.1非线性系统动力学 线性系统是状态变量和输出变量对于所有可能的输入变量和初始状态都满足叠加原理的系统;非线性系统就是这些量不满足叠加原理的系统。非线性系统在日常生活和自然界中不胜枚举,也远远多于线性系统。 非线性动力学是研究非线性系统的各种运动状态的定性和定量变化规律,尤其是系统的长时期行为。研究的对象主要有分叉、混沌和孤立子等。 0.2洛伦兹方程 洛伦兹方程是美国气象学家洛伦兹在模拟天气这一非周期性现象时确定,这个方程的三个变量分别模拟温度、湿度和压力。可以得出结论,初期微小的差别随着时间推移差别会越来越大,洛伦兹基于此提出长期的天气预报是不可能的。这也被视为研究非线性混沌理论的开始,所以洛伦兹系统在研究非线性系统中具有举足轻重的地位。本文借助洛伦兹系统对非线性进行简单的介绍。洛伦兹方程如下。 方程中,、和都为实参数。实参不同,系统的奇点及数目也是不同的。

1 奇点和稳定性 1.1 奇点 洛伦兹系统含有三个实参数,当参数变化,奇点的数目可能不同。首先,一定是系统的奇点。时,当时,系统仅有一个奇点;当时,系统还有另外两个奇点。 下面仅解时的两个非原点奇点。令 方程第一式得,第三式可得,将两式代入第二式得 即,。 1.2 奇点稳定性判别 下面根据Liapunov稳定性判别方法,找出系统在原点处大围渐进稳定的条件,取Liapunov函数。考虑,的情况。则有 将洛伦兹方程 代入上式,可得 变换为二次型,系数矩阵为

已知,,则系数矩阵负定的条件是。所以该系统是大围渐进稳定的条件是,前提是,。 Liapunov函数V总是存在的,只要构造出合适的Liapunov函数,就可以通过Liapunov稳定性定理直接判断奇点的稳定性,而不需要求解非线性方程组。有的Liapunov函数不易构造,则可以通过奇点处导算子的特征值来判断:若所有的特征值实部都小于0,则方程组在该奇点是局部渐进稳定的;若特征值实部至少有一个为正,该奇点是不稳定的。仍以洛伦兹系统为例,求出导算子的特征值。 特征矩阵的行列式(特征方程)为 特征值 显然,当,时,,,要使方程在原点处渐进稳定,必须小于0,因此 两边同时平方可得 因此

区间分析在中的应用非线性系统模型参数估计_图文(精)

第29卷第4期增刊 2008年4月 仪器仪表学报 Chinese Journal of Scientific lnstrument V01.29No.4 Apr.2008 区间分析在非线性系统模型参数估计中的应用 杨卫锋曾芳玲 (解放军电子工程学院合肥230037 摘要在未知但有界(UB曲误差假设下,把非线性系统模型参数估计看成是一个集合逆变换问题,利用基于区间分析的SIVIA 算法可以得到参数成员集的近似但可靠的集估计,进一步计算便可得到待估参数的点估计.通过对谷氨酸菌体生长模型参数估计进行仿真,验证了该方法的有效性:通过与其他算法相比较,结果显示该方法还具有较强的鲁棒性和一定的适用性. 关键词区间分析非线性系统参数估计未知但有界(UBB有界误差估计 Application of Interval Analysis for Parameter Estimationof NonlinearSystem Model Yang Weifeng Zeng Fangling (Electronic Engineering Institute P翻Hefei 230037China Abstract The problem of the parameter estimation of nonlinear sy’stem modeI iS viewed鹌one of set inversion in the unknown?-but?-bounded(UBBcontext,and the approximate set of the membership set can be obtained by using the SIVIA(Set Inverter

牛顿法非线性方程求解

《MATLAB 程序设计实践》课程考核 ---第37-38页 题1 : 编程实现以下科学计算算法,并举一例应用之。(参考书籍《精 通MAT LAB科学计算》,王正林等著,电子工业出版社,2009 年) “牛顿法非线性方程求解” 弦截法本质是一种割线法,它从两端向中间逐渐逼近方程的根;牛顿法本质上是一种切线法,它从一端向一个方向逼近方程的根,其递推公式为: - =+n n x x 1) ()(' n n x f x f 初始值可以取)('a f 和)('b f 的较大者,这样可以加快收敛速度。 和牛顿法有关的还有简化牛顿法和牛顿下山法。 在MATLAB 中编程实现的牛顿法的函数为:NewtonRoot 。 功能:用牛顿法求函数在某个区间上的一个零点。 调用格式:root=NewtonRoot )(```eps b a f 其中,f 为函数名; a 为区间左端点; b 为区间右端点 eps 为根的精度; root 为求出的函数零点。 ,

牛顿法的matlab程序代码如下: function root=NewtonRoot(f,a,b,eps) %牛顿法求函数f在区间[a,b]上的一个零点%函数名:f %区间左端点:a

%区间右端点:b %根的精度:eps %求出的函数零点:root if(nargin==3) eps=1.0e-4; end f1=subs(sym(f),findsym(sym(f)),a); f2=subs(sym(f),findsym(sym(f)),b); if (f1==0) root=a; end if (f2==0) root=b; end if (f1*f2>0) disp('两端点函数值乘积大于0 !'); return; else tol=1; fun=diff(sym(f)); %求导数 fa=subs(sym(f),findsym(sym(f)),a); fb=subs(sym(f),findsym(sym(f)),b); dfa=subs(sym(fun),findsym(sym(fun)),a); dfb=subs(sym(fun),findsym(sym(fun)),b); if(dfa>dfb) %初始值取两端点导数较大者 root=a-fa/dfa; else root=b-fb/dfb; end while(tol>eps) r1=root; fx=subs(sym(f),findsym(sym(f)),r1); dfx=subs(sym(fun),findsym(sym(fun)),r1); %求该点的导数值 root=r1-fx/dfx; %迭代的核心公式 tol=abs(root-r1); end end 例:求方程3x^2-exp(x)=0的一根 解:在MATLAB命令窗口输入: >> r=NewtonRoot('3*x^2-exp(x)',3,4) 输出结果: X=3.7331

非线性方程的解法

20世纪60年代中期以后,发展了两种求解非线性方程组(1)的新方法。一种称为区间迭代法或称区间牛顿法,它用区间变量代替点变量进行区间迭代,每迭代一步都可判断在所给区间解的存在惟一性或者是无解。这是区间迭代法的主要优点,其缺点是计算量大。另一种方法称为不动点算法或称单纯形法,它对求解域进行单纯形剖分,对剖分的顶点给一种恰当标号,并用一种有规则的搜索方法找到全标号单纯形,从而得到方程(1)的近似解。这种方法优点是,不要求f(□)的导数存在,也不用求逆,且具有大范围收敛性,缺点是计算量大 编辑摘要 目录 ? 1 正文 ? 2 牛顿法及其变形 ? 3 割线法 ? 4 布朗方法 ? 5 拟牛顿法 ? n个变量n个方程(n >1)的方程组表示为 (1) 式中?i(x1,x2,…,x n)是定义在n维欧氏空间R n的开域D上的实函数。若?i中至少有一个非 线性函数,则称(1)为非线性方程组。在R n中记?= 则(1)简写为?(尣)=0。若存在尣*∈D,使?(尣*)=0,则称尣*为非线性方程组的解。方程组(1)可能有一个解或多个解,也可能有无穷多解或无解。对非线性方程组解的存在性的研究远不如线性方程组那样成熟,现有的解法也不象线性方程组那样有效。除极特殊的方程外,一般不能用直接方法求得精确解,目前主要采用迭代法求近似解。根据不同思想构造收敛于解尣*的迭代序列{尣k}(k=0,1,…),即可得到求解非线性方程组的各种迭代法,其中最著名的是牛顿法。 牛顿法基本思想是将非线性问题逐步线性化而形成如下迭代程序:

(2) 式中 是?(尣k)的雅可比矩阵,尣0是方程(1)的解尣*的初始近似。 这个程序至少具有2阶收敛速度。由尣k算到尣k+的步骤为:①由尣k算出?(尣k)及 ;②用直接法求线性方程组的解Δ尣k;③求 。 由此看到迭代一次需计算n个分量函数值和n2个分量偏导数值,并求解一次n阶线性方程组。 为了评价非线性方程组不同迭代法的优劣,通常用效率作为衡量标准,其中P为迭 代法的收敛阶,W为每迭代步计算函数值?i及偏导数值的总个数(每迭代步中求一次逆的工作量相同,均不算在W 内)。效率e越大表示此迭代法花费代价越小,根据效率定义, 牛顿法(2)的效率为。 牛顿法有很多变形,如当奇异或严重病态时,可引进阻尼因子λk,得到阻尼牛顿法,即

《从非线性动力学到复杂系统》

《从非线性动力学到复杂系统》 段法兵 系统理论博士生课程

第一讲动态系统的发展 系统是一些相互关联的客体组成的集合,动态(动力dynamical)系统是系统状态变量,比如温度、位移、价格、信号幅值等,随着时间变化的。它的描述可以用微分方程或者离散方程。 微分方程历史悠久,可追溯到牛顿、伽利略、欧拉、雅克比等人,用以描述行星的运动轨迹。研究中发现即使满足牛顿引力定律的三体运动也非常复杂,其微分方程是非线性的,非线性是指不满足叠加定律的方程,解无法利用已知函数进行描述,如果能够描述的我们称为显式解。因此,庞加莱在1880年-1910年期间,试图利用解的拓扑几何性质来解释动态系统的运动规律,发现即使确定性系统,其运动规律也会出现随机性态,非常复杂(确定性系统是指其外力是确定的不随机,只要知道初始条件和演化方程,其运动是可预先确定的)。 非线性系统运动的复杂性:李雅普诺夫研究了系统平衡点?的稳定性?问题,随后本迪尔松等发现系统的解包含(1)平衡态(静止不动);(2)周期运动(比如行星)(3)拟周期,就是几个频率不可公约周期之和。 接着1975年Li和Yorke提出了混沌的概念,即系统的解是非周期的一种类似随机运动的现象,这其中就包含了洛伦兹提出的“蝴蝶效应”,根源在于这类非线性动力系统对于初始条件的极其敏感性,初始条件的微小变化导致了系统状态的巨大改变,从此有关非线性科学的发展异常迅速,形成了现代动力学理论,其最重要的贡献是揭示了一个简单的模型可能蕴含了无比复杂的动力学性态。 例子:Van der Pol(范德波尔)方程 1920年Van der Pol利用电子震荡管研究心脏的跳动问题,比如人工心脏起

动态系统建模与仿真

摘要:经过半个多世纪的发展,仿真技术已经成为对人类社会发展进步具有重要影响的一门综合性学科。本文对建模与仿真技术发展趋势作了比较全面的分析。仿真建模方法更加丰富,更加需要仿真建模具有互操作性和可重用性,仿真建模与可信度评估成为仿真建模发展的重要支柱;仿真体系结构逐渐形成标准,仿真系统层次化、网络化已成为现实,仿真网格将是下一个重要发展方向;仿真应用领域更加丰富,向复杂系统领域发展,并将更将贴近人们的生活。 经过半个多世纪的发展,仿真技术已经成为人类社会发展进步具有重要影响的一门综合性学科。仿真技术的领域不在局限于某些尖端学科技术研究领域,而成为一项被众多学科领域广泛采用的通用型技术。半个世纪以来,仿真救赎一方面始终是建模技术、计算技术和其他信息技术最先的应用者,另一方面是对计算技术和网络技术等的发展不断提出新的挑战。 在我国建模与仿真方法是随着应用需求的发展不断的进步,近十年来仿真技术发展是沿着以应用需求牵引建模与仿真系统开发、以建模与仿真系统带动建模与仿真技术突破、以建模与仿真技术促进建模与仿真系统发展、将建模与仿真系统又服务于应用良性循环的道路向前发展。 仿真技术研究人员一方面不断地扩展仿真应用领域,另一方面,其他领域研究的丰富成果与不断促使仿真技术人员从新的角度、新的高度、新的广度认识建模与仿真。在近半个世纪的积累和近十年的快速发展的基础上,建模与仿真技术已经成为以相似原理、模型理论、系统技术、信息技术以及仿真应用领域的有关专业技术为基础,以计算机系统、与应用相关的物理效应设备及仿真器为工具,利用模型对已有的或设想的系统进行研究、分析、实验与运行的一门综合性技术。 仿真建模的发展 仿真是基于建模的活动,模型建立、实现、验证、应用是仿真过程不变的主题。随着时代的发展,仿真模型包含的内容大大扩展,建模方法日益多样,模型交互性和重要性变的越来越重要,模型的校核与验证的成功为仿真中必要步骤。 -----------------------------------系统仿真学报杨明张冰王子才哈尔滨工业大学,哈尔滨150001 基本概念 系统:按照某些规律结合起来,互相作用、互相依存的所有实体的集合或总和。模型:从特定应用角度,表达对象系统特征与特性的形式。仿真:用物理模型或数学模型代替实际系统进行实验和研究。 对象系统:仿真、分析与研究的对象。仿真系统:实施仿真的系统。 仿真分类:

牛顿法求非线性方程的根

学科前沿讲座论文 班级:工程力学13-1班姓名:陆树飞

学号:02130827

牛顿法求非线性方程的根 一 实验目的 (1)用牛顿迭代法求解方程的根 (2)了解迭代法的原理,了解迭代速度跟什么有关 题目:用Newton 法计算下列方程 (1) 013=--x x , 初值分别为10=x ,7.00=x ,5.00=x ; (2) 32943892940x x x +-+= 其三个根分别为1,3,98-。当选择初值02x =时 给出结果并分析现象,当6510ε-=?,迭代停止。 二 数学原理 对于方程f(x)=0,如果f(x)是线性函数,则它的求根是很容易的。牛顿迭代法实质上是一种线性化方法,其基本思想是将非线性方程f(x)=0逐步归结为某种线性方程来求解。 设已知方程f(x)=0有近似根x k (假定k f'(x )0≠) ,将函数f(x)在点x k 进行泰勒展开,有 k k k f(x)f(x )+f'(x )(x-x )+≈??? 于是方程f(x)=0可近似的表示为 k k k f(x )+f'(x )(x-x )=0 这是个线性方程,记其根为x k+1,则x k+1的计算公式为 k+1k ()x =x -'() k k f x f x ,k=0,1,2,… 这就是牛顿迭代法。

三 程序设计 (1)对于310x x --=,按照上述数学原理,编制的程序如下 program newton implicit none real :: x(0:50),fx(0:50),f1x(0:50)!分别为自变量x ,函数f(x)和一阶导数f1(x) integer :: k write(*,*) "x(0)=" read(*,*) x(0) !输入变量:初始值x(0) open(10,file='1.txt') do k=1,50,1 fx(k)=x(k-1)**3-x(k-1)-1 f1x(k)=3*x(k-1)**2-1 x(k)=x(k-1)-fx(k)/f1x(k) !牛顿法 write(*,'(I3,1x,f11.6)') k,x(k) !输出变量:迭代次数k 及x 的值 write(10,'(I3,1x,f11.6)') k,x(k) if(abs(x(k)-x(k-1))<1e-6) exit !终止迭代条件 end do stop end (2)对于32943892940x x x +-+=,按照上述数学原理,编制的程序如下 program newton implicit none

Maab求解线性方程组非线性方程组

M a a b求解线性方程组非 线性方程组 The latest revision on November 22, 2020

求解线性方程组solve,linsolve例:A=[5 0 4 2;1 -1 2 1;4 1 2 0;1 1 1 1];%矩阵的行之间用分号隔开,元素之间用逗号或空格B=[3;1;1;0]X=zeros(4,1);%建立一个4元列向量 X=linsolve(A,B)diff(fun,var,n):对表达式fun中的变量var求n阶导数。 例如:F=sym('u(x,y)*v(x,y)'); %sym()用来定义一个符号表达式diff(F); %matlab区分大小写pretty(ans) %pretty():用习惯书写方式显示变量;ans是答案表达式 非线性方程求解 fsolve(fun,x0,options) 其中fun为待解方程或方程组的文件名; x0位求解方程的初始向量或矩阵; option为设置命令参数 建立文件: function y=fun(x) y=[x(1)*sin(x(1))*cos(x(2)), ... x(2) - *cos(x(1))+*sin(x(2))]; >>clear;x0=[,];fsolve(@fun,x0,optimset('fsolve'))注:...为续行符m文件必须以function 为文件头,调用符为@;文件名必须与定义的函数名相同;fsolve()主要求解复杂非线性方程和方程组,求解过程是一个逼近过程。 Matlab求解线性方程组AX=B或XA=B在MATLAB中,求解线性方程组时,主要采用前面章节介绍的除法运算符“/”和“\”。如:X=A\B表示求矩阵方程AX=B的解;X=B/A表示矩阵方程XA=B 的解。对方程组X=A\B,要求A和B用相同的行数,X和B有相同的列数,它的行数等于矩阵A 的列数,方程X=B/A同理。 如果矩阵A不是方阵,其维数是m×n,则有:m=n 恰定方程,求解精确解;m>n 超定方程,寻求最小二乘解;m

matlab程序设计实践-牛顿法解非线性方程

中南大学MATLAB程序设计实践学长有爱奉献,下载填上信息即可上交,没有下载券的自行百度。所需m文件照本文档做即可,即新建(FILE)→脚本(NEW-Sscript)→复制本文档代码→运行(会跳出保存界面,文件名默认不要修改,保存)→结果。第一题需要把数据文本文档和m文件放在一起。全部测试无误,放心使用。本文档针对做牛顿法求非线性函数题目的同学,当然第一题都一样,所有人都可以用。←记得删掉这段话 班级: ? 学号: 姓名:

一、《MATLAB程序设计实践》Matlab基础 表示多晶体材料织构的三维取向分布函数(f=f(φ1,φ,φ2))是一个非常复杂的函数,难以精确的用解析函数表达,通常采用离散 空间函数值来表示取向分布函数,是三维取向分布函数的一个实例。 由于数据量非常大,不便于分析,需要借助图形来分析。请你编写一 个matlab程序画出如下的几种图形来分析其取向分布特征: (1)用Slice函数给出其整体分布特征; " ~ (2)用pcolor或contour函数分别给出(φ2=0, 5, 10, 15, 20, 25, 30, 35 … 90)切面上f分布情况(需要用到subplot函数);

(3) 用plot函数给出沿α取向线(φ1=0~90,φ=45,φ2=0)的f分布情况。 (

备注:数据格式说明 解: (1)( (2)将文件内的数据按照要求读取到矩阵f(phi1,phi,phi2)中,代码如 下: fid=fopen(''); for i=1:18 tline=fgetl(fid); end phi1=1;phi=1;phi2=1;line=0; f=zeros(19,19,19); [ while ~feof(fid) tline=fgetl(fid); data=str2num(tline); line=line+1;数据说明部分,与 作图无关此方向表示f随着 φ1从0,5,10,15, 20 …到90的变化而 变化 此方向表示f随着φ 从0,5,10,15, 20 … 到90的变化而变化 表示以下数据为φ2=0的数据,即f(φ1,φ,0)

MATLAB应用 求解非线性方程

第7章 求解非线性方程 7.1 多项式运算在MATLAB 中的实现 一、多项式的表达 n 次多项式表达为:n a +??++=x a x a x a p(x )1-n 1-n 1n 0,是n+1项之和 在MATLAB 中,n 次多项式可以用n 次多项式系数构成的长度为n+1的行向量表示 [a0, a1,……an-1,an] 二、多项式的加减运算 设 有 两 个 多 项 式 n a +??++=x a x a x a p1(x )1-n 1-n 1n 0和 m b +??++=x b x b x b p2(x )1-m 1-m 1m 0。它们的加减运算实际上就是它们的对应系 数的加减运算。当它们的次数相同时,可以直接对多项式的系数向量进行加减运算。当它们的次数不同时,应该把次数低的多项式无高次项部分用0系数表示。 例2 计算()()1635223-+++-x x x x a=[1, -2, 5, 3]; b=[0, 0, 6, -1]; c=a+b 例3 设()6572532345++-+-=x x x x x x f ,()3532-+=x x x g ,求f(x)+g(x) f=[3, -5, 2, -7, 5, 6]; g=[3, 5, -3]; g1=[0, 0, 0, g];%为了和f 的次数找齐 f+g1, f-g1 三、多项式的乘法运算 conv(p1,p2) 例4 在上例中,求f(x)*g(x) f=[3, -5, 2, -7, 5, 6]; g=[3, 5, -3]; conv(f, g) 四、多项式的除法运算 [Q, r]=deconv(p1, p2) 表示p1除以p2,给出商式Q(x),余式r(x)。Q,和r 仍为多项式系数向量 例4 在上例中,求f(x)/g(x) f=[3, -5, 2, -7, 5, 6]; g=[3, 5, -3]; [Q, r]=deconv(f, g) 五、多项式的导函数 p=polyder(P):求多项式P 的导函数 p=polyder(P,Q):求P·Q 的导函数

BP神经网络的非线性系统建模-非线性函数拟合

%% 清空环境变量 clc clear %% 训练数据预测数据提取及归一化 %下载输入输出数据 load data input output %从1到2000间随机排序 k=rand(1,2000); [m,n]=sort(k); %找出训练数据和预测数据 input_train=input(n(1:1900),:)'; output_train=output(n(1:1900)); input_test=input(n(1901:2000),:)'; output_test=output(n(1901:2000)); %选连样本输入输出数据归一化 [inputn,inputps]=mapminmax(input_train); [outputn,outputps]=mapminmax(output_train); %% BP网络训练 % %初始化网络结构 net=newff(inputn,outputn,5); net.trainParam.epochs=100; net.trainParam.lr=0.1; net.trainParam.goal=0.00004; %网络训练 net=train(net,inputn,outputn); %% BP网络预测 %预测数据归一化 inputn_test=mapminmax('apply',input_test,inputps); %网络预测输出 an=sim(net,inputn_test); %网络输出反归一化 BPoutput=mapminmax('reverse',an,outputps); %% 结果分析

figure(1) plot(BPoutput,':og') hold on plot(output_test,'-*'); legend('预测输出','期望输出') title('BP网络预测输出','fontsize',12) ylabel('函数输出','fontsize',12) xlabel('样本','fontsize',12) %预测误差 error=BPoutput-output_test; figure(2) plot(error,'-*') title('BP网络预测误差','fontsize',12) ylabel('误差','fontsize',12) xlabel('样本','fontsize',12) figure(3) plot((output_test-BPoutput)./BPoutput,'-*'); title('神经网络预测误差百分比') errorsum=sum(abs(error))

二分法和牛顿法求解非线性方程(C语言)

(1)二分法求解非线性方程: #include #include #define f(x)((x*x-1)*x-1) void main() {float a,b,x,eps; int k=0; printf("intput eps\n");/*容许误差*/ scanf("%f",&eps); printf("a,b=\n"); for(;;) {scanf("%f,%f",&a,&b); if(f(a)*f(b)>=0)/*判断是否符合二分法使用的条件*/ printf("二分法不可使用,请重新输入:\n"); else break; } do {x=(a+b)/2; k++; if(f(a)*f(x)<0)/*如果f(a)*f(x)<0,则根在区间的左半部分*/ b=x; else if(f(a)*f(x)>0)/*否则根在区间的右半部分*/ a=x; else break; }while(fabs(b-a)>eps);/*判断是否达到精度要求,若没有达到,继续循环*/ x=(a+b)/2;/*取最后的小区间中点作为根的近似值*/ printf("\n The root is x=%f,k=%d\n",x,k); } 运行结果: intput eps 0.00001 a,b= 2,-5 The root is x=1.324721,k=20 Press any key to continue 总结:本题关键在于两个端点的取值和误差的判断,此程序较容易。二分法收敛速度较快,但缺点是只能求解单根。 (2)牛顿法求解非线性方程: #include #include float f(float x)/*定义函数f(x)*/ {return((-3*x+4)*x-5)*x+6;} float f1(float x)/*定义函数f(x)的导数*/

BP神经网络的非线性系统建模

BP神经网络的非线性系统建模 一、题目 拟合的非线性函数为:y=x12+x22 二、模型建立 BP神经网络构建根据拟合非线性函数特点确定BP神经网络结构,由于该非线性函数有两个输入参数,一个输出参数,所以BP神经网络结构为2—5—1,即输入层有2个节点,隐含层有5个节点,输出层有1个节点。 从非线性函数中随机得到2000组输入输出数据,从中随机选择1900组作为训练数据,用于网络训练,100组作为测试数据,用于测试网络的拟合性能。 利用Matlab中工具箱函数。 三、Matlab实现 3.1数据选择和归一化 从输入输出数据中随机选取1900组数据作为网络训练数据,100组数据作为网络测试数据,并对训练数据进行归一化处理。 %%清空环境变量 clc clear %%训练数据预测数据提取及归一化 %下载输入输出数据 load data input output %从1到2000间随机排序 k=rand(1,2000); [m,n]=sort(k); %找出训练数据和预测数据 input_train=input(n(1:1900),:)'; output_train=output(n(1:1900)); input_test=input(n(1901:2000),:)'; output_test=output(n(1901:2000)); %选连样本输入输出数据归一化 [inputn,inputps]=mapminmax(input_train); [outputn,outputps]=mapminmax(output_train); 3.2BP神经网络训练 用训练数据训练BP神经网络,使网络对非线性函数输出具有预测能力。 %%BP网络训练 %%初始化网络结构 net=newff(inputn,outputn,5);

C++实现 牛顿迭代 解非线性方程组

C++实现牛顿迭代解非线性方程组(二元二次为例) 求解{0=x*x-2*x-y+0.5; 0=x*x+4*y*y-4; }的方程 #include #include #define N 2 // 非线性方程组中方程个数、未知量个数#define Epsilon 0.0001 // 差向量1范数的上限 #define Max 100 // 最大迭代次数 using namespace std; const int N2=2*N; int main() { void ff(float xx[N],float yy[N]); //计算向量函数的因变量向量yy[N] void ffjacobian(float xx[N],float yy[N][N]); //计算雅克比矩阵yy[N][N] void inv_jacobian(float yy[N][N],float inv[N][N]); //计算雅克比矩阵的逆矩阵inv void newdundiedai(float x0[N], float inv[N][N],float y0[N],float x1[N]); //由近似解向量x0 计算近似解向量x1 float x0[N]={2.0,0.25},y0[N],jacobian[N][N],invjacobian[N][N],x1[N],errornorm; int i,j,iter=0; //如果取消对x0的初始化,撤销下面两行的注释符,就可以由键盘x读入初始近似解向量for( i=0;i>x0[i]; cout<<"初始近似解向量:"<

非线性方程求根问题

计算机学院上机实践报告 一、目的 1.通过本实验,帮助加深对非线性方程求根方法的构造过程的理解; 2.能将各种方法编写为程序并上机实现; 3.比较各种方法在求解同一非线性方程根时,在收敛情况上的差异。 二、容与设计思想 1.用二分法求方程f(x)=x3-2x-5=0在区间[2 , 3]的根。 2.方程f(x)=2x3-5x2-19x+42=0在x=3.0附近有根,试写出其三种不同的等价形式以构成三种不同的迭代格式,再用简单迭代法求根,观察这三种迭代是否收敛。 三、使用环境 1. 硬件环境 微型计算机(Intel x86系列CPU)一台 2. 软件环境 Windows2000/XP操作系统 VC++6.0或其它的开发工具。 四、核心代码及调试过程 1.用二分法求方程f(x)=x3-2x-5=0在区间[2 , 3]的根主要代码: void bisect(double a,double b,int max_B) { double root, ya,yb,yroot; int i,actual_B; ya=f(a);yb=f(b); if(ya*yb>0) { printf("method failed!\n"); exit(0); } for(i=1;i<=max_B;i++) { root=(a+b)/2;yroot=f(root); //取当前含根区间的中点 if(yroot==0) { a=root;b=root;} else if(yb*yroot>0) //取含根区间为[a,(a+b)/2]

{ b=root;yb=yroot;} Else //取含根区间为[(a+b)/2,b] { a=root;ya=yroot;} if(fabs(b-a)b)) { printf("re_select a proper initial value x0!\n"); exit(0); } if(fabs(x1-x0)

相关文档