用matlab方法求解常微分方程
欧拉法
对于一阶常微分方程
对应的改进的欧拉公式为
对应的matlab代码为
function [x,y]=euler(fun,x0,xfinal,y0,n)
%检查是否有足够的输入参数值传入函数。
%如果输入参数的数量小于 5,说明用户没有提供 n 的值,
%那么将默认将 n 设置为 50。
if nargin<5
n=50;
end
h=(xfinal-x0)/n;%步长
x(1)=x0;y(1)=y0;%初始条件
%使用函数句柄来表示和传递函数
%result = feval(function_handle, arg1, arg2, ...)
%function_handle 是一个函数句柄,arg1、arg2 等是要传递给该函数的参数
for i=1:n
x(i+1)=x(i)+h;
y1=y(i)+h*feval(fun,x(i),y(i));
y2=y(i)+h*feval(fun,x(i+1),y(i));
y(i+1)=(y1+y2)/2;
end
例子
对应代码
function f=fun(x,y)
f=-2*y+2*x^2+2*x;
end
在matlab命令行窗口输入
[x,y]=euler('fun',0.5,1,10)
得到数值解
函数功能介绍及例子
dsolve函数
用于求解常微分方程组的精确解。若没有初始条件或边界条件,则求出通解;若有,则求出特解。
函数格式
Y=dsolve('eq1,eq2,...','cond1,cond2,...','name');
%eq1:微分方