Using arrayfun and fsolve together

조회 수: 11 (최근 30일)
Mohammed Rahman
Mohammed Rahman 2020년 5월 3일
Hi, hope you're doing well. With the help of Darova from the forum, I have been able to formulate this code which essentially solves my system of equations (Equations_G1_G2) for two unknowns; Phi and qRj. An issue arises with regards mj (Line 4). When mj is a scalar, the code works as required and there are no qualms, however, I would like to input mj as a matrix; as shown, and have fsolve iterate through each element in the mj array. How would I go about doing this? I was thinking about using arrayfun but I don't know how to combine arrayfun and fsolve in this manner.
In effect, I would like Phi_qRj (Line 14) to solve my system equations for each element in array mj and then return two arrays for Phi and qRj. So I would have a value of Phi and qRj for each mj values
I appreciate any help!
function IAST
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% INPUTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
global mj Lj qAC K n C0i Phi qRj
mj = [1,2,3,4,5]; % PROBLEM
Lj = 0.1;
qAC = mj./Lj
K = [49.1103, 69.49];
n = [0.2095, 0.19727];
C0i = [1,1];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SOLVE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
opt = optimset('display','on');
x0 = ones(1,2);
Phi_qRj = fsolve(@(x)G1_G2(x),x0,opt); % SOLVE EQUATION
Phi = Phi_qRj(:,1)
qRj = Phi_qRj(:,2)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function Equations_G1_G2 = G1_G2(x)
global mj Lj qAC K n C0i Phi qRj
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EQUATIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Phi = x(1);
qRj = x(2);
Z1 = ((Phi*n)./K).^(1./n)
Z2 = (qRj * qAC);
Z3 = C0i./(Z1+Z2);
Z4 = C0i./(Z1+Z2).*(1./n);
G1 = sum(Z3) + -1;
G2 = sum(Z4) + -(Phi/qRj);
Equations_G1_G2 = [G1 G2]';

답변 (0개)

카테고리

Help CenterFile Exchange에서 Systems of Nonlinear Equations에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by