首页 > 解决方案 > 非线性微分方程,如何用matlab数值求解?

问题描述

https://i.stack.imgur.com/6x1ju.png

我必须解决 f"'+(4a^2+Re*f)f'=0 其中 a 和 Re 是恒定但可变的。有三个 BC, f(1)=0,f(-1)=0 , ∫F(∅)d∅=1(integral -1 to 1) 现在我想改变∫F(∅)d∅=G(theta)(integral 0 to theta),然后边界条件可以变为G' (1)=0,G'(-1)=0, G(0)=0,G(1)=1/2 (因为 F(∅) 在给定条件下是对称的)我的编码技巧很差......我应该如何修复我的代码?

    `function [theta_0 y2]=flow_BVP

theta_0=linspace(0,1,1000); 
sol2=bvp4c(@flow_ode,@flow_bc,@flow_init);
x2=sol2.x;
y2=sol2.y(1,:);


hold on
%plot(x1,y1) %gammal
plot(x2,y2) %ny
%hold off


function v=flow_init(x)
v=[sin(x); 1; 1;1-cos(x)];

function dydx=flow_ode(x,y)
a=0.0001;
Re=0.00001
dydx = [y(2); y(3); -(4.*a^2+Re.*y(2)).*y(3);y(1)];

function res=flow_bc(ya,yb)
res=[ya(1);ya(4);yb(1);yb(4)-1];` 

标签: matlabdifferential-equationsboundaryfluid-dynamics

解决方案


推荐阅读