Replacing the variable that are generated through loops ?

2 vues (au cours des 30 derniers jours)
P K
P K le 20 Déc 2018
I have a code that generate the equation through loops :
Eqn(1)=4*K_T*P(1, 0)*P(4, 3) - 4*K_L*P(1, 0)*P(5, 4) + 4*K_T*P(2, 1)*P(3, 2) - 4*K_T*P(1, 0)*P(5, 4)
Eqn(2)= 2*K_T*P(3, 2)^2 + 4*K_T*P(1, 0)*P(5, 4) + 4*K_T*P(2, 1)*P(4, 3)
Please Note - In P(i,j) - i and j are not specifying any MATRIX position. They are numbers which are generated through some equation.P(i,j) are variables. There are many such variables. Now I want to replace them with some other variables.
So, my question is - Is it possible that the variables get changed to my desired variables, which i would specify ?
like P(1,0)==C(1)
P(3,2)==C(4)
thanks !!
  3 commentaires
Walter Roberson
Walter Roberson le 20 Déc 2018
To confirm, P(1,0) designates not P indexed at row 1 column 0, but rather a distinquished scalar variable P_1_0 and P(5,4) is a distinguished scalar variable P_5_4 rather than P indexed at row 5 column 4?
P K
P K le 20 Déc 2018
Yes Walter.

Connectez-vous pour commenter.

Réponses (1)

Walter Roberson
Walter Roberson le 20 Déc 2018
B = 1;
P = sym('P', [B+5 B+4]);
Eqn(1) = 4*K_T*P(B+1, B+0)*P(B+4, B+3) - 4*K_L*P(B+1, B+0)*P(B+5, B+4) + 4*K_T*P(B+2, B+1)*P(B+3, B+2) - 4*K_T*P(B+1, B+0)*P(B+5, B+4);
Eqn(2) = 2*K_T*P(B+3, B+2)^2 + 4*K_T*P(B+1, B+0)*P(B+5, B+4) + 4*K_T*P(B+2, B+1)*P(B+4, B+3);
subs(Eqn, [P(B+1, B+0), P(B+3,B+2)], [C(1), C(4)])
  2 commentaires
P K
P K le 20 Déc 2018
Walter
Can you explain it ?
In the Eqn(1) - your code has P(B+1, B+0), which would result P(2,1) as output instead of P(1,0).
Walter Roberson
Walter Roberson le 20 Déc 2018
Modifié(e) : Walter Roberson le 20 Déc 2018
It does not replace P(2,1) as output: it adjusts indexing bases from 0 to 1.
It would, however, replace P(1,0) with P_2_1 because P = sym('P', [B+5 B+4]); is one based. You can get around that and have P10 appear instead if you use
temp_nn = sym('P%d%d', [5, 4]);
temp_0n = sym({'P00', 'P01', 'P02', 'P03', 'P04'});
temp_n0 = sym({'P10'; 'P20'; 'P30'; 'P40'; 'P50'});
P = [temp_0n; [temp_n0, temp_nn]];

Connectez-vous pour commenter.

Catégories

En savoir plus sur Mathematics dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by