用matlab编写向前欧拉公式解微分方程的程序时不能正确调用函数句柄,请高手帮忙看一看。不胜感激!!

2024-11-28 10:31:58
推荐回答(1个)
回答1:

修改为余仔盯如下代码,请拷贝运行:
function ansbaidu()
clc
clear all
y0=1;
a=0;
b=1;
h=0.1;
[x,y]=euler2('odefun',y0,a,b,h); % 第一个参数是你要求解的函数名
function [x,y]=euler2(FUN,y0,a,b,h) %注意函数句戚轮柄变量的定义形式
% 常微分方程向前竖和欧拉算法
% 参数说明
% odefun:微分方程描述函数,也就是f(x,y)
% y0:初值
% a,b:积分区间
% h:步长
x=(a:h:b)';
k=length(x);
y=zeros(1,k)';
y(1)=y0;
for n=1:(k-1)
y(n+1)=y(n)+h*feval(FUN,x(n),y(n)); %需要借助feval函数运行你的odefun
% FUN(x(i),y(i))
end
y=y'
function z=odefun(x,y)
z=y+2*x;

运行结果:
y =

1.0000 1.1000 1.2300 1.3930 1.5923 1.8315 2.1147 2.4462 2.8308 3.2738 3.7812