Solving a system with for loop
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I would like to solve a system of equations using a for loop and plotting the data.
This is my system
function f = Thesissysteem(x,parameters)
thethaA1= parameters(1);
thethaA2= parameters(2);
thethaN1= parameters(3);
thethaN2= parameters(4);
ebar = parameters(5);
alpha1 = parameters(6);
alpha2 = parameters(7);
sigma = parameters(8);
B = parameters(9);
cap = parameters(10);
tax = parameters(11)
f(1)= x(1) - B * x(11).^thethaA1;
f(2)= x(2) - B * x(12).^thethaA2;
f(3)= x(3) - B * x(13).^thethaN1;
f(4)= x(4) - B * x(14).^thethaN2;
f(5)= 1 * (x(1)-x(5))+ x(17) * (x(2)-x(6))-x(18) * x(11)-x(19) * x(12);
f(6)= 1 * (x(3)-x(7))+ x(17) * (x(4)-x(8))-x(18) * x(13)-x(19) * x(14);
%f(7)= 1 * thethaA1 * B * x(11).^(thethaA1-1) - x(18);
f(7)= x(11) - cap
f(8)= x(17) * thethaA2 * B * x(12).^(thethaA2-1) - x(19);
f(9)= 1 * thethaN1 * B * x(13).^(thethaN1-1) - x(18);
f(10)= x(17) * thethaN2 * B * x(14).^(thethaN2-1) - x(19);
f(11)= (alpha1 / alpha2) * (x(5) / x(6)).^ (-1 / sigma) - (1 / x(17));
%f(11)= (alpha1 / alpha2) * (x(5) / x(6)).^ (-1 / sigma) - (1 + tax / x(17))
f(12)= (alpha1 / alpha2) * (x(7) / x(8)).^ (-1 / sigma) - (1 / x(17));
f(13)= (alpha1 / alpha2) * (x(9) / x(10)).^ (-1 / sigma) - (1 / x(17));
f(14)= x(1) + x(3) - x(5) - x(7) - x(9);
f(15)= x(2) + x(4) - x(6) - x(8) - x(10);
f(16)= x(15) - x(11) - x(13);
f(17)= x(16) - x(12) - x(14);
f(18)= ebar - x(15) - x(16);
f(19)= x(18) - x(19);
With the following values for the parameters
thethaA1= 0.05;
thethaA2= 0.05;
thethaN1= 0.05;
thethaN2= 0.05;
ebar = 1;
alpha1 = 1.5631;
alpha2 = 1;
sigma = 0.5;
B = 1.191;
cap = 0;
tax = 0;
I want to find values for x(11) with different values for sigma (0<sigma<1) with steps of 0.1.
thethaA1= 0.05;
thethaA2= 0.05;
thethaN1= 0.05;
thethaN2= 0.05;
ebar = 1;
alpha1 = 1.5631;
alpha2 = 1;
sigma = 0.3;
B = 1.191;
cap = 0;
tax = 0;
parameters = [thethaA1 thethaA2 thethaN1 thethaN2 ebar alpha1 alpha2 sigma B cap tax];
for i = 0:0.1:1
parameters = [thethaA1 thethaA2 thethaN1 thethaN2 ebar alpha1 alpha2 sigma B cap tax];
[t1, x(11)] = Thesissysteem(parameters, i);
end
Is this the correct way to create such a loop? I get the following error:
Error using Thesissysteem
Too many output arguments.
Error in untitled2 (line 20)
[t1, x(11)] = Thesissysteem(parameters, i);
Can someone help me please?
5 comentarios
Torsten
el 25 de Mayo de 2021
Then call fsolve in a loop:
sigma_array = [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9];
for i=1:numel(sigma_array)
sigma = sigma_array(i);
parameters(8) = sigma;
% your call to fsolve
solution_array(i,:) = solution; % maybe to be changed to solution_array(:,i) = solution if solution is a column vector
end
Respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!