文档介绍:补充2数值计算
1
例1 编写下面连分式的计算程序:
数值计算
2
算法分析:
我们知道程序运行时用赋值语句作每一步计算都要求表达式右端中每个变量都有确定的值,且能写出其表达式,从式可以看出只能从最下层逐一计算。
令
则
数值计算
3
数值计算
程序如下:
#define N 10
float f(float x)
{
float y;
y=1/(1+x*x);
return y;
}
main( )
{
int i;
float h=, s, x0, x1,x2;
float x[N+1];
for(i=0;i<=N;i++)
x[i]=i*h;
printf("please input x:");
scanf("%f",&x0);
s=f(x[N-1])+(x0-x[N-1])/f(x[N]);
for(i=N-2;i>=0;i--)
s=f(x[i])+(x0-x[i])/s;
printf(" the result is: %f\n",s);
}
程序运行结果为:
please input x: ↙
the result is:
4
数值计算
例2 用复合梯形积分公式计算的值。
算法及分析:
梯形积分公式为:
5
数值计算
#define PI
float f(float x)
{ float y;
y=1/(1+x*x);
return y;
}
main( )
{ int i, j, n;
float x,h,a,b,s;
b=PI;
a=-PI;
printf("please input n:");
scanf(" %d ",&n);
h=(b-a)/n;
s=(f(a)+f(b))/2;
for( i=1;i<n;i++)
{ x=a+i*h;
s=s+f(x);
}
s=s*h;
printf("the value is :%f",s);
}
程序运行结果为:
please input n: 100↙
the value is :
6
数值计算
例3 若矩阵A是m行n列的实矩阵,矩阵B是n行p列的实矩阵,求C=A*B。
算法及分析:
矩阵乘积的计算公式为:
7
数值计算
#define M 4
#define N 3
#define P 2
main ( )
{ int i,j,k;
int a[M+1][N+1],b[N+1][P+1],c[M+1][P+1];
printf("please input matrix A:\n");
for(i=1;i<=M;i++)
for(j=1;j<=N;j++)
scanf ("%d",&a[i][j]);
printf("please input matrix B:\n");
for(i=1;i<=N;i++)
for(j=1;j<=P;j++)
scanf ("%d",&b[i][j]);
for(i=1;i<=M;i++)
for(j=1;j<=P;j++)
{ c[i][j]=0;
for(k=1;k<=N;k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
printf("the value of matrix C:\n");
for(i=1;i<=M;i++)
{
for(j=1;j<=P;j++)
printf("%d ",c[i][j]);
printf(" \n");
}
}
8
数值计算
运行结果为:
please input matrix A:
3 4 3 ↙
2 6 1↙
1 2 3↙
4 5 6↙
please input matrix B:
3 2↙
1 2↙
4 1↙
the value of matrix C:
25 17
16 17
17 9
41 24
9
数值计算
例4 用对分法求 f(x)=x5+x4+x3-1=0的根,x∈[0,1]。
算法及分析:
令
使用对分法求解f(x)=0的前提是
f(a)f(b)<0,x∈[a,b]内只有一个根。则
对分法的计算公式为:
10