Matlab solve function in for loops

Click For Summary
SUMMARY

The forum discussion focuses on using the Matlab "solve" function within nested "for" loops to solve a matrix of equations defined by trigonometric expressions. The user encounters errors related to invalid indexing and explicit solution failures when attempting to solve a 2x2 matrix of equations for variable 'x'. The discussion highlights the need for proper indexing and the correct formulation of symbolic matrices in Matlab, particularly when dealing with larger matrices and multiple variables.

PREREQUISITES
  • Understanding of Matlab syntax and functions
  • Familiarity with symbolic mathematics in Matlab
  • Knowledge of trigonometric equations and their properties
  • Experience with matrix operations in Matlab
NEXT STEPS
  • Explore Matlab's symbolic toolbox documentation for advanced usage
  • Learn about indexing and matrix manipulation in Matlab
  • Investigate the use of "solve" function with multiple variables in Matlab
  • Study examples of solving systems of equations in Matlab for larger matrices
USEFUL FOR

Matlab users, engineers, and researchers working with symbolic mathematics and trigonometric equations, particularly those needing to solve complex systems of equations in matrix form.

NJP
Messages
3
Reaction score
0
Matlab "solve" function in "for" loops

I need to solve a similar problem like shown in the below codes for a larger matrix,
The 'x' here needs to be solved for each y(a,b). Each of this y(a,b) is equal to zero and 'x' will vary accordingly , so it will give a 2by 2 matrix for 'x' as well.

syms x;
y = [sin(x)+5 3*cos(x)-4
cos(x)-1 cos(x)-0.6];

C=zeros(2,2);
for a=1:2
for b=1:2

B(a,b)= solve('y(a,b)=0',x);
%B(a,b)=solve('y(a,b)=C(a,b)',x);
end
end

When I try to solve it without the loop it gives the following error,
(Warning: 4 equations in 1 variables.
Warning: Explicit solution could not be found.
> In solve at 81)
When I try with the loop it gives me the following error,
? Error using ==> mupadmex
Error in MuPAD command: Invalid index
  • ;

    during evaluation of 'matchNonSingletonLHS'

    Error in ==> sym.sym>sym.subsasgn at 1420
    C = mupadmex('mllib::subsasgn',A.s,B.s,inds{:});


    It will be great if someone can give me a clue to solve this problem.
 
Physics news on Phys.org


I don't often use the symbolic toolbox, but I think the issue is that you've defined y to be a 2x2 matrix of one variable (x).
I am not even sure what you think y(a,b) would mean in this case?
 


Thanks for the reply. Like I said y here is just a random matrix. My actual problem needs to be solved for voltage angle difference between busbars and contains a 96by10 matrix. However the the matrix I need to solve is quite similar to 'y'. But each element contains larger first order trigonometric equations.
 


Try this:

syms x,y,z,w;
y = [sin(x)+5 3*cos(y)-4
cos(z)-1 cos(w)-0.6];

C=zeros(2,2);
for a=1:2
for b=1:2

B(a,b)= solve('y(a,b)=0',x);
B(a,b)= solve('y(a,b)=0',y);
B(a,b)= solve('y(a,b)=0',z);
B(a,b)= solve('y(a,b)=0',w);
end
end
 


It gives me the below errors,
:(

?? Error using ==> mupadmex
Error in MuPAD command: Invalid index
  • ;

    during evaluation of 'matchNonSingletonLHS'

    Error in ==> sym.sym>sym.subsasgn at 1420
    C = mupadmex('mllib::subsasgn',A.s,B.s,inds{:});

    Error in ==> Untitled2 at 9
    B(a,b)= solve('y(a,b)=0',x);
 

Similar threads

  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 2 ·
Replies
2
Views
3K
Replies
3
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 2 ·
Replies
2
Views
3K
Replies
1
Views
2K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 6 ·
Replies
6
Views
4K
  • · Replies 1 ·
Replies
1
Views
3K
Replies
2
Views
3K