龙格-库塔法

#include <stdio.h>
#include <stdlib.h>
#include<math.h>
float f(float x,float y)
{
    return 2*x*y;                  ///一阶方程
}
float RK(float x,float y,float h)  ///龙格-库塔函数
{
    float k1,k2,k3,k4;
    k1=f(x,y);
    k2=f(x+h/2,y+h*k1/2);          ///都是公式
    k3=f(x+h/2,y+h*k2/2);
    k4=f(x+h,y+h*k3);
    return (y+h*(k1+2*k2+2*k3+k4)/6);
}
main()
{
    int i=0;
    float x,y,h,b;
    printf("请输入初始条件x0:\n");    ///输入初始条件值x0
    scanf("%f",&x);
    printf("请输入初始条件y0:\n");    ///输入初始条件值y0
    scanf("%f",&y);
    printf("请输入步长h:\n");         ///输入步长h
    scanf("%f",&h);
    printf("请输入区间右端点b:\n");   ///输入区间右端点b
    scanf("%f",&b);
    printf("x0=%10f    y0=%10f\n",x,y);///输出初始值
    do                                 ///满足x在区间内做循环
    {
        y=RK(x,y,h);                   ///调用龙格库塔函数
        x=x+h;                         ///x逐步增大
        i++;                           ///次数吧
        printf("x%d=%10f     y%d=%10f\n",i,x,i,y);
    }while(x<b);
    return y;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值