第一章方程(组)模型。
本章学习目的:
1.复习求解方程的基本原理和方法,掌握解方程的图形放**和迭代算法;
2.能利用matlab软件编写迭代算法程序,了解迭代过程的图形表示;
3.熟练掌握用matlab软件的函数来求解方程和方程组;
4.通过范例展现求解实际问题的初步建模过程和matlab程序设计。
1.1 引言。
“方程是很多工程和科学工作的发动机”。研究大型的土建结构、机械结构、输电网络、管道网络,研究经济规划、人口增长、种群繁殖等问题时,简单的分析可以直接归结为线性或非线性方程组,复杂一些要用到(偏)微分方程,求数值解时将转化为n非常大的方程组。若干世纪以来,工程师和科学家花了大量的时间用于求解方程(组),数学家研究各种各样的方程求解方法。
本章我们就是要学习求解线性方程组、非线性方程(组)的方法,以及利用数学软件利用计算机对方程和方程组进行求解。
1.2 方程的求解方法
考虑求方程f(x)=0的解,我们通常采用这样的几种方法:因式分解法、图形放**、数值迭代逼近法。
1.因式分解法:
这是我们最熟悉、常用的一种方法,这个方法的关键在分解因式,包括对多项式函数、三角函数和指数函数等的分解。但对于无法进行分解的函数则无能为力。
2.图形放**:
由于计算机的广泛应用,可以非常方便地作出函数f(x)的图形(曲线),找出曲线与x轴的交点的横坐标值,就可求出f(x)=0的近似根。这些值尽管不精确,但是直观,方程有多少个根、在什么范围,一目了然。并且可以借助于计算机使用图形局部放大功能,将根定位得更加准确。
3.数值迭代逼近法:
利用图形的方法或连续函数的零点存在性定理,可以推知f(x)在某一区间内有根,我们就可以用数值方法来求方程的根,这就是迭代逼近法。
迭代逼近法分为区间的迭代和点的迭代。
区间迭代又分为对分法和**分割法;点的迭代又分为简单迭代法、单点割线法、两点割线法、牛顿法等。迭代失败后又可以采用加速迭代收敛方法。
1.2.1图形放**。
用图形放**求解方程f(x)=0的步骤:
1) 建立坐标系,作曲线f(x);
2) 观察f(x)与x轴的交点;
3) 将其中的一个交点进行局部放大;
4) 该交点的横坐标值就是方程的一个根;
5) 对所有的交点进行相同的处理,就得到方程的所有解。
例1.1 求方程所有的根及大致分布范围,欲寻求其中的一个实根,并且达到一定的精度。
1) 画出的图形;
x=-6:0.01:6;
y=x.^5+2*x.^2+4;
plot(x,y)
grid on; %画坐标格。
我们可以看出方程在-2~+2范围有一个实根。
2) 逐次缩小范围得到较精确的根。
x=-2:0.01:2;
y=x.^5+2.*x.^2+4;
plot(x,y)
grid on
x=-2:0.01:-1.5;
y=x.^5+2.*x.^2+4;
plot(x,y)
grid on
x=-1.6:0.01:-1.5;
y=x.^5+2.*x.^2+4;
plot(x,y)
grid on
因此我们可以看出这个实根的值在-1.55~-1.5之间。
1.2.2 简单迭代法。
1.迭代算法步骤:
对方程f(x)=0求解。
1) 对方程经过简单变形得到(不是唯一的),x 被称之为不动点;
2) 设置为迭代初值,迭代过程为,n=0,1,2……
3) 当两次迭代结果之差小于某个设定的误差值时,我们认为迭代结果是收敛的,可得到结果的近似值。
例1.2 求方程的非负实根。
解:由于函数连续,并且在x=0和x=1处函数值符号相反,可以判断函数在区间(0,1)必有零点,即方程在(0,1)内必然存在根。
1) 先将函数变形为;
2) 设置迭代初值为0,编程进行迭代。
n=1;x=0;
y=exp(x)/3;
ys=vpa(y,10); 给出y的数值型结果,有效位数为10
z=abs(y-x);
while z>10^(-5)
x=y;y=exp(x)/3;
ys=vpa(y,10);
z=abs(y-x);
n=n+1;
endn,y,ys n =
y =ys =
从该结果可以看出,迭代21次后两次迭代的结果误差值满足小于的条件,结果收敛,迭代结果为0.6190,若保留小数点后10位有效数字则结果为0.6190471917。
例1.3 用迭代方法求解方程。
解:(1)对方程变形为,有不同的形式,比如。a)b)
c)2)设定初始值为1,编程迭代求解。
x=1;y=1;z=1;
for k=1:25
x=x^3-x^2-1;
y=(y^2+y+1)^(1/3);
z=1+1/z+1/z^2;
endx,y,z
x =-infy =
z =在程序中,函数x,y,z分别对应方程(a)(b )(c),从结果可以看出方程( a)不收敛,结果趋于负无穷大,方程(b)(c)收敛,结果为1.8393。而且,还可证明(b)比(c)收敛速度快。
注:这段程序和例1.2有所不同,这里是设定了固定的迭代次数。
2.迭代失败的改进:加速迭代收敛方法。
例1.3中方程(a)的迭代是失败的(即迭代不收敛),如何解决?
当我们遇到迭代失败时,可以采用以下的简单方法解决。
我们考虑不直接用迭代,而用和x的加权平均进行迭代,为参数。
即: 在满足的条件下,取,由此可以得到。在实际迭代过程中用代替a,因此在迭代中,其加速迭代过程如下:。
采用以上方法对例2.3中方程(a)进行改进,产生新的迭代函数
加速迭代过程为。再编写程序计算:
x=0;for k=1:20
x=(-2*x^3+x^2-1)/(3*x^2+2*x+1);endx
x =x=100;
for k=1:20
x=(-2*x^3+x^2-1)/(3*x^2+2*x+1);endx
x =由此我们看到选用两个不同的初值0和100都能得到结果是1.8393,改进是非常有效的,同学们还可尝试不同的初值,观察其迭代的收敛性。
实验表明,它比(b)、(c)的收敛速度都快。
但要注意,x=1不能作为初值,这会出现被0除的错误。
通过这个例子我们看出,求解方程的迭代函数构造形式多样,不同迭代函数的收敛性和收敛速度都可能不同,需要在遇到具体问题时灵活应用。
1.3 方程组的求解方法。
1.3.1 线性方程组的求解。
我们**性代数中已经学习了线性方程组的求解方法。
对于线性方程组。
可以写成矩阵的形式。
由线性代数的知识可知,线性方程组的解可能出现三种情形:无解、有唯一解、有无穷多组解。这主要取决于系数矩阵a 的秩与增广矩阵(a︱b)的秩是否相等、秩与变量个数是否相等,具体地:
若r(a)≠r(a︱b),则无解;
若r(a)=r(a︱b)=n(n为变量个数),则有唯一一组解;
若r(a)=r(a︱b)< n,则有无穷多组解。
求矩阵a的秩可以很方便的用matlab的rank(a)函数求得。
求解线性方程组的方法大致可以划分为两类:直接消去法、迭代数值解法。
直接消去法**性代数中已经学过,这里不再赘述。
线性方程组可以看成是非线性方程组的特例,其迭代数值解法相同,在非线性方程组的迭代解法中介绍方法。
1.3.2 非线性方程组的迭代解法。
非线性方程组的一般形式为。
可以改写为等价的方程组。
用这个方程组进行迭代求得精确解。
例1.4 求解方程组。
解:对方程组进行变形,构造如下的迭代函数:
或2)思考:迭代序列如何表示?
求解方程组迭代产生的序列是数组:
对本例选择初始点(0,0),(2,3),(8,9),…分别计算,迭代次数逐渐增加,观察结果。
迭代程序如下:(初始值是(2,3),迭代次数为20次)
x=[2,3];y=[2,3];
for k=1:20
a=0.1*x(1)^2+0.1*x(2)^2+0.8;
x(2)=0.1*x(1)*x(2)^2+0.1*x(1)+0.8;
x(1)=a;
b=(10*y(2)-8)/(y(2)^2+1);
y(2)=sqrt(10*y(1)-8-y(1)^2);
y(1)= b;
endx,y x =
y =从这个结果看出,x(1)=1,x(2)=1,和y(1)=2.1934,y(2)=3.0205是方程组的两组解。
问:程序中a、b变量的作用是什么?取消可以吗?
1.4 matlab软件直接求解法。
1.4.1 任意函数方程与线性方程组可用命令solve( )求解。
solve( )语句的用法:
1. 单变量方程:f(x)=0
1) 符号解:
例1.5 求解方程:
解:输入:x=solve('a*x^2+b*x+c')
输出为:x =
1/2/a*(-b+(b^2-4*a*c)^(1/2))]
1/2/a*(-b-(b^2-4*a*c)^(1/2))]
或输入:solve('a*x^2+b*x+c')
输出为:ans =
1/2/a*(-b+(b^2-4*a*c)^(1/2))
1/2/a*(-b-(b^2-4*a*c)^(1/2))
2) 数字解:
如果不能求得精确的符号解,可以计算可变精度的数值解。
例1.6 解方程:
解:s=solve('x^3-2*x^2=x-1')
s =1/6*(28+84*i*3^(1/2))^1/3)+14/3/(28+84*i*3^(1/2))^1/3)+2/3
-1/12*(28+84*i*3^(1/2))^1/3)-7/3/(28+84*i*3^(1/2))^1/3)+2/3+1/2*i*3^(1/2)*(1/6*(28+84*i*3^(1/2))^1/3)-14/3/(28+84*i*3^(1/2))^1/3))
数学建模第一章
模型构成 在前面工作的基础上,将问题涉及的各个量符号化,以及各变量之间的内在联系形式化,利用适当的数学工具,将所关心的实际对象抽象为某个数学结构。可以是一个方程组的求解问题,也可以是一个最优化问题,也可以是其它。从简单的角度讲,这一环节要求用尽可能简洁清晰的符号 语言和结构将经过简化的问题进行整理性...
数学建模第一章
第一篇线性规划模型及应用。第一章线性规划问题的数学模型及其解的性质。1 1 1线性规划问题的数学模型。引例 某工厂生产某种型号的机床,每台机床上需要2.9米 2.1米和1.5米长的三种轴各一根,这些轴需要用同一种圆钢制作,圆钢的长度为7.4米。如果要生产100台机床,应如何下料,才能使得用料最省?分...
数学建模第一章检测
2018.3.26 一 填空。1.数学建模的步骤有。2甲坐船过河,船速是250米 分,顺水要10分钟,逆水要15分,则水速是 米 分。3.甲乙分别在相距600米的a b两地来回跑步,已知第二次相遇时甲跑完600m,则乙跑完米 按此速度跑下去,第四次相遇时甲共跑 m,乙共跑完 m.4.甲,乙在ab两地...