东南大学数值分析上机作业汇总
东南大学数值分析上机作业汇总
东南大学数值分析上机作业
汇总
-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII
数值分析上机报告
院系:
学号:
姓名:
目录
作业1、舍入误差与有效数 (1)
1、函数文件cxdd.m (1)
2、函数文件cddx.m (1)
3、两种方法有效位数对比 (1)
4、心得 (2)
作业2、Newton迭代法 (2)
1、通用程序函数文件 (3)
2、局部收敛性 (4)
(1)最大δ值文件 (4)
(2)验证局部收敛性 (4)
3、心得 (6)
作业3、列主元素Gauss消去法 (7)
1、列主元Gauss消去法的通用程序 (7)
2、解题中线性方程组 (7)
3、心得 (9)
作业4、三次样条插值函数 (10)
1、第一型三次样条插值函数通用程序: (10)
2、数据输入及计算结果 (12)
作业1、舍入误差与有效数
设∑
=-=N
j N j S 2
2
11
,其精确值为⎪⎭
⎫ ⎝⎛---1112321N N . (1)编制按从小到大的顺序1
1
131121222-⋅
⋅⋅+-+-=N S N ,计算N S 的通用程序;
(2)编制按从大到小的顺序()1
21
11111222-⋅⋅⋅+--+-=N N S N ,计算N S 的通用程序;
(3)按两种顺序分别计算642101010,,S S S ,并指出有效位数; (4)通过本上机你明白了什么? 程序:
1、函数文件cxdd.m
function S=cxdd(N) S=0; i=2.0;
while (i<=N) S=S+1.0/(i*i-1); i=i+1;
数值分析大作业
数值分析上机作业(一)
一、算法的设计方案
1、幂法求解λ1、λ501
幂法主要用于计算矩阵的按模最大的特征值和相应的特征向量,即对于
|λ1|≥|λ2|≥.....≥|λn|可以采用幂法直接求出λ1,但在本题中λ1≤λ2≤……≤λ501,我们无法判断按模最大的特征值。但是由矩阵A的特征值条件可知|λ1|和|λ501|之间必然有一个是最大的,通过对矩阵A使用幂法迭代一定次数后得到满足精度ε=10−12的特征值λ0,然后在对矩阵A做如下的平移:
B=A-λ0I
由线性代数(A-PI)x=(λ-p)x可得矩阵B的特征值为:λ1-λ0、λ2-λ0…….λ501-λ0。对B矩阵采用幂法求出B矩阵按模最大的特征值为λ∗=λ501-λ0,所以λ501=λ∗+λ0,比较λ0与λ501的大小,若λ0>λ501则λ1=λ501,λ501=λ0;若λ0
求矩阵M按模最大的特征值λ的具体算法如下:
任取非零向量u0∈R n
ηk−1=u T(k−1)∗u k−1
y k−1=u k−1η
k−1
u k=Ay k−1
βk=y T
k−1u k
(k=1,2,3……)
当|βk−βk−1|
|βk|
≤ε=10−12时,迭终终止,并且令λ1=βk
2、反幂法计算λs和λik
由已知条件可知λs是矩阵A 按模最小的特征值,可以应用反幂法直接求解出λs。
使用带偏移量的反幂法求解λik,其中偏移量为μk=λ1+kλ501−λ1
40
(k=1,2,3…39),构造矩阵C=A-μk I,矩阵C的特征值为λik−μk,对矩阵C使用反幂法求得按模
最小特征值λ0,则有λik=1
东南大学数值分析上机题C语言编程源程序(前三章)
第一章作业#include<stdio.h>
const int N=100;
int main()
{
int n;
float S1,S2;
double S3;
S1=0;
S2=0;
for(n=2;n<N+1;n++)
{
S1=S1+1.0/(n*n-1);
}
printf("the sum S1 is %d\n",S1);
for(n=N;n>1;n--)
{
S2=S2+1.0/(n*n-1);
}
printf("the sum S2 is %d\n",S2);
S3=0.5*(1.5-1.0/N-1.0/(N+1));
printf("S3 is %d\n",S3);
}
修改N的值即可
第二章作业
(1)
float df(float x)
{
float df;
df=x*x-1;
return df;
}
main()
{
float x0,x1,a;
int k=0;
printf("请输入初值x0=");
scanf_s("%f",&x0);
do
{
a=-f(x0)/df(x0);
x1=x0+a;
k++;
x0=x1;
}while(fabs(a)>eps);
printf("迭代次数k=%d,根值x0=%f",k,x0);
}
(2)
#include<stdio.h>
#include<math.h>
#define eps 0.01
float f(float x)
{
float f;
f=x*x*x/3-x;
return f;
}
float df(float x)
{
float df;
df=x*x-1;
东南大学_数值分析_第七章_偏微分方程数值解法
第七章 偏微分方程数值解法
——Crank-Nicolson 格式
****(学号) *****(姓名)
上机题目要求见教材P346,10题。
一、算法原理
本文研究下列定解问题(抛物型方程)
22(,) (0,0)(,0)() (0)
(0,)(), (1,)() (0)u u
a f x t x l t T t x u x x x l u t t u t t t T ϕαβ⎧∂∂-=<<≤≤⎪∂∂⎪
=≤≤⎨⎪==<≤⎪⎩
(1)
的有限差分法,其中a 为正常数,,,,f ϕαβ为已知函数,且满足边界条件和初始条件。关于式(1)的求解,采用离散化方法,剖分网格,构造差分格式。其中,网格剖分是将区域{}0,0D x l t T =≤≤≤≤用两簇平行直线
(0)
(0)i k x x ih i M t t k k N τ==≤≤⎧⎨
==≤≤⎩ 分割成矩形网格,其中,l T
h M N
τ==分别为空间步长和时间步长。将式(1)中的偏导数使用不同的差商代替,将得到不同的差分格式,如古典显格式、古典隐格式、Crank-Nicolson 格式等。其中,Crank-Nicolson 格式具有更高的收敛阶数,应用更广泛,故本文采用Crank-Nicolson 格式求解抛物型方程。
Crank-Nicolson 格式推导:在节点(,)2
i k x t τ
+处考虑式(1),有
22(,)(,)(,)222
i k i k i k u u x t a x t f x t t x τττ∂∂+-+=+∂∂ (2)
对偏导数
东南大学出版社第二版《数值分析》上机作业答案(前三章)
for (i=k+1;i<N;i++) // { lik=a[i][k]/a[k][k]; //实施消去过程,得到上三角系数增广矩阵 for (j=k;j<M;j++) // { a[i][j]=a[i][j]‐lik*a[k][j]; // } } } cout<<"经列主元高斯消去法得到的数组为:"<<endl; // for (b=0;b<N;b++) // { cout<<endl; //输出经过列主元消去法处理过的系数增广矩阵 for (c=0;c<M;c++) { cout<<setw(7)<<a[b][c]; // } } cout<<endl; double x[N]; // double s; int f,g; x[N‐1]=a[N‐1][M‐1]/a[N‐1][N‐1]; // for (f=N‐2;f>=0;f‐‐) // { s=0; for (g=f+1;g<N;g++) //由上三角形的系数增广矩阵求出方程组的解 { s=s+a[f][g]*x[g]; // } x[f]=(a[f][N]‐s)/a[f][f]; // } cout<<"方程组的解为:"<<endl; for (b=0;b<N;b++) //输出方程组的解 {
东南大学数值分析上机练习后三章
数值分析上机练习
(以VC++6.0为操作平台)第四章(4.38)
程序如下:
#include<iostream.h>
void main(void)
{
float x[11];//存放数组x[j]
float y[11];//存放数组y[j]
float h[11];//存放数组h[j]
float u[11];//存放数组u[j]
float v[11];//存放数组v[j]
float d[11];//存放数组d[j]
float M[11];//存放数组M[j]
float b[11];// 存放数组b[j]
float t[11],l[11],yy[11],s[4],aa1,aa2,aa3,aa4;
float s1[10];
int i,j,n;
float xx;
cout<<"请输入n的值:\n";
cin>>n;
cout<<"输入数组x:\n";
for(i=0;i<=n;i++)cin>>x[i];
cout<<"输入数组y:\n";
for(i=0;i<=n;i++)cin>>y[i];
//输入端点值
float df[2];
cout<<"输入两个端点值:\n";
for(i=0;i<2;i++)cin>>df[i];//求出h[j]的值
for(j=0;j<=n-1;j++)
{h[j]=x[j+1]-x[j];
cout<<'h'<<'['<<j<<']'<<'='<<h[j]<<'\t';
数值分析上机题Matlab(东南大学)3
数值分析上机题2
2010/9/29
一、题目
二、程序
36 - (2)程序运行结果见下。
三、结果
四、分析
松弛因子接近2时方程组的解不再收敛。
五、附录
完整程序:
东南大学_数值分析_第二章_牛顿迭代法
第二章 非线性方程的解法
——牛顿迭代法
****(学号) ****(姓名)
算法与程序题目见教材P56 上机题目20。
一、算法原理
根据题目的要求,是关于用牛顿迭代法法求解方程()0f x =的通用算法。该法是一种通过斜率迭代的算法,其速度比二分法和简单迭代法都要快。其简单原理如下:
设2[,],[,],f C a b p a b ∈∈且存在数满足()0()0,f p f p '=≠。如果则存在一个数00,[,],p p p δδδ>∈-+对任意初始值使得由如下定义的迭代序列0{}k k p ∞
=收敛
到p : 1111()(),1,2,()k k k k k f p p g p p k f p ----==-=' 其中 (1) 对于函数3()/3=0f x x x =-,则其递推规则是 31212,1,2,3-3k k k p p k p --== 其中 (2)
定义序列0{}k k p ∞=,则序列0{}k k p ∞=收敛到x *,也可表示为lim k x p x *→∞
=。现简要证明:
对于3'2()/3()-1f x x x f x x =-=,得,写出牛顿迭代公式 32()/3()()-1f x x x g x x x f x x -=-=-' (3) 该公式可化简为 3
22()33x g x x =- (4)
二、流程图
题目要求于用牛顿迭代法法求解方程()0f x =的通用算法。其计算过程主要
用到迭代
()
()
()
f x
g x x
f x
=-
'
,图流程图1所示。
图1 题1关于牛顿迭代法的算法流程图
数值分析上机实习题及答案.docx
方詡文金兴:爭
[数值分析]2017-2018第二学期上机实习题
1:编程计算亍丄,其中C= 4. 4942x10307
,给出并观察计算结
心C"
果,若有问题,分析之。
解:mat lab 编程如下:
E) funct ion diy i ti format
long g;
n 二input C 输入ii 值= c= 4.4942E307; sum 二0; s 二 0;
E3 for i = l:n s = l/ (c*i);
>> diyiti 输入n 值:10 104.6356e-308 >> diyiti
输入ri 值:100
1004.6356e-308 >> diyiti 输入n 值:1000 10004.6356e-308 >> diyiti
揄入n 值* 100000
1000004・ 6356e-308 >> diyiti
输入n 值;100000000
1000000004.6356e-308
图二:运行结果
Mat lab 中,forma t long g 对双精度,显示15位定点或浮点格式,由上图 可知,当输入较小的n 值5分别取10, 100, 1000, 100000, 100000000)的时候, 结果后面的指数中总是含有e-308,这和题目中的C 值很相似,我认为是由于分 母中的C 值相对于n 值过大,出现了 “大数吃小数”的现彖,这是不符合算法原 则的。
2:利用牛顿法求方程-1^ = 2于区间241的根,考虑不同初值下
牛顿法的收敛情况。
解:牛顿法公式为:
利用mat lab 编程
function di2ti2
最新东南大学数值分析上机题matlab(前三章)
数值分析上机题第一章(17题)
(1)从2依次累加到N的程序
function sn = sum1( n )
sn=0;sn=single(sn);
for i=2:n
ai=1/(i^2-1);
sn=sn+ai;
end
end
(2)从N依次累加到2的程序
function sn = sum2( n )
sn=0;sn=single(sn);
for i=n:-1:2
ai=1/(i^2-1);
sn=sn+ai;
end
end
(3)编制求精确值的求和函数sum0
function sn = sum0( n )
sn=0;sn=single(sn);
sn=1/2*(3/2-1/n-1/(n+1));
end
按第一种顺序得到的值及有效位数如下:
N=100时
sn0=sum0(100);
sn=sum1(100)
n=fix(-log10(2*abs(sn-sn0)))
得到:sn =0.7400495 n =7
N=10e4时
sn0=sum0(10e4);
sn=sum1(10e4)
n=fix(-log10(2*abs(sn-sn0)))
得到:sn =0.7498521 n =3
N=10e6时
sn0=sum0(10e6);
sn=sum1(10e6)
n=fix(-log10(2*abs(sn-sn0)))
得到:sn =0.7498521 n =3
按第二种顺序得到的值及有效位数如下:
N=100时
sn0=sum0(100);
sn=sum2(100)
n=fix(-log10(2*abs(sn-sn0)))
得到:sn =0.7400495 n =7
东南大学数值分析上机题C参考答案
文档从互联网中收集,已重新修正排版,word 格式支持编辑,如有帮助欢迎下载支持。
数值分析上机题
姓名:陈作添 学号:040816
习题1
20.(上机题)舍入误差与有效数 设2
21
1N
N j S j ==-∑
,其精确值为1311221N N ⎛⎫-- ⎪+⎝⎭
。 (1)编制按从大到小的顺序2
22
111
21311
N S N =
+++---,计算N S 的通用程序。 (2)编制按从小到大的顺序2221111(1)121
N S N N =+++----,计算N
S 的通用程序。 (3)按两种顺序分别计算210S ,410S ,610S ,并指出有效位数。(编制程序时用单精度)
的值与精确值有较大的误差,而按从小到大的顺序计算的值与精确值吻合。从大到小的顺序计算得到的结果的有效位数少。计算机在进行数值计算时会出现“大数吃小数”的现象,导致计算结果的精度有所降低,我们在计算机中进行同号数的加法时,采用绝对值较小者先加的算法,其结果的相对误差较小。
习题2
20.(上机题)Newton 迭代法
(1)给定初值0x 及容许误差ε,编制Newton 法解方程()0f x =根的通用程序。
(2)给定方程3()/30f x x x =-=
,易知其有三个根1x *=,20x *=
,3x *
=。
1.由Newton 方法的局部收敛性可知存在0δ>,当0(,)x δδ∈-时,Newton 迭代序列收敛于根2x *
。试确定尽可能大的δ。
2.试取若干初始值,观察当0(,1)x ∈-∞-,(1,)δ--,(,)δδ-,(,1)δ,(1,)∞时Newton 序列是否收敛以及收敛于哪一个根。
数值分析上机题 舍入误差与有效数
functions=myfun1(N)
formatlong;
k=2;
s=single(0);
fork=2:1:N
a=1/(k*k-1);
s=a+s;
end
end
(2)从小到大的matlab程序
functions=myfun2(N)
formatlong;
s=single(0);
舍入误差与有效数
东南大学机械工程学院
设SN= ,其精确值为 )。
(1)编制按从大到小的顺序SN= + + +……+ ,计算SN通用的程序;
(2)编制按从小到大的顺序SN= + + +……+ ,计算SN通用的程序;
(3)按两种顺序分别计算 , , ,并指出有效位数(编制程序时用单精度);
(4)通过本上机题你明白了什么。
fori=N:-1:2
a=1/(i*i-1);
s=a+s;
end
end
(3)
大小
小大
真值
有效位数
0.7400495
0.7400495
0.7400495
大小
7位
小大
7位
0.7498521
0.7499000
0.7499000
东南大学数值分析第四章三次样条插值
第四章 多项式插值与函数最佳逼近
——曲线拟合之3次样条插值
*****(学号) *****(姓名)
上机题目要求见教材P195,37题。
一、算法原理
题目要求编写第一边界条件的3次样条插值函数的通用程序,同时根据汽车门曲线值点构造三次紧压样条曲线函数()S x 。其基本原理如下 定义
设0{(,)}N
k k k x y =有N+1个点,
其中01N a x x x b =<<<<。如果存在N 个
三次多项式()k S x ,系数为,0,1,2,3,,k k k k S S S S 和满足如下性质:
23,0,1,2,3()()()()k k k k k k k k S x s s x x s x x s x x =+-+-+- (1)
111''111''''111(), 0,1,...,()(), 0,1,...,2()(), 0,1,...,2()(), 0,1,...,2
k k k k k k k k k k k k k k S x y for k N S x S x for k N S x S x for k N S x S x for k N +++++++++====-==-==- (2)
则成()S x 为三次样条函数。
现证明其存在:
由于()S x 是分段三次多项式,其二阶导数是在区间0[,]N x x 内是分段线性的。根据线性拉格朗日插值"()"()k S x S x =可以表示为:
11
111"()"()
"()k k k k k k k k k
x x x x S x S x S x x x x x +++++--=+--
东南大学_数值分析_第六章_常微分方程数值解法
第六章 常微分方程数值解法
——RK 4法、AB 4法
******(学号) *****(姓名)
上机题目要求见教材P307,23题。
一、算法原理
题目要求采用RK 4法和AB 4法求解最简单的常微分方程初值问题
(,),()y f x y a x b
y a η
'=≤≤⎧⎨
=⎩ (1)
为求解式(1),采用离散化方法,就是寻求解)(x y 在区间],[b a 上的一系列点
<<<<
上的近似值 ,,,,21n y y y 。记1(1,2,)i i i h x x i -=-=表示相邻两个节点的间距,称为步长。
求微分方程数值解的主要问题:
(1) 如何将微分方程(,)y f x y '=离散化,并建立求其数值解的递推公式; (2) 递推公式的局部截断误差、数值数n y 与精确解)(n x y 的误差估计; (3) 递推公式的稳定性与收敛性. a) Runge-Kutta 方法
基本思想:通过在1[,]i i x x +多预报几个点求斜率,并将其加权平均作为k *的近似值,以此构造更高精度的计算公式。如果每步计算四次函数 的值,完全类似的,可以导出局部截断误差为)(5h O 的四阶Runge-Kutta 公式(RK 4):
1
123412132431(22),6
(,),(,),
221(,),22(,).
n n n n n n n n n n y y k k k k k f x y h h k f x y k h k f x h y k k f x h y hk +⎧
=++++⎪⎪
=⎪⎪⎪
=++⎨⎪
⎪
=++⎪⎪=++⎪⎩ (2)
数值分析上机试题对应参考答案
一、 问答题
1、什么是近似值x * 有效数字?
若近似值x*的误差限是某一位的半个单位,该位到x*的第一位非零数字共有n 位,就说x*有n 位有效数字。它可表示为
X=±10m ×(a 1+a 2×10-1+…+a n ×10-(n-1),其中a i (i=1,2,…,n)是0到9中的一个
数字,a 1≠0,m 为整数,且︱x -x *︱≠2
1
×10m-n+1
2、数值计算应该避免采用不稳定的算法,防止有效数字的损失. 因此,在进行 数值运算算法设计过程中主要注意什么? (1)简化计算过程,减少运算次数; (2)避免两个相近的数相减;
(3)避免除数的绝对值远小于被除数的绝对值; (4)防止大数“吃掉”小数的现象;
(5)使用数值稳定的算法,设法控制误差的传播。
3、写出“n 阶阵A 具有n 个不相等的特征值”的等价条件(至少写3 个)
(1)|A|不为零
(2)n 阶矩阵A 的列或行向量组线性无关 (3)矩阵A 为满秩矩阵
(4)n 阶矩阵A 与n 阶可逆矩阵B 等价
4、迭代法的基本思想是什么?
就是用某种极限过程去逐步逼近线性方程组精确解得方法。其基本思想为:先任取一组近似解初值X 0,然后按照某种迭代原则,由X 0计算新的近似解X 1,以此类推,可计算出X 2,X 3,…X K ,。。。,如果{X }收敛,则取为原方程组的解。
5、病态线性方程组的主要判断方法有哪些?
(1)系数矩阵的某两行(列)几乎近似相关 (2)系数矩阵的行列式的值很小
(3)用主元消去法解线性方程组时出现小主元
(4)近似解x*已使残差向量r=b-Ax*的范数很小,但该近似解仍不符合问题要求。
数值分析_第三次上机
4.求f(x)=sin x 在[0,π/2]上的最佳一次逼近多项式。
解:设P 1(x)=a 0+a 1x 是f(x) 的最佳一次逼近多项式,则P 1(x)在[0,π/2]上有三个交错点, 满足0<=x 1<x 2<x 3<=π/2。
由于 [f(x)- P 1(x)]’’=(cos x-a 1)’= -sin x 在[0,π/2]上小于0,定号, 故(cos x-a 1)’在[0,π/2]上单调递减,且仅有一个驻点。
故f(x)- P 1(x)在[0,π/2]上只有一个偏差点x 2,满足[f(x)- P 1(x)]’|x=x2 =cos x 2-a 1=0 (1)。 另外两个偏差点x 1=0 ,x 3=π/2 .
于是sin 0-a 0 =sin π/2-a 0-π/2a 1 (2), sin x 2 –a 0-a 1x 2= -( sin 0-a 0) (3) 由(1)(2)(3)式得:a 1=2/π x 2=arccos 2/π=0.88 a 0=-1.18 所以P 1= -1.18+2/π x 。
6.求f(x)=2x 4+3x 3-x 2+1在[-1,1]上的三次最佳一致逼近多项式。 解:设f(x)的三次最佳一致逼近多项式为P 3(x),
由切比雪夫多项式的极性可得 1/2[f(x)- P 3(x)]=1/8T 4(x)=1/8(8x 4-8x 2+1)
所以P 3(x)=f(x)-1/4(8x 4-8x 2+1)= 2x 4+3x 3-x 2+1-2x 4+2x 2-1/4 =3x 3+x 2+3/4
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东南大学数值分析上机作业
汇总
-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII
数值分析上机报告
院系:
学号:
姓名:
目录
作业1、舍入误差与有效数 (1)
1、函数文件cxdd.m (1)
2、函数文件cddx.m (1)
3、两种方法有效位数对比 (1)
4、心得 (2)
作业2、Newton迭代法 (2)
1、通用程序函数文件 (3)
2、局部收敛性 (4)
(1)最大δ值文件 (4)
(2)验证局部收敛性 (4)
3、心得 (6)
作业3、列主元素Gauss消去法 (7)
1、列主元Gauss消去法的通用程序 (7)
2、解题中线性方程组 (7)
3、心得 (9)
作业4、三次样条插值函数 (10)
1、第一型三次样条插值函数通用程序: (10)
2、数据输入及计算结果 (12)
作业1、舍入误差与有效数
设∑
=-=N
j N j S 2
2
11
,其精确值为⎪⎭
⎫ ⎝⎛---1112321N N . (1)编制按从小到大的顺序1
1
131121222-⋅
⋅⋅+-+-=N S N ,计算N S 的通用程序;
(2)编制按从大到小的顺序()1
21
11111222-⋅⋅⋅+--+-=N N S N ,计算N S 的通用程序;
(3)按两种顺序分别计算642101010,,S S S ,并指出有效位数; (4)通过本上机你明白了什么? 程序:
1、函数文件cxdd.m
function S=cxdd(N) S=0; i=2.0;
while (i<=N) S=S+1.0/(i*i-1); i=i+1;
end
script 运行结果(省略>>):
S=cxdd(80) S=
0.737577
2、函数文件cddx.m
function S=cddx (N) S=0; for i=N:-1:2 S=S+1/(i*i-1); end
script 运行结果(省略>>): S=cddx(80) S=
0.737577
3、两种方法有效位数对比
精确值函数:
function S=jqz(N)
S=0.5*(1.5-1.0/N-1.0/(N+1));
script运行结果(省略>>)
4、心得
本题重点体现了数值计算中“大数吃小数”的问题,由于计算机计算的截断特点,从大到小的计算会导致小数的有效数被忽略掉。
从题中可以看出,看出按不同的顺序计算的结果是不相同的,按从小到大的顺序计算的值与精确值吻合,而按从大到小的顺序计算的值与精确值有较大的误差。计算机在进行数值计算时会出现“大数吃小数”的现象,导致计算结果的精度有所降低。
作业2、Newton迭代法
(1)给定初值x0及容许误差ε,编制Newton法解方程f(x)=0根的通用程序。
-,x2※=0,x3※=3。(2)给定方程f(x)=x3/3-x=0,易知其有三个根x1※=3
①由Newton方法的局部收敛性可知存在δ>0,当x0∈(δ
-,δ),Newton 迭代序列收敛于根x2※,试确定尽可能大的δ;
②试取若干个初始值,观察当x0∈(-∞,-1),(-1,δ
-,δ),
-),(δ
(δ,1),(1,+∞)时,Newton序列是否收敛以及收敛于哪一个根。(3)通过本上机题,你明白了什么?
1、通用程序函数文件
定义f(x)函数
function f=fun(x)
f=x^3/3-x;
end
定义f(x)导函数
function f=dfun(x)
f=x*x-1;
end
定义求近似解函数
function [f,n]=newton(x0,ep)
flag=1;
n=0;
while(flag==1)
x1=x0-fun(x0)/dfun(x0);
n=n+1;
if(abs(x1-x0)<=ep||n>100000)
flag=0;
end
x0=x1;
end
f=x1;
end
script运行结果
clear;
x0=input('请输入初始值x0:');
ep=input('请输入容许误差:');
[f,n]=newton(x0,ep);
fprintf('方程的一个近似解为:%f\n',x1);
2、局部收敛性
(1)最大δ值文件
flag=1;
k=1;
x0=0;
while flag==1
sigma=k*10^-6;
x0=sigma;
k=k+1;
m=0;
flag1=1;
while flag1==1 && m<=10^3
x1=x0-fun(x0)/dfun(x0);
if abs(x1-x0)<10^-6
flag1=0;
end
m=m+1;
x0=x1;
end
if (flag1==1||abs(x0)>=10^-6)
flag=0;
end
end
fprintf('最大值为: %f\n',sigma);
运行结果为:
最大值为:0.774597
x=0的最大区间为即得最大的δ为0.774597,Newton迭代序列收敛于根*
2
(-0.774597,0.774597)。
(2)验证局部收敛性
在x0∈(-∞,-1)区间,取以下初值,分别调用newton.m函数文件,得到结果如下: