求解非线性方程组的混合遗传算法

求解非线性方程组的混合遗传算法
求解非线性方程组的混合遗传算法

求解非线性方程组的混合遗传算法

作者:罗亚中;袁端才;唐国金

作者机构:国防科技大学,航天与材料工程学院,湖南,长沙,410073;国防科技大学,航天与材料工程学院,湖南,长沙,410073;国防科技大学,航天与材料工程学院,湖南,长沙,410073

来源:计算力学学报

ISSN:1007-4708

年:2005

卷:022

期:001

页码:109-114

页数:6

中图分类:TP18

正文语种:chi

关键词:非线性方程组;混合遗传算法;优化和迭代;嵌套混合;拟牛顿迭代法

摘要:非线性方程组的求解是数值计算领域中最困难的问题,大多数的数值求解算法例如牛顿法的收敛性和性能特征在很大程度上依赖于初始点.但是对于很多非线性方程组,选择好的初始点是一件非常困难的事情.本文结合遗传算法和经典算法的优点,提出了一种用于求解非线性方程组的混合遗传算法.该混合算法充分发挥了遗传算法的群体搜索和全局收敛性,有效地克服了经典算法的初始点敏感问题;同时在遗传算法中引入经典算法(Powell法、拟牛顿迭代法)作局部搜索,克服了遗传算法收敛速度慢和精度差的缺点.选择了几个典型非线性方程组,从收敛可靠性、计算成本和适用性等指标分析对比了不同算法.计算结果表明所设计的混合遗传算法有着可靠的收敛性和较高的收敛速度和精度,是求解非线性方程组的一种成功算法.

非线性方程组的求解(汇编)

非线性方程组的求解 摘要:非线性方程组求解是数学教学中,数值分析课程的一个重要组成部分,作为一门学科,其研究对象是非线性方程组。求解非线性方程组主要有两种方法:一种是传统的数学方法,如牛顿法、梯度法、共轭方向法、混沌法、BFGS 法、单纯形法等。传统数值方法的优点是计算精度高,缺点是对初始迭代值具有敏感性,同时传统数值方法还会遇到计算函数的导数和矩阵求逆的问题,对于某些导数不存在或是导数难求的方程,传统数值方法具有一定局限性。另一种方法是进化算法,如遗传算法、粒子群算法、人工鱼群算法、差分进化算法等。进化算法的优点是对函数本身没有要求,不需求导,计算速度快,但是精度不高。 关键字:非线性方程组、牛顿法、BFGS 法、记忆梯度法、Memetic 算法 1: 三种牛顿法:Newton 法、简化Newton 法、修改的Newton 法【1-3】 求解非线性方程组的Newton 法是一个最基本而且十分重要的方法, 目前使用的很多有效的迭代法都是以Newton 法为基础, 或由它派生而来。 n 个变量n 个方程的非线性方程组, 其一般形式如下: ???????===0),...,(... 0),...,(0),...,(21212211n n n n x x x f x x x f x x x f (1) 式(1)中,),...,(21n i x x x f ( i=1, ?, n) 是定义在n 维Euclid 空间Rn 中开域 D 上 的实值函数。若用向量记号,令: ????????????=n x x x ...X 21,????????????=??????????????====)(...)()(0),...,(...0),..,(0)...,()(2121212,211X f X f X f x x x f x x x f x x x f X F n n n n n

非线性方程求根

第七章 非线性方程求根 教学目的与要求: 理解二分法求根的思想;掌握二分法求解过程;了解二分法的优点和缺点。了解迭代法的基本思想,迭代法的收敛条件以及局部收敛性的定义;理解基本迭代法的迭代思路,收敛条件的产生与求证过程;掌握基本迭代法的迭代格式,收敛条件的应用以及局部收敛定理。 重点和难点:迭代法的基本思想,迭代法的收敛性 ■ 教学内容: 基本概念: 的零点; 的m 重零点。 )(x f )(x f 非线性方程的求根通常分为两个步骤:一是对根的搜索,二是根的精确化,求得根的足够精确的近似值。 求方程的有根区间有如下方法: (1)描图法。画出的简图,从曲线与)(x f y =x 轴交点的位置确定有根区间。 (2)解析法。根据函数的连续性、介值定理以及单调性等寻找有根区间。 § 1 二分法 分析二分法的基本原理 例1 用二分法求方程的一个正根,要求误差不超过. 01)(6=??=x x x f 2105.0?ק 2 迭代法及其收敛性 一、迭代法的定义 二、基本迭代法 定义:将方程改写成以下等价形式() x x ?=取定初始值0x ,由迭代公式1() (0,1,2,)n n x x n ?+==L 产生迭代序列{}n x 。显然,若{}n x 收敛于*x ,()x ?在*x 处连续,就有** 1lim lim ()()n n n n x x x ??+→∞→∞ ===x 即*x 是方程() x x ?=的解,从而也是0)(=x f 的解。故当充分大时,可取作为方程根的近似值。用迭代格式求得方程近似根的方法称为基本迭代法,n n x )(x ?称为迭代函数。由于收敛点*x 满足*()* x x ?=,故称*x 为)(x ?的不动点 例 求方程的一个实根,要求精确到六位小数。 032)(3 =??=x x x f 注意:把此方程转换成三种等价形式 ,32)(31+==x x x ?)3(2 1)(32?= =x x x ?, 3)(33??==x x x x ?三、迭代法的收敛条件

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

求解线性方程组 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为设置命令参数 建立文件fun.m: function y=fun(x) y=[x(1)-0.5*sin(x(1))-0.3*cos(x(2)), ... x(2) - 0.5*cos(x(1))+0.3*sin(x(2))]; >>clear;x0=[0.1,0.1];fsolve(@fun,x0,optimset('fsolve')) 注: ...为续行符 m文件必须以function为文件头,调用符为@;文件名必须与定义的函数名相同;fsolve()主要求解复杂非线性方程和方程组,求解过程是一个逼近过程。Matlab求解线性方程组 AX=B或XA=B 在MATLAB中,求解线性方程组时,主要采用前面章节介绍的除法运算符“/”和“\”。如: X=A\B表示求矩阵方程AX=B的解; 的解。XA=B表示矩阵方程B/A=X. 对方程组X=A\B,要求A和B用相同的行数,X和B有相同的列数,它的行数等于矩阵A的列数,方程X=B/A同理。 如果矩阵A不是方阵,其维数是m×n,则有: m=n 恰定方程,求解精确解; m>n 超定方程,寻求最小二乘解; m

非线性方程组求根的牛顿迭代法

二元非线性方程组求根的牛顿迭代法 摘要:本文根据一元函数的Taybr 公式和求解一元非线性方程的牛顿迭代法之间的关系,利用多元函数的Taybr 公式推导出了二元非线性方程组的牛顿迭代法;在此基础上,通过MA TLAB 仿真计算一个方程组的根来说明该方法是可行的。 关键词:牛顿迭代法;一元函数;二元函数; Taybr 公式; Matlab 0 引言 非线性方程()0f x =的数值解法有逐步搜索法、区间二分法、迭代法、牛顿 迭代法等, 那么, 对于对于非线性方程组(,)0 (,)0f x y g x y =??=?,其牛顿迭代法的迭代方 程是什么? 本文根据一元函数的Taybr 公式和一元非线性方程牛顿迭代法之间的关系,利用多元函数的Taybr 公式推导出了二元非线性方程组的牛顿迭代法,在此基础上利用推导出的二元非线性方程组求根的牛顿迭代法通过matlab 仿真计算出一个方程组的根,检验了所得方法的有效性。 1 基本定理、结论 定理1 (一元函数的Taybr 公式) 如果函数()f x 在含有0x 的某个开区间(,)a b 内具有直(1)n +阶的导数,则对任一(,)x a b ∈ ,有 ()2 0000000()()()()()()()...()()2!! n n n f x f x f x f x f x x x x x x x R x n '''=+-+-++-+ 其中()n R x = ()(1)10() ()1! n n f x x n ξ++-+,这里ξ是0x 与x 之间的某个值。 定理2 (二元函数的Taybr 公式) 设(,)z f x y =在点00(,)x y 的某一邻域内连续且有直到(1)n +阶的连续偏导数, 00(,)x k y k ++为此邻域内任一点,则有 2 000000001(,)(,)(,)(,)... 2!f x k y k f x y h k f x y h k f x y x y x y αααααααα???? ++=++++++ ? ?????

遗传算法解非线性方程

遗传算法解非线性方程组的Matlab程序 程序用MATLAB语言编写。之所以选择MATLB,是因为它简单,但又功能强大。写1行MATLAB程序,相当于写10行C++程序。在编写算法阶段,最好用MATLAB语言,算法验证以后,要进入工程阶段,再把它翻译成C++语言。 本程序的算法很简单,只具有示意性,不能用于实战。 非线性方程组的实例在函数(2)nonLinearSumError1(x)中,你可以用这个实例做样子构造你自己待解的非线性方程组。 %注意:标准遗传算法的一个重要概念是,染色体是可能解的2进制顺序号,由这个序号在可能解的集合(解空间)中找到可能解 %程序的流程如下: %程序初始化,随机生成一组可能解(第一批染色体) %1: 由可能解的序号寻找解本身(关键步骤) %2:把解代入非线性方程计算误差,如果误差符合要求,停止计算 %3:选择最好解对应的最优染色体 %4:保留每次迭代产生的最好的染色体,以防最好染色体丢失 %5: 把保留的最好的染色体holdBestChromosome加入到染色体群中 %6: 为每一条染色体(即可能解的序号)定义一个概率(关键步骤) %7:按照概率筛选染色体(关键步骤) %8:染色体杂交(关键步骤) %9:变异 %10:到1 %这是遗传算法的主程序,它需要调用的函数如下。 %由染色体(可能解的2进制)顺序号找到可能解: %(1)x=chromosome_x(fatherChromosomeGroup,oneDimensionSet,solutionS um); %把解代入非线性方程组计算误差函数:(2)functionError=nonLinearSumError1(x); %判定程是否得解函数:(3)[solution,isTrue]=isSolution(x,funtionError,solutionSumError); %选择最优染色体函数: %(4)[bestChromosome,leastFunctionError]=best_worstChromosome(fatherC hromosomeGroup,functionError); %误差比较函数:从两个染色体中,选出误差较小的染色体 %(5)[holdBestChromosome,holdLeastFunctionError]... % =compareBestChromosome(holdBestChromosome,holdLeastFunctionError,... % bestChromosome,leastFuntionError) %为染色体定义概率函数,好的染色体概率高,坏染色体概率低 %(6)p=chromosomeProbability(functionError); %按概率选择染色体函数: %(7)slecteChromosomeGroup=selecteChromome(fatherChromosomeGroup,p );

非线性方程组数值解法

非线性方程组数值解法 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,得到阻尼牛顿法,即

Matlab线性方程组求解(Gauss消去法)

Matlab线性方程组求解 1. Gauss消元法: function x=DelGauss(a,b) % Gauss消去法 [n,m]=size(a); nb=length(b); det=1; %存储行列式值 x=zeros(n,1); for k=1:n-1 for i=k+1:n if a(k,k)==0 return end m=a(i,k)/a(k,k); for j=k+1:n a(i,j)=a(i,j)-m*a(k,j); end b(i)=b(i)-m*b(k); end det=det*a(k,k); %计算行列式 end det=det*a(n,n); for k=n:-1:1 %回代求解 for j=k+1:n b(k)=b(k)-a(k,j)*x(j); end x(k)=b(k)/a(k,k);

end Example: >> A=[1.0170 -0.0092 0.0095;-0.0092 0.9903 0.0136;0.0095 0.0136 0.9898]; >> b=[1 0 1]'; >> x=DelGauss(A,b) x = 0.9739 -0.0047 1.0010 2. 列主元Gauss消去法: function x=detGauss(a,b) % Gauss列主元消去法 [n,m]=size(a); nb=length(b); det=1; %存储行列式值 x=zeros(n,1); for k=1:n-1 amax=0; %选主元 for i=k:n if abs(a(i,k))>amax amax=abs(a(i,k));r=i; end end if amax<1e-10 return; end if r>k %交换两行 for j=k:n

非线性模型参数估计的遗传算法

滨江学院 毕业论文(设计)题目非线性模型参数估计的遗传算法 院系大气与遥感系 专业测绘工程 学生姓名李兴宇 学号200923500** 指导教师王永弟 职称讲师 二O一三年五月二十日

- 目录- 摘要 (3) 关键词 (3) 1.引言 (3) 1.1 课题背景 (3) 1.2 国内外研究现状 (4) 1.3 研究的目的和意义 (4) 1.4 论文结构 (5) 2.遗传算法简介 (5) 2.1 遗传算法的起源 (5) 2.2 遗传算法的基本思想 (6) 2.2.1 遗传算法求最优解的一般步骤 (7) 2.2.2 用技术路线流程图形式表示遗传算法流程 (7) 2.3 遗传算法的基本原理及设计 (8) 2.3.1 适应度设计 (8) 2.3.2 遗传算子操作 (9) 3.遗传算法的应用实例 (9) 3.1 非线性模型参数估计 (10) 3.2 实例分析 (10) 4.结语 (12) 参考文献 (12) 英文题目 (14) - 1 -

- 2 - 致谢 (15)

非线性模型参数估计的遗传算法 李兴宇 南京信息工程大学滨江学院测绘工程专业,南京 210044 摘要:关于非线性模型计算中的参数估计是十分棘手的问题,为此常常将这样的问题转化成非线性优化问题解决,遗传算法作为一种具有强适应性的全局搜索方法而被频繁的应用于非线性系统参数估计的计算当中,本文介绍了遗传算法及其理论基础,阐述了遗传算法在非线性模型参数估计中的应用的起源和发展,引入实例说明了遗传算法在非线性模型参数估计的实际运用中的实现,并概述了基于遗传算法的非线性参数模型估计具体解算过程,将使用遗传算法得到的结果与其他算法的解算结果进行比较,结果表明:遗传算法是一种行之有效的搜索算法,能有效得到全局最优解,在今后的研究中值得推广。 关键词:遗传算法非线性模型参数估计应用 1.引言 1.1课题背景 当前科学技术的发展和研究已经进入了进入各个领域、多个学科互相交叉、互相渗透和互相影响的时代,生命科学的研究与工程科学的交叉、渗透和相互补充提高便是其中一个非常典型的例子,同时也表现出了近代科学技术发展的一个新的显著特点。遗传算法研究工作的蓬勃发展以及在各个领域的广泛应用正是体现了科学发展过程的的这一明显的特点和良好的趋势。 非线性科学是一门研究复杂现象的科学,涉及到社会科学、自然科学和工程技术等诸多领域,在测绘学的研究中,尤其是在测量平差模型的研究和计算过程中,大量引入的都是非线性函数方程模型,而对于非线性模型的解算,往往过程复杂。遗传算法的出现为研究工作提供了一种求解多模型、多目标、非线性等复杂系统的优化问题的通用方法和框架。 对于非线性系统的解算,传统上常用的方法是利用其中参数的近似值将非线性系统线性化,也就是线性近似,测绘学中通常称之为线性化,经过线性化之后,将其视为线性模型并利用线性模型的解算方法得到结果,这就很大程度的简化了解算步骤,减少了工作量,但同时会带来新的问题,运用这种传统方法得到的数据结果存在的误差较大、精度不足等问题。利用线性近似方法对非线性模型进行参数估计,精度往往取决于模型的非线性强度。 - 3 -

5非线性方程求根习题课

非线性方程求根 一、证明:对任意初始值01,13x ?? ∈???? ,由不动点迭代12 k x k x -+=,k=0,1,2,…产生的序 列{}k x 都收敛于方程2x x -=在1,13?????? 的唯一 根p 。 若要求p 的近似值的误差不超过4 10 -(取初始值02 3x =),试估计迭代次数。 解:由()12k x k k x x ?-+==知迭代函数()2x x ?-= 对[]1/3,1x ∈,有 ()()()[][]1,1/30.5,0.79371/3,1x ???∈=????? 另外有 ()1/32ln 22ln 20.55011x x ?--'=-≤=< 由定理得本题证明部分。 为使解p 的近似值k x 的误差不超过410-,根据误 差估计式: 10,1k k L x p x x L -≤-- 令 4 10101k L x x L --<-,得k 应取为

10 4ln10ln 111.22ln x x L k L ---->≈ 取k=12可使近似解的误差不超过410- 二、证明: 设()x ?在[],a b 上连续可微,且()01x ?'<<, ()x x ?=在[],a b 上有根*x ,0[,]x a b ∈,但* 0x x ≠, 则由 ()1, 0,1,2...k k x x k ?+== 产生的迭代序列{}k x 单调收敛于* x 。 证明:因为()x x ?=在[],a b 上有根* x ,故有()**x x ?=, 设*0x x b <≤,则由 ()() * * 10x x x x ??-=-()()*00x x ?ξ'=- 及()01x ?'<<知 * * 100x x x x <-<- 于是 * 10x x x << 同理可得* * 211,,k k x x x x x x +<<<< ,因而{}0 k k x ∞ = 单调下降并以*x 为下界,所以lim k k x →∞ 存在,记为x 。 由()01x ?'<<知方程在[],a b 内的根是唯一的,显然有 x =*x 。所以 *lim k k x x →∞= 三、设函数()f x 的导数满足'0()m f x M <≤≤,x 任意,且0)(=x f 的根存在,证明:

线性方程组的解法

线性方程组的解法 1 引言 在科学研究和大型工程设计中出现了越来越多的数学问题,而这些问题往往需要求数值解。在进行数值求解时,经离散后,常常归结为求解形如Ax= b的大型线性方程组。而如插值公式,拟合公式等的建立,微分方程差分格式的构造等,均可归结为求解线性方程组的问题.在工程技术的科学计算中,线性方程组的求解也是最基本的工作之一.因此,线性方程组的解法一直是科学和工程计算中研究最为普遍的问题,它在数值分析中占有极其重要的地位。20世纪50年代至70年代,由于电子计算机的发展,人们开始考虑和研究在计算机上用迭代法求线性方程组Ax =b的近似解,用某种极限过程去逐渐逼近精确解,并发展了许多非常有效的迭代方法,迭代法具有需要计算机存储单元少、程序设计简单、原始系数矩阵在计算过程中始终不变等优点。例如Jacobi方法、Gauss—Seidel 方法、SOR方法、SSOR 方法,这几种迭代方法是最常用的一阶线性定常迭代法。 2 主要算法 20世纪50年代至70年代,人们开始考虑和研究用迭代法求解线性方程组。 Ax = b (1) 的近似解,发展了许多有效的方法,其中有Jacobi方法、Gauss—Seidel方法,SOR方法、SSOR方法,这几种迭代方法均属一阶线性定常迭代法,即若系数矩阵A的一个分裂:A =M-N ;M 为可逆矩阵,线性方程组(1)化为: (M-N)X =b; →M X = NX + b; →X= M -1NX+ M-1b 得到迭代方法的一般公式: X(k+1)=HX(k)+d (2) 其中:H =MN-1,d=M-1b,对任意初始向量X(0) 一阶定常迭代法收敛的充分必要条件是: 迭代矩H的谱半径小于1,即ρ(H) < 1;又因为对于任何矩阵范数恒有ρ(H)≤‖H‖,故又可得到收敛的一个充分条件为:‖H‖< 1。 2.1 Jacobi迭代法 若D为A的对角素构成的对角矩阵,且对角线元素全不为零。系数矩阵A的一个分解:A =

基于Matlab遗传算法的非线性方程组优化程序

基于Matlab遗传算法的非线性方程组优化程序 clear,clc;%清理内存,清屏 circleN=200;%迭代次数 format long %构造可能解的空间,确定染色体的个数、长度 solutionSum=4;leftBoundary=-10;rightBoundary=10; distance=1;chromosomeSum=500;solutionSumError=0.1; oneDimensionSet=leftBoundary:distance:rightBoundary; oneDimensionSetN=size(oneDimensionSet,2);%返回oneDimensionSet中的元素个数 solutionN=oneDimensionSetN^solutionSum;%解空间(解集合)中可能解的总数 binSolutionN=dec2bin(solutionN);%把可能解的总数转换成二进制数 chromosomeLength=size(binSolutionN,2);%由解空间中可能解的总数(二进制数)计算染色体的长度 %程序初始化 %随机生成初始可能解的顺序号,+1是为了防止出现0顺序号 solutionSequence=fix(rand(chromosomeSum,1)*solutionN)+1; for i=1:chromosomeSum%防止解的顺序号超出解的个数 if solutionSequence(i)>solutionN; solutionSequence(i)=solutionN; end end %把解的十进制序号转成二进制序号 fatherChromosomeGroup=dec2bin(solutionSequence,chromosomeLength); holdLeastFunctionError=Inf;%可能解的最小误差的初值 holdBestChromosome=0;%对应最小误差的染色体的初值 %计算 circle=0; while circle

解线性方程组的直接解法

解线性方程组的直接解法 一、实验目的及要求 关于线性方程组的数值解法一般分为两大类:直接法与迭代法。直接法是在没有舍入误差的情况下,通过有限步运算来求方程组解的方法。通过本次试验的学习,应该掌握各种直接法,如:高斯列主元消去法,LU分解法和平方根法等算法的基本思想和原理,了解它们各自的优缺点及适用范围。 二、相关理论知识 求解线性方程组的直接方法有以下几种: 1、利用左除运算符直接求解 线性方程组为b x\ =即可。 A Ax=,则输入b 2、列主元的高斯消元法 程序流程图: 输入系数矩阵A,向量b,输出线性方程组的解x。 根据矩阵的秩判断是否有解,若无解停止;否则,顺序进行; 对于1 p :1- =n 选择第p列中最大元,并且交换行; 消元计算; 回代求解。(此部分可以参看课本第150页相关算法) 3、利用矩阵的分解求解线性方程组 (1)LU分解 调用matlab中的函数lu即可,调用格式如下: [L,U]=lu(A) 注意:L往往不是一个下三角,但是可以经过行的变换化为单位下三角。 (2)平方根法

调用matlab 中的函数chol 即可,调用格式如下: R=chol (A ) 输出的是一个上三角矩阵R ,使得R R A T =。 三、研究、解答以下问题 问题1、先将矩阵A 进行楚列斯基分解,然后解方程组b Ax =(即利用平方根法求解线性方程组,直接调用函数): ??????? ??--------=19631699723723312312A ,?????? ? ??-=71636b 解答: 程序: A=[12 -3 2 1;-3 23 -7 -3;2 -7 99 -6;1 -3 -6 19]; R=chol(A) b=[6 3 -16 7]'; y=inv(R')*b %y=R'\b x=inv(R)*y %x=R\y 结果: R =3.4641 -0.8660 0.5774 0.2887 0 4.7170 -1.3780 -0.5830 0 0 9.8371 -0.7085 0 0 0 4.2514 y =1.7321 0.9540 -1.5945 1.3940 x =0.5463 0.2023 -0.1385 0.3279 问题 2、先将矩阵A 进行LU 分解,然后解方程组b Ax =(直接调用函数): ?????????? ??----=8162517623158765211331056897031354376231A ,????????? ? ??-=715513252b

非线性方程求根问题

计算机学院上机实践报告 一、目的 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)

遗传算法解决非线性规划问题的Matlab程序

非线性整数规划的遗传算法Matlab程序(附图) 通常,非线性整数规划是一个具有指数复杂度的NP问题,如果约束较为复杂,Matlab优化工具箱和一些优化软件比如lingo等,常常无法应用,即使能应用也不能给出一个较为令人满意的解。这时就需要针对问题设计专门的优化算法。下面举一个遗传算法应用于非线性整数规划的编程实例,供大家参考! 模型的形式和适应度函数定义如下: 这是一个具有200个01决策变量的多目标非线性整数规划,编写优化的目标函数如下,其中将多目标转化为单目标采用简单的加权处理。 function Fitness=FITNESS(x,FARM,e,q,w) %% 适应度函数 %输入参数列表 %x决策变量构成的4×50的0-1矩阵 %FARM细胞结构存储的当前种群,它包含了个体x

%e4×50的系数矩阵 %q4×50的系数矩阵 %w1×50的系数矩阵 %% gamma=0.98; N=length(FARM);%种群规模 F1=zeros(1,N); F2=zeros(1,N); for i=1:N xx=FARM{i}; ppp=(1-xx)+(1-q).*xx; F1(i)=sum(w.*prod(ppp)); F2(i)=sum(sum(e.*xx)); end ppp=(1-x)+(1-q).*x; f1=sum(w.*prod(ppp)); f2=sum(sum(e.*x)); Fitness=gamma*sum(min([sign(f1-F1);zeros(1,N)]))+(1-gamma)*sum(min([sign(f2-F2);zeros(1,N)])); 针对问题设计的遗传算法如下,其中对模型约束的处理是重点考虑的地方 function [Xp,LC1,LC2,LC3,LC4]=MYGA(M,N,Pm) %% 求解01整数规划的遗传算法

线性方程组的解法及其应用

线性方程组的解法及其应用 The solution of linear equation and its application 专业:测控技术与仪器 班级: 2010-1班 作者:刘颖 学号: 20100310110105

摘要 线性方程组是线性代数的一个重要组成部分,也在现实生产生活中有着广泛的运用,在电子工程、软件开发、人员管理、交通运输等领域都起着重要的作用。在一些学科领域的研究中,线性方程组也有着不可撼动的辅助性作用,在实验和调查后期利用线性方程组对大量的数据进行处理是很方便简捷的选择。本文主要围绕如何解线性方程组来进行讲解,对于不同类型的线性方程组的不同方法,并简述线性方程组的一些实际应用。 关键词: 齐次线性方程组,非齐次线性方程组,克莱姆法则,消元法,矩阵,矩阵的秩,特解,通解。

Abstract Linear equations linear algebra is one of the important component parts, and in real life has extensive production use,and it plays an important role in electronic engineering, software development, personnel management, transportation, etc. In some discipline study, it also has the reigns of linear equations of the auxiliary function.In experiment and survey using the linear equations of the late on the data processing is very convenient simple choice. This article, focusing on how to solve linear equations to explain, for different types of linear equations of different methods, and briefly introduces some of the practical application of linear equations. Keywords: Homogeneous linear equations, Non homogeneous linear equation,Clem’s law,Elimination method,Matrix,Rank of matrix,Special solution,General solution.

非线性方程求根

第二章非线性方程求根 线性方程是方程式中仅包含未知量的一次方项和常数项的方程,除此之外的方程都是非线性方程(nonlinear equation). 例如,大家熟知的“一元二次方程”就是一个非线性方程. 多元线性方程组的求解是数值计算领域的一个重要问题,在后续几章将专门讨论. 本章介绍求解非线性方程的数值方法,主要针对实数域,重点是单个非线性方程的求根问题. 2.1引言 2.1.1非线性方程的解 记要求解的单变量非线性方程为 f(x)=0(2.1) 其中函数f: ?→?. 一般而言,非线性方程的解的存在性和个数是很难确定的,它可能无解,也可能有一个或多个解. 例2.1 (非线性方程的解):分析下列非线性方程的解是否存在和解的个数. (1) e x+1=0. 此方程无解. (2) e?x?x=0. 此方程有一个解. (3) x2?4sinx=0. 此方程有两个解. (4) x3?6x2+5x=0. 此方程有三个解. (5) cosx=0. 此方程有无穷多个解. 在实际问题中,往往要求的是自变量在一定范围内的解,比如限定x∈[a,b]. 函数f一般为连续函数,则可记为f(x)∈C[a,b],C[a,b]表示区间[a,b]上所有连续实函数的集合. 假设在区间[a, b]上方程(2.1)的根为x?,也称x?为函数f(x)的零点. 方程的根可能不唯一,而且同一个根x?也可能是方程(2.1)的多重根. 定义2.1:对光滑函数f,若f(x?)=f′(x?)=?=f(m?1)(x?)=0,但f(m)(x?)≠0,则称x?为方程(2.1)的m重根. 当m=1时,即f(x?)=0,f′(x?)≠0时,称x?为单根. 对于多项式函数f(x),若x?为m重根,则f(x)可因式分解为 f(x)=(x?x?)m g(x) 其中g(x)也是多项式函数,且g(x?)≠0. 很容易验证,f(x?)=f′(x?)=?=f(m?1)(x?)=0,但f(m)(x?)≠0,即多项式方程重根的概念与定义2.1是一致的. 对一般的函数f,x?是方程(2.1)的重根的几何含义是,函数曲线在x?处的斜率为0,且在该点处与x轴相交. 非线性方程的一个特例是n次多项式方程(n≥2),根据代数基本定理可知,n次方程在复数域上有n个根(m重根计为m个根). 当n=1, 2时,方程的求解方法是大家熟知的. 当 n=3, 4时,虽然也有求根公式,但已经很复杂,在实际计算时并不一定适用. 当n≥5时,不存在一般的求根公式,只能借助数值求解方法来求根. 2.1.2问题的敏感性 根据问题敏感性的定义,这里需要考虑输入数据的扰动对方程的根有多大影响. 要分析敏感性首先应假设问题中的数据如何扰动,一种易于分析的情况是将非线性方程写成: f(x)=y 的形式,然后讨论y在0值附近的扰动造成的问题敏感性. 此时,求根问题变成了函数求值

第六章非线性方程组的迭代解法

第六章非线性方程组的迭代解法6.4 非线性方程组的数值解法 6.4.1 非线性方程组的不动点迭代法 6.4.2 非线性方程组的Newton法 6.4.3非线性方程组的Newton法

第六章非线性方程组的迭代解法 T n x f x f x f x F )) (),(),(()(21L =设含有n 个未知数的n 个方程的非线性方程组为 (6,4,1)其中为n 维列向量, 0)(=x F T n x x x x ),,(21L =6.4.1 非线性方程组的不动点迭代法 ),,2,1)((n i x f i L =中至少有一个是x 的非线性函数, 并假设自变量和函数值都是实数。多元非线性方程组 (6.4.1)与一元非线性方程f(x)=0具有相同的形式,可以与一元非线性方程并行地讨论它的迭代解法。例如不动点迭代法和Newton 型迭代法。但是,这里某些定理的证明较为复杂,我们将略去其证明。

第六章非线性方程组的迭代解法 T n x x x x x )) (,),(),(()(21???L =Φ=(6.4.2) 并构造不动点迭代法 L ,1,0),()()1(=Φ=+k x x k k (6.4.3) 把方程组(6.4.1)改写成下面便于迭代的等价形式: 的解。是方程组 从而的不动点,是迭代函数即满足连续函数.则的是自变量 是连续的,即且收敛, 若由此生成的序列对于给定的初始点)1.4.6()(),(,,,)(,),(),()(,*****2121)0(x x x x x x x x x x x x x x n n φφ???φ=L K {}k x *)(lim x x k k =∞ →

人工智能之遗传算法论文含源代码

30维线性方程求解 摘要:非线性方程组的求解是数值计算领域中最困难的问题,大多数的数值求解算法例如牛顿法的收敛性和性能特征在很大程度上依赖于初始点。但是对于很多高维的非线性方程组,选择好的初始点是一件非常困难的事情。本文采用了遗传算法的思想,提出了一种用于求解非线性方程组的混合遗传算法。该混合算法充分发挥了遗传算法的群体搜索和全局收敛性。选择了几个典型非线性方程组,考察它们的最适宜解。 关键词:非线性方程组;混合遗传算法;优化 1. 引言遗传算法是一种通用搜索算法,它基于自然选择机制和自然遗传规律来模拟自然界的进化过程,从而演化出解决问题的最优方法。它将适者生存、结构化但同时又是 随机的信息交换以及算法设计人的创造才能结合起来,形成一种独特的搜索算法,把一些解决方案用一定的方式来表示,放在一起成为群体。每一个方案的优劣程度即为适应性,根据自然界进化“优胜劣汰”的原则,逐步产生它们的后代,使后代具有更强的适应性,这样不断演化下去,就能得到更优解决方案。 随着现代自然科学和技术的发展,以及新学科、新领域的出现,非线性科学在工农业、经济政治、科学研究方面逐渐占有极其重要的位置。在理论研究和应用实践中,几乎绝大多数的问题都最终能化为方程或方程组,或者说,都离不开方程和方程组的求解。因此,在非线性问题中尤以非线性方程和非线性方程组的求解最为基本和重要。传统的解决方法,如简单迭代法、牛顿法、割线法、延拓法、搜索法、梯度法、共轭方向法、变尺度法,无论从算法的选择还是算法本身的构造都与所要解决的问题的特性有很大的关系。很多情况下,算法中算子的构造及其有效性成为我们解决问题的巨大障碍。而遗传算法无需过多地考虑问题的具体形式,因为它是一种灵活的自适应算法,尤其在一些非线性方程组没有精确解的时候,遗传算法显得更为有效。而且,遗传算法是一种高度并行的算法,且算法结构简单,非常便于在计算机上实现。本文所研究的正是将遗传算法应用于求解非线性方程组的问题。 2. 遗传算法解非线性方程组为了直观地观察用遗传算法求解非线性方程组的效果,我们这里用代数非线性方程组作为求解的对象问题描述:非线性方程组指的是有n 个变量(为了简化讨论,这里只讨论实变量方程组)的方程组 中含有非线性方程。其求解是指在其定义域内找出一组数能满足方程组中的每 个方程。这里,我们将方程组转化为一个函数则求解方程组就转化为求一组值使得成立。即求使函数取得最小值0 的一组数,于是方程组求解问题就转变为函数优化问题 3. 遗传算子 遗传算子设计包括交叉算子、变异算子和选择算子的设计。

相关文档
最新文档