微分方程.c

来自「计算方法的几个经典算法」· C语言 代码 · 共 42 行

C
42
字号

#include <math.h>
#include<stdio.h>
float f(float x,float y)
{
	float z;
	z=y-2*x/y;
	return z;
}
 

main()
{
	int i,n;
	float t0=0,td,y0,t[100],y[100],h,k1,k2,k3,k4;
	printf("请输入时间区间td:");
	scanf("%f",&td);
	printf("请输入y0:");
	scanf("%f",&y0);
	printf("请输入n:");
	scanf("%d",&n);
	y[0]=y0; 
	t[0]=t0;
	h=td/n;
	for(i=1;i<=n;i++)
	{
		t[i]=t[i-1]+h;
		k1=h*f(t[i-1],y[i-1]);
		k2=h*f(t[i-1]+h/2,y[i-1]+k1/2);
		k3=h*f(t[i-1]+h/2,y[i-1]+k2/2);
		k4=h*f(t[i-1]+h,y[i-1]+k3);
		y[i]=y[i-1]+(k1+2*k2+2*k3+k4)/6;
	}
    printf("该常微分方程在指定时刻得数值解分别为:\n");
	for(i=1;i<=n;i++)
	{
		if((i-1)%5==0) printf("\n");
		printf("y[%d]=%4f",i,y[i]);
	}
printf("\n");
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?