MATLAB Answers

Symbolic computation of nonlinear system of equations

6 views (last 30 days)
Bobo
Bobo on 13 Sep 2016
Commented: Bobo on 20 Sep 2016
I have a nonlinear system of equations, and i would like to formulate the jacobian matrix in matlab symbolic tool box and then use the matlabfunction to convert the jacobian matrix to numerical matlab. The nonlinear equations are
from these equations a total of
defines the nonlinear equations. My matlab code gives error when I try to define the indexes j,k,and i. Below is my code
clear all;
close all;
clc
syms x k y beta theta chi i j
j=1:20
k=1:15
i=1:20
S(j)=symsum((x^k/y(k)*(beta(i)+1/5*(c+7))*chi*sin(theta)),k,1,10)
S(j)=symsum((x^k/y(k)*(beta(i)+1/5*(x^2*c+7))*chi*cos(theta)),k,1,10)
Thanks

  4 Comments

Show 1 older comment
John D'Errico
John D'Errico on 14 Sep 2016
So you fixed the 5 question. Even so, you use i in there, but not j. That is important. More so than the other problem.
Walter Roberson
Walter Roberson on 15 Sep 2016
I see that you edited something, but as I read over your post, I cannot find anything that has changed. Your equations still appear to be incorrect, especially with respect to how i is used. You still have not given any information about how the +/- is to be incorporated. You still have not clarified whether the two Sj you posted are intended to both equate to 0, or whether there are mathematical reasons in your problem where the two Sj will be equivalent to each other and only one of the two will be needed. You still have not indicated what you want to solve for.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 13 Sep 2016
The variable in symsum() cannot be used to index anything. You need to construct the vector of individual values and then sum() them.
For any individual k, how do you decide whether to add or subtract the 1/5* term? Or do you do both, thereby constructing 2^20 entries for Sj (all the possible combinations of plus and minus) ?
Your equations are for Sj but they do not involve j at any point: instead they use the undefined i .
I notice that both of your equations define Sj . Is the implication that the two Sj must equal each other?

  2 Comments

Walter Roberson
Walter Roberson on 15 Sep 2016
Instead of
S(j)=symsum((x^k/y(k)*(beta(i)+1/5*(c+7))*chi*sin(theta)),k,1,10)
you would use
syms c chi theta i S_1(j) S_2(j) x
y = sym('y', [1, 10]);
xk = x.^(1:10);
yk = y(1:10);
beta_i = evalin(symengine, 'Beta[i]');
term_1a = xk./yk .* (beta_i + 1/5*(c+7) );
term_1b = xk./yk .* (beta_i + 1/5*(x.^2 * c + 7) );
sum_term_1a = sum(term_1a);
sum_term_1b = sum(term_1b);
term_2a = chi * sin(theta);
term_2b = chi * cos(theta);
S_1(j) = sum_term_1a + term_2a;
S_2(j) = sum_term_1b + term_2b;
Unfortunately, it is not practical to generate a symbol named beta(i) with symbolic i, because the name happens to clash with the beta function. I had to rename it to Beta.
You might notice that the formula created for S(j) is completely independent of j, which is in keeping with your posted equations.
You can proceed from there to
sol = solve(S_1(j), S_2(j), theta, chi);
This is a total guess about what you are trying to solve over.
Unfortunately, at least up to R2016a, MATLAB is not able to solve this in theta and chi. There is a pair of solutions; one of the pair is
chi = (1/5)*x*((x*(x*(x*(x*(x*(x*(x*(x*y8+y9)*y7+y8*y9)*y6+y7*y8*y9)*y5+y6*y7*y8*y9)*y4+y5*y6*y7*y8*y9)*y3+y4*y5*y6*y7*y8*y9)*y2+y3*y4*y5*y6*y7*y8*y9)*y1+y2*y3*y4*y5*y6*y7*y8*y9)*y10+x^9*y1*y2*y3*y4*y5*y6*y7*y8*y9)*((x^4+1)*c^2+10*(Beta(i)+7/5)*(x^2+1)*c+50*(Beta(i)+7/5)^2)^(1/2)/(y9*y8*y7*y6*y5*y4*y3*y2*y10*y1)
theta = arctan(-(7+5*Beta(i)+c)/((x^4+1)*c^2+10*(Beta(i)+7/5)*(x^2+1)*c+50*(Beta(i)+7/5)^2)^(1/2), -(c*x^2+5*Beta(i)+7)/((x^4+1)*c^2+10*(Beta(i)+7/5)*(x^2+1)*c+50*(Beta(i)+7/5)^2)^(1/2))
I am almost certain that your posted equations are wrong.
Bobo
Bobo on 20 Sep 2016
Thank you very much Walter. I questioned the validity of the above stated equations in my Matlab class and it turns out you were right.
The instructor of the course confirmed later after I complained about both your initial comments and that of John D'Errico's.
However,I am very grateful for the solutions you have provided. I am currently using it as reference in my Symbolic Maths Class.
Thank you very much

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by