非线性方程组研究毕业论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
非线性方程组研究毕业论文
第一章绪论
1.1 了解非线性方程组的一般形式如下:
f l X i ,X 2,X 3,...,X n =0, ,f n (X i ,X 2,X 3,…,X n )=0,
可以看出f i i = 1,2,3,..., n 是在空间R 的实值函数。
再用向量转换下可以得到:
把F 可以看做在R n 区域内展开的非线性映像,表示为
F 尸 D R n
、 R n
1.2下面来介绍简单的边值问题:
X = f t,s 0 乞t 辽1 , x 0 二 a, x 1 = :。
( 1.2
)
此时定义f 在D —t,x |0岂21,-:: ::x ::::[上二阶可微连续, 现在求解(1.2)上X 的数值。
(1.1)
F X = 0。
我们用差分方法离散化得到:
u 1 4 •…
h= -------- , t j = J h, j=0,1,2,3 ,、、n+1 ,
n +1
在得到:
'' 1
X (t j )=活区斗—2X j +X j J j+1,2,八、n, h
在转化矩阵又可以得到:
2-10
-1 2 ...
A =
0 ... -1
-…-1 2_
在从映像转换成:
2
x =h X j,...X n ,
方程(1.2)转化为:
Ax+ 「x =0
本文将介绍求解非线性方程组的牛顿法,迭代法,牛顿法,这是本人对非线性方程数值求解的认识,我会使用这些方法并为为开展进一步研究。
第二章、求解非线性方程组的牛顿法
2.1牛顿法的引入与介绍
在学习中关于方程f x =0的求解这种题型接触的太多了, f x 作为线性方程 函数,解法多样也很容易求解值。我们来比较一下牛顿法,牛顿法简单的来说其实也 是一种线性化方法,他的理念就是把非线性方程 f x 转化成某种类型的线性方程求
解x 的值。非线性方程不过是线性方程的扩展, 非线性方程组就是在此基础上加以延 伸。
F 面我们来介绍了解一下牛顿法的理论:
我们看下例题:
f l X i ,X 2,X 3,…,X n i=0.
也可以用向量把它转化为
F x [=0 可以看出n^2时,fj(i=1,...,n )至少有一个变量是在x(i=1,...,n )的非线性函数, 我们这时(2.1)就可以看作非线性方程组,非线性方程组的求解实际上就是
n=1求
根的应用。也就是把单一变量的函数f x 转化为向量函数F x ,这个时候就可以用 求解单变量的方法来求解非线性方程组(2.2)。若果知道方程组F (x )=0的一个近似
根x$)=(辽...,X :),再用函数F(x )的分量fi (x )(i =1,...., n )在x (k 用多元函数泰勒的 方法展开,提取线性方程就可以得到:
F (X )跆 F (x * ))十 F'(X (k )K x _X (k )),
f n X i ,X 2,X 3,...,X n = 0,
从上面非线性方程组我们可以看出 f 1,
(2.1)
f n 是N ,…x n 的多元函数,这是我们
(2.2)
我们同时把他转化为:
得到:
F x %—F ' x k x —x k
其中:
这时可以把(2.4)作为雅克比矩阵,(2.3)的线性方程组的解我们记作为 x k1 , 就可以得到:
x x D=x (k )-F'(x (k ))」F (x (k )) (k=0,1,2,..…)。
(2.5)
这就是我们所说的求解非线性方程组(2.5)的牛顿法。
从上面的实例我们可以看得出牛顿法求解非线性方程的主要理论是用
x D=x f )-F'(x (k )) F (x (k ))在(k=0,1,2,...)的基础上进行迭代计算。我们这时所
要做的就是计算出F (x )的雅克比矩阵F ' x ,通过F ' x 得到它的逆F ' x J ,直到 达到所需要的精度(x_k )的范围内才停止迭代
2.2牛顿法的算法
牛顿法算法如下:
第一步:首先我们把所要求解的非线性方程组定义为
F (x ),并为之确定精度(x_k )
<
第二步:把F x 转化为雅克比矩阵,得到F ' x 。求解方法如下:
少 f j ( X i ,..., X j ,..., X n ) f i ( x i X j * X _,..., X n ) — f ^ x i ,..., x j ,..., X n )
®X j x_
第三步:重复第二步方法,求解F ' x 雅克比矩阵的逆F ' x '。另外把F ' x 乘以单位
F x 二
令F X j=O ,
(2.3)
(2.4)
白…o '
矩阵“ '
',我们可以用单位矩阵转换求解
F '(X )的逆用来保存。
\0 (1)
J
第四步:F ' X 与F ' X 的相乘
第五步:再用 X X D=X (k )_F (X (k )) F (X (k )) ( k=0,1,2,..…)来迭代。
精度达到最小(精度 < X k )时停止迭代,最后的迭代结果为
X k i 。
i
=J (x i (卑)_旳(»,…,(x f 率)一xf ))
2.3牛顿法代码程序编程
最后介绍代码的编程:
#i nclude
#define f0(x1,x2) (x1+2*x2-3)
#define f1(x1,x2) (2*X 1*X 1+X 2*X 2-5) #defi ne X _ 0.000001 #define matrixNum 2
double *matrixF2(double *X ); int y=0; void mai n() {
int i,j,n;
double p,*x; double *b;
double *matrixF; //矩阵 F
double *matrixF_;
〃矩阵F 的雅可比矩阵的逆
b=(double *)malloc(matrixNum);
matrixF=(double *)malloc(matrixNum); matrixF_=(double *)malloc(matrixNum*matrixNum); coutvv"请输入初值:"; for(i=0;i cin> >*(x+i); do { p=0.0; for(i=0;i 第六步:最后我们注意的时精度,其精度 x_K >x_k 时,我们需要重复 2—5次, 直使 x_k i