Показать сообщение отдельно

  #4  
Старый 01.02.2009, 18:00
eLWAux
Постоянный
Регистрация: 15.06.2008
Сообщений: 941
С нами: 9423746

Репутация: 2399


По умолчанию

модифицирований метод Ейлера

C:
Код:
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define n 2
#define pi 3.14159265
void main(void)
{
int i;
double x,a,b,h,y[n],yn[n],yz[n];
double dy(int i,double x,double y[n]);
double modyficEYLER(int i,double h,double x,double y[n],double yz[n]);
a=pi/4;
b=pi/3;
h=0.026;
x=a;
y[0]=0.0;
y[1]=2.0;
printf("x= %lf\ty[1]= %lf\ty[2]= %lf\n",x,y[0],y[1]);
do
{
 printf("x= %lf\t",x+h);
 for(i=0;i<=n-1;i++)
 {
  yz[i]=y[i];
  yn[i]=modyficEYLER(i,h,x,y,yz);
  printf("y[%d]= %lf\t",i+1,yn[i]);
 }
 printf("\n");
 for(i=0;i<=n-1;i++)
  y[i]=yn[i];
 x+=h;
}
while(x<=(b-h));
printf("\n");

getch();
}

double dy(int i,double x,double y[n])
{
 if(i==0)
  return y[1];
 else
  return -4*y[0]+8*(1/tan(2*x));
}

double modyficEYLER(int i,double h,double x,double y[n],double yz[n])
{
 yz[i]=yz[i]+h*dy(i,x,yz);
 return y[i]+0.5*h*( dy(i,x,y)+dy(i,x+h,yz) );
}
 
Ответить с цитированием