matlab如何用龙格库塔法求一阶隐函数的的问题.其中t从0开始,步长是0.02s,一直到某一个值结束.其中c=sqrt(gx(H+h)).需要用龙格库塔法求出ξ.其中η是ξ的函数.

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 12:22:17

matlab如何用龙格库塔法求一阶隐函数的的问题.其中t从0开始,步长是0.02s,一直到某一个值结束.其中c=sqrt(gx(H+h)).需要用龙格库塔法求出ξ.其中η是ξ的函数.
matlab如何用龙格库塔法求一阶隐函数的的问题.其中t从0开始,步长是0.02s,一直到某一个值结束.
其中c=sqrt(gx(H+h)).需要用龙格库塔法求出ξ.其中η是ξ的函数.

matlab如何用龙格库塔法求一阶隐函数的的问题.其中t从0开始,步长是0.02s,一直到某一个值结束.其中c=sqrt(gx(H+h)).需要用龙格库塔法求出ξ.其中η是ξ的函数.
先在一个空白的M文件里创建一个M函数,文件名要与函数名相同,例如:
文件名:differential.m
函数内容:
function [dxdt] = differential(t,x)
% x:就是ξ
% dxdt:与ξ对应的对时间导数项
g=9.8;
H=0.05;
h=1;
k=sqrt(3*H/(4*h^3));
c = sqrt(g*(H+h)); % 我不知道你问题中sqrt(gx(H+h))的x是什么,我当做是乘号了
eit = (H./cos(h^2)).*(k.*(c.*t-x)); % 我认为题中给的是H*sec(h^2)*(k.*(c.*t-x)),
% 你可以根据自己的意见改过来
dxdt = sqrt(g.*(eit./h).*(h+eit./2).*(eit./(h+eit)));
end
M函数编写完成后,下面就是解算了.由于M文件编程提供的ode45是变步长计算方法,
没有你写的那种格式[t,x]=ode45(@wave_generation,0:0.02:2,0)
正确格式是[t,x]=ode45(@wave_generation,[0 2],0)但步长是变的
下面我采用自己编写固定步长4阶龙格库塔法
在相同文件目录下,再建一个空的M文件,文件名任意,写入如下内容:
t0 = 0; % 起始时刻,自己根据需要修改
tf = 2; % 终止时刻,自己根据需要修改
x0 = 0; % ξ的初始值,自己根据需要修改
K = zeros(1,4);
dt = 0.02; % 积分步长
i1 = 1;
t = t0;
x = x0;
while t(i1)

(1)法1:使用MATLAB的ODE45求解;
(2)法2: 看龚纯的《MATLAB常用算法程序集》第440页。z= wave_generation(t,x) g=9.8; H=0.05; h=1; k=sqrt(3*H/4/h/h/h); c=sqrt(g*(H+h)); y=H*sec(h^2*(k*(c*t-x))); ...

全部展开

(1)法1:使用MATLAB的ODE45求解;
(2)法2: 看龚纯的《MATLAB常用算法程序集》第440页。

收起