the code is not running showing collacation error...

2 ビュー (過去 30 日間)
uma
uma 2024 年 9 月 9 日
回答済み: Sandeep Mishra 2024 年 9 月 16 日
conediskexample()
Error using bvparguments (line 99)
Error in calling BVP4C(ODEFUN,BCFUN,SOLINIT):
The derivative function ODEFUN should return a column vector of length 9.

Error in bvp4c (line 119)
bvparguments(solver_name,ode,bc,solinit,options,varargin);

Error in solution>conediskexample (line 30)
sol = bvp4c(@bvp2D, @bc2D, solinit);
function conediskexample
% Parameter values
A1 = 0.1;
A2 = 0.1;
A3 = 0.1;
A4 = 0.1;
A5 = 0.1;
A6 = 0.1;
M = 0.2;
Grt = 5;
Pr = 6.9;
R = 0.2;
Ec = 0.1;
Q = 0.1;
Rew = 12;
Red = -12;
eta = 0.06992681; % eta value used in ODEs
n = 1;
g1 = 1.0;
g2 = 0.5;
g3 = 0.9;
g4 = 0.9;
g5 = 0.9;
infinite = 20;
% Defining parameters
solinit = bvpinit(linspace(0, infinite, 500), [0 g1 g2 Rew g3 0 g4 1 g5]);
sol = bvp4c(@bvp2D, @bc2D, solinit);
if isempty(sol)
error('The solver failed to find a solution.');
end
x = sol.x;
y = sol.y;
% Plotting of the velocity
figure(1)
plot(x, y(2,:), 'linewidth', 1)
hold on
xlabel('\eta', 'fontweight', 'bold', 'fontsize', 16)
ylabel('f^{\prime}(\eta)', 'fontweight', 'bold', 'fontsize', 16)
hold off
% Plotting of theta
figure(2)
plot(x, y(4,:), 'linewidth', 1)
hold on
xlabel('\eta ', 'fontweight', 'bold', 'fontsize', 16)
ylabel('\theta(\eta) ', 'fontweight', 'bold', 'fontsize', 16)
hold off
% Plotting of phi
figure(3)
plot(x, y(6,:), 'linewidth', 1)
hold on
xlabel('\eta', 'fontweight', 'bold', 'fontsize', 16)
ylabel('\phi(\eta)', 'fontweight', 'bold', 'fontsize', 16)
hold off
% Residual of the boundary conditions
function res = bc2D(y0, yinf)
res = [y0(1); yinf(1);y0(4); yinf(4); y0(5) - Rew; yinf(5) - Red;y0(7) - 1; yinf(7)];
end
% System of First Order ODEs
function dydx = bvp2D(~, y)
yy1 = -(1+eta^2)*((10*A1*eta+A2*eta*y(1)-A2*y(4))*y(3))-3*(2*A1+7*A1*eta^2+A2*(2*eta^2+1)*y(1)-A2*eta*y(4))*y(2)-2*A2*y(5)*y(6)-3*(A1+A2*y(1))*y(4)+A3*M*y(2)-A4*Grt*y(8)/(A1*(1+eta^2)^2);
yy2 = eta*y(2);
yy3 = -3*A1*eta*y(6)-A2*(eta*y(1)-y(4))*y(6)+A3*M*y(5)/(A1*(eta^2+1));
yy4 = (A5+4/3*R)*((eta*(2*n-1))*y(8)+n^2*y(7))-A3*Pr*M*Ec*(y(1)^2+y(5)^2)-Pr*Q*y(7)+A6*Pr*(y(4)*y(8)+n*y(1)*y(7)-eta*y(1)*y(8))/(A5+4/3*R)*(1+eta^2);
dydx = [y(2); y(3); yy1; yy2; y(6); yy3; y(8); yy4];
end
end
please help to execute the above code..thanks in advance
  1 件のコメント
Torsten
Torsten 2024 年 9 月 9 日
You supply initial guesses for 9 unknown functions, but you supply spatial derivatives and boundary conditions for only 8 unknown functions.

サインインしてコメントする。

回答 (1 件)

Sandeep Mishra
Sandeep Mishra 2024 年 9 月 16 日
Hi Uma,
While running the code snippet in MATLAB R2024a, I encountered a similar error.
It can be observed that you are attempting to solve a boundary value problem using the 'bvp4c' function. 
Upon inspecting the 'odefun' (bvp2D) and 'bcfun' (bc2D) functions, I noticed that they return a vector of size 8, indicating that the system involves 8 differential equations.
However, the 'solinit' variable, created using the 'bvpinit' function, defines a 500x9 vector, which means initial guess values are being provided for 9 variables.
This discrepancy leads to a dimension mismatch, causing the error while using ‘bvp4c’ function.
You can refer to the example code of second order system in the following MATLAB documentation:
To address this, you can either modify the 'solinit' variable to provide initial guess values for only 8 variables or update the 'odefun' and 'bcfun' functions to return a vector of size 9.
Following is a workaround where the 'solinit' is adjusted to contain 8 guess values by removing the ‘g5’ variable:
solinit = bvpinit(linspace(0, infinite, 500), [0 g1 g2 Rew g3 0 g4]);
sol = bvp4c(@bvp2D, @bc2D, solinit);
Please refer to the following documentation for more information.
  1. ‘bvp4c’ function: https://www.mathworks.com/help/releases/R2024a/matlab/ref/bvp4c.html
  2. ‘bvpinit’ function: https://www.mathworks.com/help/releases/R2024a/matlab/ref/bvpinit.html
I hope this helps.

カテゴリ

Help Center および File ExchangeNumerical Integration and Differential Equations についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by