#include"stdio.h"
#include"math.h"
#include"conio.h"
#define N 11
double f(double x,double y)
{
return y-2*x/y;
}
void Euler()
{
double
x[N],y[N],z[N],e[N];
int n;
clrscr();
printf("\n");
for(n=0;n<N;n++)
x[n]=n*0.1;
for(n=0;n<N;n++)
z[n]=sqrt(1+2*x[n]);
y[0]=1;
for(n=0;n<N-1;n++)
y[n+1]=y[n]+(x[n+1]-x[n])*f(x[n],y[n]);
for(n=0;n<N;n++)
{e[n]=y[n]-z[n];
printf("y[n]=%5.4f
z[n]=%5.4f
e[n]=%5.4f\n",y[n],z[n],e[n]);
}
getch();
return;
}
void B_Euler()
{
double t=0.0,
x[N],y[N],z[N],e[N];
int n;
clrscr();
printf("\n");
for(n=0;n<N;n++)
x[n]=n*0.1;
for(n=0;n<N;n++)
z[n]=sqrt(1+2*x[n]);
y[0]=1;
for(n=0;n<N-1;n++)
{
t=f(x[n+1],y[n]+(x[n+1]-x[n])*f(x[n],y[n]));
y[n+1]=y[n]+0.5*(x[n+1]-x[n])*(t+f(x[n],y[n]));
}
for(n=0;n<N;n++)
{e[n]=y[n]-z[n];
printf("y[n]=%5.4f
z[n]=%5.4f
e[n]=%5.4f\n",y[n],z[n],e[n]);
}
getch();
return;
}
void main()
{
int c;
while (1)
{ clrscr();
puts(" 1. Euler:\n");
puts(" 2. B_Euler\n ");
puts(" 0. exit.\n");
puts(" choice: ");
c=getchar();
switch(c)
{ case '1':
Euler(); break;
case '2': B_Euler();break;
case '0': clrscr();
exit(0);
default:
break;
}
}
}
加载中,请稍候......