数值分析上机作业

更新时间:2024-06-26 07:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章

(1)按从大到小的顺序计算SN的程序为: #include void main() {

float n,j,s=0;

printf(\请输入n:\ scanf(\ for(j=2;j<=n;j++)

s=s+1/(j*j-1);

printf(\}

(2)按从小到大的顺序计算SN的程序为: #include void main() {

float n,j,s=0;

printf(\请输入n:\ scanf(\ for(j=n;j>=2;j--)

s=s+1/(j*j-1);

printf(\

(3)精确值,从大到小,从小到大的计算程序为: #include void main()

{float n,j,s1,s2=0,s3=0; printf(\请输入n:\ scanf(\

s1=(3.0/2-1/n-1/(n+1))/2; for(j=2;j<=n;j++) s2=s2+1/(j*j-1); for(j=n;j>=2;j--) s3=s3+1/(j*j-1);

printf(\精确算法的结果为:%f\\n\ printf(\从大到小顺序的结果为:%f\\n\ printf(\从小到大顺序的结果为:%f\\n\}

结果如下: 精确值 有效位数 从大到小的值 从小到大的值 从大到从小到小 大 S102 0.740049 0.7499 0.749999 0.740049 0.749852 0.749852

0.74005 0.7499 0.749999 6 4 3 5 4 6 S104 S106 (4)通过本上机题,我们可以看出:当n较小时,两种算法的结果都很接近精确值,而当n较大时,两种算法的结果差别较大,按从大到小的顺序计算的值与精确值有较大的误差,而按从小到大的顺序计算的值与精确值吻合。从大到小的顺序计算得到的结果的有效位数少,从小到大算法的结果更精确些。计算机在进行同号数的加法时,采用绝对值较小者先加的算法,其结果的相对误差较小。

第二章

(1)Newton法解方程通用程序: #include #include float f(float a[],int n,float x) {int i;float y=0; for(i=0;i<=n;i++) y=y+a[i]*pow(x,(n-i)); return y;}

float df(float a[],int n,float x) {int i;float y=0; for(i=0;i

y=y+a[i]*(n-i)*pow(x,(n-1-i)); return y;} void main()

{int n,i;float b,a[100],x[100],x0,e,y; printf(\输入方程的阶n:\scanf(\

printf(\输入初始迭代值x0:\scanf(\printf(\输入允许误差e:\scanf(\

printf(\请依次输入方程的系数:\for(i=0;i<=n;i++) scanf(\x[0]=x0;b=1;i=0; while(fabs(b)>e) {i=i+1;

x[i]=x[i-1]-f(a,n,x[i-1])/df(a,n,x[i-1]); b=x[i]-x[i-1];} y=x[i];

printf(\该方程的解为%f\\n:\(2)?求方程根最大收敛区间的程序: #include #include void main() {int i=0;

double b,x0=1e-6,x[100]; x[0]=0; while(x[i]<1e-6) {

x[0]=x0;i=0;b=1;

while(fabs(b)>1e-6)

{i=i+1;

x[i]=x[i-1]-(pow(x[i-1],3)/3-x[i-1])/(pow(x[i-1],2)-1); b=x[i]-x[i-1];} x0+=1e-6; }

printf(\尽可能大的δ为:%lf\\n\

运行后得出δ最大值为0.774598,即即在区间(-0.774598,0.774598)内迭代序列收敛于0。

?对于不同的初始值收敛于不同的根,

?2*x0在x(-∞,-1)内收敛于1,

?xx,在(1,+∞)内收敛于3,

在(-0.774598,0.774598)内收敛于

?*但在内(0.774598,1)和(-1,0.774598)均可能收敛于1和3。

xx(3)当x0取值位于-δ,δ之间时,迭代序列收敛于根0,x0取值位于其他区间时,迭代序列收敛于其他两个根。此题说明当初值x0位于不同区间时,迭代序列可能收敛于不同的根。产生上述结果的原因是区间不满足大范围收敛的条件。

本文来源:https://www.bwwdw.com/article/73w3.html

Top