改进的欧拉法计算常微分方程初值问题 C Matlab

Question:
在这里插入图片描述

Matlab语言:

fun.m

function f = fun(x , y)
f = y - 2 * x / y

Euler1.m

function y = Euler1(x0, xn, y0, n)
x = x0;
y = y0;
%设置步长为h = 0.1
h = 0.1;
for i = 1: 1/h
    yp = y + h * fun(x,y);
    x = x0 + i * h;
    y = yp;
    fprintf('x%d = %f     y%d = %f\n', i, x, i, y)
end

main.m

clc
clear
Euler1(0, 1, 1, 10)

C语言

#include <stdio.h>
#include <math.h>

double f(double x, double y){  //微分方程右端函数
    return (y - 2 * x / y);
}

void Euler(double x0, double xn, double y0, int n){  //改进的欧拉公式
    double yp, yc, x = x0, y = y0, h = (xn - x0) / n;

    for(int i = 1; i <= n; i++){
        yp = y + h * f(x, y);
        x = x0 + i * h;
        y = yp;
        printf("x%d = %f     y%d = %f\n", i, x, i, y);
    }
}

int main(){
    double x0 = 0, xn = 1, y0 = 1, n = 10;

    printf("x0 = %f     y0 = %f\n", x0, y0);
    Euler(x0, xn, y0, n);

    return 0;
}

C语言版本参考自博客:https://blog.csdn.net/sunshineacm/article/details/79069594?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-2-79069594.nonecase&utm_term=%E6%AC%A7%E6%8B%89%E6%96%B9%E6%B3%95%E6%B1%82%E5%88%9D%E5%80%BC%E9%97%AE%E9%A2%98%E4%BE%8B%E9%A2%98&spm=1000.2123.3001.4430

  • 9
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值