数值分析sdpWord文件下载.docx
- 文档编号:22946907
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:15
- 大小:65.19KB
数值分析sdpWord文件下载.docx
《数值分析sdpWord文件下载.docx》由会员分享,可在线阅读,更多相关《数值分析sdpWord文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
结论
输出误差
㈤符号引用表
标志符
数学符号
类型
个数
入
出
作用
x
x0
double
不定
*
方程初值
f
f(x)
函数名
f1
f’(x)
g
g(x)
g1
g’(x)
s
数组名
i
int
控制循环
㈥分程序
1第一个方程改进方法的两种方法与Newton法的比较
cout<
<
"
求x*x-4*x+4=0的根:
'
\n'
;
doublex=3;
doubles[10][2];
Newton迭代法:
for(inti=0;
f(x)&
&
i<
10;
i++)
{s[i][0]=x;
s[i][1]=fabs(2-x);
s[i][0]<
\t'
误差:
s[i][1]<
x=x-f(x)/f1(x);
}
第二种方法(初值求导迭代):
x=s[0][0];
for(i=0;
x=x-f(x)/f1(3);
第三种方法(隔步求导迭代):
if(i%2==0)x=x-f(x)/f1(x);
elsex=x-f(x)/f1(s[i-1][0]);
2第二个方程改进方法的两种方法与Newton法的比较
求x*x*x-1=0的根:
x=2;
g(x)&
s[i][1]=fabs(1-x);
x=x-g(x)/g1(x);
x=x-g(x)/g1(3);
if(i%2==0)x=x-g(x)/g1(x);
elsex=x-g(x)/g1(s[i-1][0]);
㈦程序的输出结果与问题分析
Ⅰ、程序的输出结果
3误差:
1
2.5误差:
0.5
2.25误差:
0.25
2.125误差:
0.125
2.0625误差:
0.0625
2.03125误差:
0.03125
2.01563误差:
0.015625
2.00781误差:
0.0078125
2.00391误差:
0.00390625
2.00195误差:
0.00195313
3误差:
2.375误差:
0.375
2.30469误差:
0.304688
2.25827误差:
0.25827
2.22492误差:
0.224918
2.19962误差:
0.199624
2.1797误差:
0.179699
2.16355误差:
0.163553
2.15018误差:
0.150179
2.1875误差:
0.1875
2.14063误差:
0.140625
2.07031误差:
0.0703125
2.05273误差:
0.0527344
2.02637误差:
0.0263672
2.01978误差:
0.0197754
2.00989误差:
0.0098877
2误差:
1.41667误差:
0.416667
1.11053误差:
0.110534
1.01064误差:
0.0106368
1.00011误差:
0.000111557
1误差:
1.24432e-008
2.22045e-016
1.74074误差:
0.740741
1.58242误差:
0.582416
1.4727误差:
0.472697
1.39144误差:
0.391436
1.3287误差:
0.328697
1.27886误差:
0.278855
1.23843误差:
0.238428
1.20512误差:
0.205118
1.17733误差:
0.177332
1.26307误差:
0.263069
1.05099误差:
0.0509875
1.01737误差:
0.01737
1.00029误差:
0.000294878
1.00001误差:
9.89921e-006
9.79932e-011
1.9984e-015
Ⅱ、问题分析
从结果我们可以知道Newton迭代法收敛速度最快,隔一次算一次导数的方法(隔步求导迭代)的收敛速度比Newton迭代法略慢一些,只算一次导数的方法(初值求导迭代)收敛速度最慢,又由于隔一次算一次导数的方法(隔步求导迭代)收敛速度虽然比Newton迭代法差一点,但计算量减少了,所以隔一次算一次导数(隔步求导迭代)的方法也是很可取的。
9.6线性方程组求解的数值试验题1
对从2到9的每一个n值,解n阶方程组Ax=b。
这里A和b如下定义:
aij=1/(i+j-1),bi=p(n+i-1)-p(i-1)
式中,p(x)=1/24*x^2*(2+x^2*(-7+n^2*(14+n*(12+3*n)))),解释发生的现象。
首先用两个for循环实现方程增广矩阵的赋值;
再用三个for循环实现高斯消元过程;
然后再用两个for循环实现回代过程,解出n阶方程组的解;
最后输出结果。
㈣模块关系图与模块流程图
分析结果
j
个数
a
b
p
P(x)
存放解
中间变量
k
sum
n
方程阶数
1、实现赋初值
n;
{for(j=0;
j<
j++)
a[i][j]=(double)1/(i+j+1);
b[i]=p((double)n+i,n)-p((double)i,n);
2、实现高斯消元
for(k=0;
k<
k++)//高斯消元过程
{
for(i=k+1;
b[i]=b[i]-(a[i][k]/a[k][k])*b[k];
for(j=k;
a[i][j]=a[i][j]-(a[i][k]/a[k][k])*a[k][j];
3、实现回代过程
doubles=0;
x[n-1]=b[n-1]/a[n-1][n-1];
//回代过程
for(k=n-2;
k>
=0;
k--)
for(j=k+1;
s=s+a[k][j]*x[j];
x[k]=(b[k]-s)/a[k][k];
4、输出解
n阶方程组的解:
x["
i+1<
]="
x[i]<
㈦输出结果及问题分析
1、程序输出的结果
n=2
x[1]=-740.25
x[2]=1738.5
n=3
x[1]=-19421.6
x[2]=-26746.5
x[3]=60190
n=4
x[1]=-28639.2
x[2]=-425780
x[3]=-241885
x[4]=650803
n=5
x[1]=681517
x[2]=-982843
x[3]=-3.17889e+006
x[4]=-1.23228e+006
x[5]=3.97304e+006
n=6
x[1]=3.2258e+006
x[2]=4.4299e+006
x[3]=-6.91437e+006
x[4]=-1.49936e+007
x[5]=-4.53719e+006
x[6]=1.71837e+007
n=7
x[1]=2.58087e+006
x[2]=2.52885e+007
x[3]=1.51348e+007
x[4]=-2.99669e+007
x[5]=-5.38151e+007
x[6]=-1.35041e+007
x[7]=5.89271e+007
n=8
x[1]=-1.78113e+007
x[2]=3.38814e+007
x[3]=9.5424e+007
x[4]=4.11571e+007
x[5]=-9.98642e+007
x[6]=-1.60334e+008
x[7]=-3.45467e+007
x[8]=1.70902e+008
n=9
x[1]=-5.60419e+007
x[2]=-6.77917e+007
x[3]=1.3593e+008
x[4]=2.79662e+008
x[5]=9.70766e+007
x[6]=-2,79705e+008
x[7]=-4.16675e+008
x[8]=-7.88834e+007
x[9]=4.36577e+008
2、问题分析
由结果可看出,n=2,n=3及n=4时,求出的解一还比较小,而方程组在4阶以后得到的解就会很大或很小。
产生这种情况的原因可能是方程的系数矩阵是病态的,求出的解偏离真实解较大。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 sdp
![提示](https://static.bdocx.com/images/bang_tan.gif)