📄 rkt.cpp
字号:
#include"stdio.h"
#include"stdlib.h"
#include"math.h"
double fun(double x,double y);
double fun1(double x);
void RKt(double a,double b,int n,double y[]);
double y[11];
void main()
{
double t=0,m;
y[0]=0;
RKt(0,0.5,10,y);
for(int j=0;j<11;j++)
printf("y%d = %15.12e\n",j,y[j]);
printf("\n");
for(int k=0;k<11;k++)
{
m=fun1(t);
t=t+0.05;
printf("y%d=%15.12e\n",k,m);
}
}
void RKt(double a,double b,int n,double y[])
{
double h,h1,K1,K2,K3,K4,*p;
h=(b-a)/n;
h1=h/2;
p=(double*)malloc((n+1)*sizeof(double));
p[0]=0;
for(int i=1;i<=n;i++)
{
p[i]=p[i-1]+0.05;
}
for(i=1;i<=n;i++)
{ K1=fun(p[i-1],y[i-1]);
K2=fun(p[i-1]+h1,y[i-1]+K1*h1);
K3=fun(p[i-1]+h1,y[i-1]+K2*h1);
K4=fun(p[i-1]+h,y[i-1]+K3*h);
y[i]=y[i-1]+(K1+2*K2+2*K3+K4)*h/6;
printf("K1=%f K2=%f K3=%f K4=%f y[%d]=%15.12f\n",K1,K2,K3,K4,i,y[i]);
}
free(p);
}
double fun(double x,double y)
{
double z=(-y+x*x+4*x-1)/2;
return z;
}
double fun1(double x)
{
double y=exp(-x/2)+x*x-1;
return y;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -