用MATLAB的bvp4c遇到“奇異性雅可比行列式”無(wú)法求解!報(bào)錯(cuò):
錯(cuò)誤使用 bvp4c (line 251)
無(wú)法求解排列方程式 - 遇到了奇異性雅可比行列式。
出錯(cuò) mybvp1>exmpbh_solve (line 28)
sol=bvp4c(@ode,@bc,s0);
出錯(cuò) mybvp1 (line 13)
S=exmpbh_solve(s0,ph0,phi);
代碼如下:
function S=mybvp1
x0=linspace(0,1,10); %自變量初始網(wǎng)格點(diǎn)數(shù)組 根據(jù)實(shí)際修改自變量上下線0~10,及網(wǎng)格點(diǎn)個(gè)數(shù)5
v0=[0.7,0,0.68,0.0,0.0]; %各網(wǎng)格點(diǎn)處初值猜測(cè) 若自變量n等分,微分方程組有m個(gè),則v0為m*(n+1)的二維數(shù)組
%第一行n的初值:
%第二行y的初值:
%第三行y\'的初值:
%第四行y"的初值:
%第五行y"\'的初值:
phi=0.243; %已知參數(shù)
d0=0.0; %參數(shù)1初值猜測(cè)
ph0=d0;
s0=bvpinit(x0,v0,ph0); %產(chǎn)生初始猜測(cè)構(gòu)架
S=exmpbh_solve(s0,ph0,phi);
end
function sol=exmpbh_solve(s0,ph,q) %q用來(lái)傳遞已知參量 ph為d,q為phi
phi =q;
%————已知量————
D=0.28*10^(-3);L=8*10^(-3);alpha=0.5; %表一
E=1.15*10^11;mu=0.7;I=7.7*10^(-9); %表二
kx=1.65*10^8;p0=1.05*10^4;p1=375;f=1.5*10^3; %表三
%————代入式————
beta=L/sqrt(2)*(kx/E/I)^(1/4);
pi1=(p0+(p1-p0)*exp(-alpha*f*L*ph))/kx/L;
pi2=p1/kx/L;
sol=bvp4c(@ode,@bc,s0);
function dydx=ode(x,y,ph) %以下微分方程公式中所有phi用q替代;d用ph替代;y用y(2)替代;y的二階導(dǎo)數(shù)用y(4)替代
dydx=zeros(5,1); %確保為列向量
%————條件1————
if x>=0 && x<=alpha*(1-ph)
dydx(1)=4*beta^4*(pi1+mu*(D/L)*abs(y(2)));% n\'
dydx(2)=y(3);%y\'
dydx(3)=y(4);%y\'\'
dydx(4)=y(5);%y\'\'\'
dydx(5)=y(1)*y(4)-4*beta^4*y(2);%y\'\'\'\'
%————條件2————
elseif x>alpha*(1-ph) && x<alpha
dydx(1)=0;
dydx(2)=y(3);
dydx(3)=y(4);
dydx(4)=y(5);
dydx(5)=y(1)*y(4);
%————條件3————
elseif x>=alpha && x<1
dydx(1)=4*beta^4*(pi2+mu*(D/L)*abs(y(2)-alpha*phi*ph/sqrt(1-phi*phi)));
dydx(2)=y(3);
dydx(3)=y(4);
dydx(4)=y(5);
dydx(5)=y(1)*y(4)-4*beta^4*(y(2)-alpha*phi*ph/sqrt(1-phi*phi)*L/D);
end
end
function res=bc(ya,yb,ph) %ya表示自變量取初值時(shí)狀態(tài)量的值,yb表示自變量取末值時(shí)的狀態(tài)量的值
res=zeros(6,1); %確保為列向量
res(1)=ya(1); %n\'(0)=0
res(2)=ya(2); %y(0)=0
res(3)=yb(2)-alpha*phi*ph/sqrt(1-phi*phi)*(L/D);%y(1)=...
res(4)=yb(3); %y\'(1)=0
res(5)=ya(4); %y"(0)=0
end
end
![bvp4c解邊界值微分方程]()
mx326D4.png |