Solve equation with 2 variables being vectors

Example C=@(A,B) A+B*A A=[1 2 3] B=[4 2 6]
I want C to be a matrix of all possible solutions
Right now I have C as a function and A and B as user inputs
Is there any easier way than writing a loop?
Clarification: C is a very complicated equation with a 2 variables that can have multiple inputs. I want to know all possible solutions. Is there a way to get all possible solutions without nesting loops. I'm making a contour map of 2 inputs and 2 outputs.

3 Commenti

What do you mean by possible solutions? Do you mean adding only one number from one to only one number to the other one and finding each answer?
Can you explain what the goal of this operation is or some other background?
bsxfun does not work because I have 4 variables, c and a are system dependent constants, Ff and Xi are inputs.
Xf=solve(Ff==2*c*a*(Xf/Xi-Xi^2/Xf^2),Xf);
Xf=Xf(1);
Xfs=matlabFunction(Xf);
where Xfs=@(Ff,Xi,a,c)
You should be able to put an array into a symbolic variable and solve for each value of that array. That means you could define Ff and Xi using the meshgrid method in my answer below. You could:
[Xi, Ff] = meshgrid(Xi, Ff)
and then solve with the values of Xi and Ff that are returned which should give you every possible combination.

Accedi per commentare.

Risposte (2)

Justin
Justin il 8 Mag 2014
Modificato: Justin il 8 Mag 2014
Edited for clarification:
This may do the trick. It has a loop but only one for implementing the function. After it is run the a, b, and c should hopefully be everything you need.
A=[1 2 3];
B=[4 2 6];
[a, b] = meshgrid(A, B);
for i = 1:length(p)
c(i) = C(a(i), b(i));
end
Let me know how that works.
_______________________________________________
OLD STUFF:
I'm not sure if I understand the question right but bsxfun may be useful. bsxfun automatically extends an array along a singleton dimension to match the other array's size. You could use it to get the results you want (I think).
A=[1 2 3];
B=[4 2 6];
bsxfun(@plus, A, B')
ans =
5 6 7
3 4 5
7 8 9
Matt J
Matt J il 9 Mag 2014
Modificato: Matt J il 9 Mag 2014
C=bsxfun(@(A,B) A+B.*A, A(:),B(:).')

Categorie

Scopri di più su Mathematics in Centro assistenza e File Exchange

Richiesto:

il 8 Mag 2014

Commentato:

il 12 Mag 2014

Community Treasure Hunt

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

Start Hunting!

Translated by