How to use fsolve with input from an array
Show older comments
Hi, I wrote down a simple code, I want to solve it by "fsolve" but with applying an array of values instead of one value for "t", I do not know how I can do it, please help. Thanks in advance.
function y=func(x)
y(1)=3*x(1)+x(2)-t;
y(2)=x(1)-2*x(2)-3;
end
t is an array of [4 5 6]
Actually I simplified my main problem. So, this is my main code:
function F = func(x)
tetha=0.2;
F=zeros(3,1);
F(1,1) = x(1)+(tetha/(1-tetha))*x(2)-(0.21/(1-tetha));
F(2,1) = x(3)-(x(2)*(1-x(1))/(x(1)*(1-x(2))));
F(3,1) = x(3)-(2.98*((x(1)*(x(3)-1)+1-0.1*x(3))/(x(1)*(x(3)-1)+1)-0.1));
end
And here it is its solver:
clear
clc
fun = @func;
x0 = [0.5,0.5,1];
x(:,1)=fsolve(fun,x0);
disp(x)
It is ok with one value for tetha, but the problem is that tetha is an array of [0.2 0.4 0.6 0.8]. In fact, I need this system of equations to be solved 4 times (length of tetha) for x(1), x(2) , and x(3) and for each time output be displayed.
2 Comments
KALYAN ACHARJYA
on 23 Aug 2020
Edited: KALYAN ACHARJYA
on 23 Aug 2020
function y=func(x)
y(1)=3*x(1)+x(2)-t;
y(2)=x(1)-2*x(2)-3;
end
t is not there in the input argument list??
y=func(x)
Or sorry I did not understand the question properly, can you restructure the question again, y(2) independent with t ??
Amirreza Reyhanifar
on 23 Aug 2020
Answers (1)
Alan Stevens
on 23 Aug 2020
Presumably you want to find x(1) and x(2) given values for y(1) and y(2). If so, then you can simply solve them as follows:
t = [4 5 6];
M = [3 1; 1 -2];
y0 = [6; 7]; % replace with your own values
for i = 1:3
y = y0 + [t(i); 3];
x(:,i) = M\y;
end
giving results like
x =
4.2857 4.5714 4.8571
-2.8571 -2.7143 -2.5714
where each column gives x(1) and x(2) for the various values of t.
1 Comment
Amirreza Reyhanifar
on 23 Aug 2020
Categories
Find more on Line Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!