如何用Matlab解含参数的微分方程?
答案:2 悬赏:50
解决时间 2021-03-17 11:22
- 提问者网友:梧桐不渝
- 2021-03-16 23:27
如何用Matlab解含参数的微分方程?
最佳答案
- 二级知识专家网友:花一样艳美的陌生人
- 2021-03-17 00:39
可以借助于嵌套函数或匿名函数实现附加参数的传递,例如 function main y0 = [14; 01; 01]; A = linspace(eps, 10, 20); Y = A * NaN; for ii = length(A) a = A(ii); y = ode45(@eq2, [0 a], y0); Y(ii) = y(end, 1); end plot(A, Y) functi
全部回答
- 1楼网友:浪者不回头
- 2021-03-17 00:57
可以借助于嵌套函数或匿名函数实现附加参数的传递,例如
function main
y0 = [1.4; 0.1; 0.1];
a = linspace(eps, 10, 20);
y = a * nan;
for ii = length(a)
a = a(ii);
y = ode45(@eq2, [0 a], y0);
y(ii) = y(end, 1);
end
plot(a, y)
function dy=eq2(t,y)
dy = y*0;
dy(1)=-(a*y(2))/(4*exp(a*t/4));
dy(2)=-(a/4)*(exp(a*t/4))*(y(1)+0.5)+(a/4)*y(2)-y(3)*((exp(a*t/4))^2);
dy(3)=4*y(2);
end
end
但微分方程组似乎是刚性的,不过换用ode15s、ode23s等适合刚性系统的算法效果也不理想(可以调用ode*函数时不返回参数,观察求解的过程)。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯