最新数值分析实验答案.docx

上传人:b****5 文档编号:7404247 上传时间:2023-01-23 格式:DOCX 页数:13 大小:26.02KB
下载 相关 举报
最新数值分析实验答案.docx_第1页
第1页 / 共13页
最新数值分析实验答案.docx_第2页
第2页 / 共13页
最新数值分析实验答案.docx_第3页
第3页 / 共13页
最新数值分析实验答案.docx_第4页
第4页 / 共13页
最新数值分析实验答案.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

最新数值分析实验答案.docx

《最新数值分析实验答案.docx》由会员分享,可在线阅读,更多相关《最新数值分析实验答案.docx(13页珍藏版)》请在冰豆网上搜索。

最新数值分析实验答案.docx

最新数值分析实验答案

实验0截断误差与舍入误差

#include"stdio.h"

#include"math.h"

constdoubleln2=0.693147190546;

constdoublee1=5e-6;

voidmain()

{

intsign;

doubles;

longi;

s=0.0;

sign=1;

i=1;

while(fabs(ln2-s)>=e1)

{s+=(1.0/i)*sign;

sign=-sign;

i++;

}

printf("n=%ld\n",i-1);

getch();

}_

实验1拉格朗日插值法

编写拉格朗日插值法通用子程序,并用以下函数表来上机求

x

0.0

0.1

0.195

0.3

0.401

0.5

f(x)

0.39894

0.39695

0.39142

0.38138

0.36812

0.35206

#include

main()

{

staticfloatLx[10],Ly[10];

intn,i,j;

floatx,y,p;

printf("entern=");

scanf("%d",&n);

printf("enterxi\n");

for(i=0;i

scanf("%f",&Lx[i]);

printf("enteryi\n");

for(i=0;i

scanf("%f",&Ly[i]);

printf("enterx=");

scanf("%f",&x);

/*

n=6;

Lx[0]=0;

Lx[1]=0.1;

Lx[2]=0.195;

Lx[3]=0.3;

Lx[4]=0.401;

Lx[5]=0.5;

Ly[0]=0.39894;

Ly[1]=0.39695;

Ly[2]=0.39142;

Ly[3]=0.38138;

Ly[4]=0.36812;

Ly[5]=0.35206;

x=0.15;

*/

for(i=0;i

{p=1;

for(j=0;j

{if(i!

=j)

p=p*(x-Lx[j])/(Lx[i]-Lx[j]);

}

y+=p*Ly[i];

}

printf("y=%f\n",y);

getch();

}

_实验2最小二乘法

测得铜导线在温度

(℃)时的电阻

如下表,求电阻R与温度T的近似函数关系。

i

0

1

2

3

4

5

6

(℃)

19.1

25.0

30.1

36.0

40.0

45.1

50.0

76.30

77.80

79.25

80.80

82.35

83.90

85.10

#include

#include

floatgs(floata[20][20],floatb[20],intn)

{inti,j,k,l;

floats;

k=1;

while(k!

=n+1)

{

if(a[k][k]!

=0)

{

for(i=k+1;i<=n+1;i++)

{

a[i][k]=a[i][k]/a[k][k];

b[i]=b[i]-a[i][k]*b[k];

for(j=k+1;j<=n+1;j++)

a[i][j]=a[i][j]-a[i][k]*a[k][j];

}

}

k=k+1;

}

for(k=n+1;k>=1;k--)

{

s=0;

for(l=k+1;l<=n+1;l++)

s=s+a[k][l]*b[l];

b[k]=(b[k]-s)/a[k][k];

}

return0;

}

main()

{

staticfloatb[20],Lx[20],Ly[20],c[20][20],ct[20][20],a[20][20];

intm,n,i,j,k=0,l;

floats,rtn;

printf("enterm=");

scanf("%d",&m);

printf("entern=");

scanf("%d",&n);

printf("enterxi\n");

for(i=1;i<=m;i++)

scanf("%f",&Lx[i]);

printf("enteryi\n");

for(i=1;i<=m;i++)

scanf("%f",&Ly[i]);

for(i=1;i<=m;i++)

{c[i][1]=1;

for(j=2;j<=n+1;j++)

c[i][j]=Lx[i]*c[i][j-1];

}

for(i=1;i<=m;i++)

for(j=1;j<=n+1;j++)

ct[j][i]=c[i][j];

for(i=1;i<=n+1;i++)

for(j=1;j<=n+1;j++)

a[i][j]=0;

for(i=1;i<=n+1;i++)

b[i]=0;

for(i=1;i<=n+1;i++)

for(k=1;k<=n+1;k++)

for(j=1;j<=m;j++)

a[i][k]=a[i][k]+ct[i][j]*c[j][k];

for(i=1;i<=n+1;i++)

for(j=1;j<=m;j++)

b[i]+=ct[i][j]*Ly[j];

gs(a,b,n);

printf("\nTheresultis:

");

for(i=1;i<=n+1;i++)

{j=i-1;

printf("\na[%d]=%f",j,b[i]);

}

}

_实验3变步长复合梯形公式

的近似值。

(1)编写定步长复合梯形程序求解上式;

(2)编写变步长复合梯形程序求解上式,使误差不超过10-6。

#include"math.h"

doublef(doublex)

{doublef1;

f1=4/(1+x*x);

return(f1);

}

doubletrapezia2(intk,doubleh,doublea,doubletn)

{doublet2n,s=0;

inti;

t2n=tn/2;

for(i=1;i<=pow(2,k);i++)

{

s+=f(a+(2*i-1)*h);

}

t2n=t2n+s*h;

returnt2n;

}

voidmain()

{doublea,b,h,Tn,T2n,e;

intn,k;

printf("pleaseinputa,b,n,e\n");

scanf("%lf%lf%d%lf",&a,&b,&n,&e);

h=b-a;

Tn=(b-a)*(f(a)+f(b))/2;

for(k=0;k

{h=h/2;

T2n=trapezia2(k,h,a,Tn);

if(fabs(T2n-Tn)

break;

printf("%lf\n",Tn);

Tn=T2n;

}

printf("%lf\n",Tn);

}

_实验3定步长复合梯形公式

doublef(doublex)

{return(4/(1+x*x));

}

floattrapezia(intn,floath,floata)

{floatfk=0;

inti;

for(i=1;i

fk+=f(a+i*h);

return(fk*h);

}

voidmain()

{floata,b,h,Tn;

intn;

printf("pleaseinputa,b,n");

scanf("%f%f%d",&a,&b,&n);

h=(b-a)/n;

Tn=(f(a)+f(b))*h/2;

Tn+=trapezia(n,h,a);

printf("%f",Tn);

}

_

实验5非线性方程求解

编写Newton迭代法通用子程序。

实现方程f(x)=x6-x-1=0的满足精度要求的解。

要求求解过程中用一个变量I控制三种状态,其中:

i=0表示求解满足给定精度的近似解;

i=1表示f`(x0)=0,计算中断;

i=2表示迭代n次后精度要求仍不满足。

#defineN1000

#include

main()

{

doublex,x0,p=1e-6;

doublef(doublex),g(doublex);

inti,j,k,n=0;

printf("\nenterx0:

");

scanf("%lf",&x0);

do{

x=x0-f(x0)/g(x0);

printf("\n%d%12.8lf%8.3le",n,x0,f(x0));

if(n

{

n=n+1;

x0=x;

}

else

{

printf("\nFAILURE!

");

break;

}

}while(fabs(f(x0))>p);

printf("\ntheresultis:

%lf",x0);

}

/***********MAIN**/

doublef(doublex)

{

return(pow(x,6)-x-1);

}

/*******F(X)******/

doubleg(doublex)

{

return(6*pow(x,5)-1);

}

/*******G(X)*****/_

实验6高斯消元法

编写选列主元的高斯消去法。

求出下列线性方程组Ax=b的解x。

#include

#defineN10

main()

{

inti,ik,k=0,j,l,n,max;

staticfloata[N][N],b[N],t,s,min=1e-6;

printf("\nentern:

");

scanf("%d",&n);

printf("\nenterA=(aij)(linefirst):

");

for(i=0;i

for(j=0;j

scanf("%f",&a[i][j]);

printf("\nenterb:

");

for(i=0;i

scanf("%f",&b[i]);

for(k=0;k

{max=0;

for(i=k;i

{if(max-fabs(a[i][k])<0)

{max=fabs(a[i][k]);

ik=i;

}

}

if(max

break;

if(ik!

=k)

{

for(j=k;j

{

t=a[ik][j];

a[ik][j]=a[k][j];

a[k][j]=t;

}

t=b[ik];

b[ik]=b[k];

b[k]=t;

}

for(i=k+1;i

{a[i][k]=a[i][k]/a[k][k];

for(j=k+1;j

a[i][j]=a[i][j]-a[i][k]*a[k][j];

b[i]=b[i]-a[i][k]*b[k];

a[i][k]=0;

}

}

b[n-1]=b[n-1]/a[n-1][n-1];

for(i=n-2;i>=0;i--)

{for(j=i+1;j

b[i]=b[i]-a[i][j]*b[j];

b[i]=b[i]/a[i][i];

}

printf("\nTheresultis:

");

for(i=0;i

{

j=n-i;

printf("\nx[%d]=%f",j,b[i]);

}

}

实验7改进欧拉法

#include"math.h"

#include"stdio.h"

在我们学校大约有4000多名学生,其中女生约占90%以上。

按每十人一件饰品计算,大概需要360多件。

这对于开设饰品市场是很有利的。

女生成为消费人群的主体。

floatf(floatx,floaty)

{

return(2.0/x*y+x*x*exp(x));

}

2.www。

cer。

net/artide/2003082213089728。

shtml。

floatg(floatx)

体现市民生活质量状况的指标---恩格尔系数,上海也从1995年的53.4%下降到了2003年的37.2%,虽然与恩格尔系数多在20%以下的发达国家相比仍有差距,但按照联合国粮农组织的划分,表明上海消费已开始进入富裕状态(联合国粮农组织曾依据恩格尔系数,将恩格尔系数在40%-50%定为小康水平的消费,20%-40%定为富裕状态的消费)。

{

10、如果学校开设一家DIY手工艺制品店,你希望_____return(x*x*(exp(x)-exp

(1)));

服饰□学习用品□食品□休闲娱乐□小饰品□}

动漫书籍□化妆品□其他□voidmain()

合计50100%{floatx,y,h,a,b,a0,yp,yc;

(一)上海的经济环境对饰品消费的影响printf("pleaseinputa,b,handa0\n");

scanf("%f%f%f%f",&a,&b,&h,&a0);

x=a;

(二)上海的人口环境对饰品消费的影响y=a0;

while(x<=b+h)

{

printf("x=%f,y=%f,y(x)=%f,y(x)-y=%f\n",x,y,g(x),fabs(y-g(x)));

标题:

上海发出通知为大学生就业—鼓励自主创业,灵活就业2004年3月17日yp=y+h*f(x,y);

x+=h;

yc=y+h*f(x,yp);

y=0.5*(yp+yc);

}

}_

_

实验7龙格库塔法

#include

#definef(x,y)(x-y)

main()

{

floata,b,h,x,y,k1,k2,k3,k4,y0,x0;

intn=0,i,j,N;

clrscr();

printf("\nenterN:

");

scanf("%d",&N);

printf("\nentera,b:

");

scanf("%f%f",&a,&b);

printf("\nenterprimarydatay(0):

");

scanf("%f",&y0);

h=(b-a)/N;

x0=a;

printf("\n%10.5f%10.5f",x0,y0);

do{

x=x0+h;

k1=f(x0,y0);

k2=f((x0+h/2),(y0+h/2*k1));

k3=f((x0+h/2),(y0+h/2*k2));

k4=f((x0+h),(y0+h*k3));

y=y0+h/6*(k1+2*(k2+k3)+k4);

printf("\n%10.5f%10.5f",x,y);

n=n+1;

x0=x;

y0=y;

}while(n

}_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1