数值分析实验答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*/
for( i=0;i<n;i++)
{ p=1;
for(j=0;j<n;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的近似函数关系。
}
}
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];
}
return 0;
}
main()
{
static float b[20],Lx[20],Ly[20],c[20][20],ct[20][20],a[20][20];
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
}
实验3变步长复合梯形公式
求 的近似值。
(1)编写定步长复合梯形程序求解上式;
(2)编写变步长复合梯形程序求解上式,使误差不超过10-6。
#include"math.h"
double f(double x)
{ double f1;
f1=4/(1+x*x);
return(f1) ;
}
double trapezia2(int k,double h,double a,double tn)
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;
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 <stdio.h>
#include <math.h>
float gs(float a[20][20],float b[20],int n )
{ double t2n,s=0;
int i;
t2n=tn/2;
for(i=1;i<=pow(2,k);i++)
{
s+=f(a+(2*i-1)*h);
}
t2n=t2n+s*h;
return t2n;
}
void main()
{double a,b,h,Tn,T2n,e;
int n,k;
printf("please input a,b,n,e\n");
scanf("%lf%lf%d%lf",&a,&b,&n,&e);
h=b-a;
Tn=(b-a)*(f(a)+f(b))/2;
实验0截断误差与舍入误差
#include "stdio.h"
#include "math.h"
const double ln2=0.693147190546;
const double e1=5e-6;
void main()
{
int sign;
double s;
long i;
s=0.0;
sign=1;
{int i,j,k,l;
float s;
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];
printf("enter xi\n");
for(i=0;i<n;i++)
scanf("%f",&Lx[i]);
printf("enter yi\n");
for(i=0;i<n;i++)
scanf("%f",&Ly[i]);
printf("enter x=");
scanf("%f",&x);
/*
n=6;
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("\nThe result is:");
for(i=1;i<=n+1;i++)
{ j=i-1;
printf("\na[%d]=%f",j,b[i]);
}
int m,n,i,j,k=0,l;
float s,rtn;
printf("enter m=");
scanf("%d",&m);
printf("enter n=");
scanf("%d",&n);
printf("enter xi\n");
for(i=1;i<=m;i++)
scanf("%f",&Lx[i]);
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];
0.5
f(x)
0.39894
0.39695
0.39142
0.38138
0.36812
0.35206
#include <stdio.h>
main()
{
static float Lx[10],Ly[10];
int n,i,j;
float x,y,p;
printf("enter n=");
scanf("%d",&n);
printf("enter yi\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++)
相关文档
最新文档