newton-raphson for 12 equations

2 visualizzazioni (ultimi 30 giorni)
milad
milad il 24 Lug 2014
Risposto: Michael Haderlein il 24 Lug 2014
Hi friends! I need a newton-raphson code to solve 12 equations with 12 variables. I've tried to use some of the codes but I couldn't find the answer. here is my equations which matrix B is (12*12):
Alfa=.1; Beta=0; Gama=0;
syms w1 w2 w3 w4 w5 w6 w7 w8 w9 w10 w11 w12
eq1=B(1,1)*w1+B(1,2)*w2+B(1,3)*w3+B(1,4)*w4+B(1,5)*w5+B(1,6)*w6+B(1,7)*w7+B(1,8)*w8+B(1,9)*w9+B(1,10)*w10+B(1,11)*w11+B(1,12)*w12-(Alfa/((1-w1)^4)+Beta/((1-w1)^2)+Beta*Gama/(1-w1)); eq2=B(2,1)*w1+B(2,2)*w2+B(2,3)*w3+B(2,4)*w4+B(2,5)*w5+B(2,6)*w6+B(2,7)*w7+B(2,8)*w8+B(2,9)*w9+B(2,10)*w10+B(2,11)*w11+B(2,12)*w12-(Alfa/((1-w2)^4)+Beta/((1-w2)^2)+Beta*Gama/(1-w2)); eq3=B(3,1)*w1+B(3,2)*w2+B(3,3)*w3+B(3,4)*w4+B(3,5)*w5+B(3,6)*w6+B(3,7)*w7+B(3,8)*w8+B(3,9)*w9+B(3,10)*w10+B(3,11)*w11+B(3,12)*w12-(Alfa/((1-w3)^4)+Beta/((1-w3)^2)+Beta*Gama/(1-w3)); eq4=B(4,1)*w1+B(4,2)*w2+B(4,3)*w3+B(4,4)*w4+B(4,5)*w5+B(4,6)*w6+B(4,7)*w7+B(4,8)*w8+B(4,9)*w9+B(4,10)*w10+B(4,11)*w11+B(4,12)*w12-(Alfa/((1-w4)^4)+Beta/((1-w4)^2)+Beta*Gama/(1-w4)); eq5=B(5,1)*w1+B(5,2)*w2+B(5,3)*w3+B(5,4)*w4+B(5,5)*w5+B(5,6)*w6+B(5,7)*w7+B(5,8)*w8+B(5,9)*w9+B(5,10)*w10+B(5,11)*w11+B(5,12)*w12-(Alfa/((1-w5)^4)+Beta/((1-w5)^2)+Beta*Gama/(1-w5)); eq6=B(6,1)*w1+B(6,2)*w2+B(6,3)*w3+B(6,4)*w4+B(6,5)*w5+B(6,6)*w6+B(6,7)*w7+B(6,8)*w8+B(6,9)*w9+B(6,10)*w10+B(6,11)*w11+B(6,12)*w12-(Alfa/((1-w6)^4)+Beta/((1-w6)^2)+Beta*Gama/(1-w6)); eq7=B(7,1)*w1+B(7,2)*w2+B(7,3)*w3+B(7,4)*w4+B(7,5)*w5+B(7,6)*w6+B(7,7)*w7+B(7,8)*w8+B(7,9)*w9+B(7,10)*w10+B(7,11)*w11+B(7,12)*w12-(Alfa/((1-w7)^4)+Beta/((1-w7)^2)+Beta*Gama/(1-w7)); eq8=B(8,1)*w1+B(8,2)*w2+B(8,3)*w3+B(8,4)*w4+B(8,5)*w5+B(8,6)*w6+B(8,7)*w7+B(8,8)*w8+B(8,9)*w9+B(8,10)*w10+B(8,11)*w11+B(8,12)*w12-(Alfa/((1-w8)^4)+Beta/((1-w8)^2)+Beta*Gama/(1-w8)); eq9=B(9,1)*w1+B(9,2)*w2+B(9,3)*w3+B(9,4)*w4+B(9,5)*w5+B(9,6)*w6+B(9,7)*w7+B(9,8)*w8+B(9,9)*w9+B(9,10)*w10+B(9,11)*w11+B(9,12)*w12-(Alfa/((1-w9)^4)+Beta/((1-w9)^2)+Beta*Gama/(1-w9)); eq10=B(10,1)*w1+B(10,2)*w2+B(10,3)*w3+B(10,4)*w4+B(10,5)*w5+B(10,6)*w6+B(10,7)*w7+B(10,8)*w8+B(10,9)*w9+B(10,10)*w10+B(10,11)*w11+B(10,12)*w12-(Alfa/((1-w10)^4)+Beta/((1-w10)^2)+Beta*Gama/(1-w10)); eq11=B(11,1)*w1+B(11,2)*w2+B(11,3)*w3+B(11,4)*w4+B(11,5)*w5+B(11,6)*w6+B(11,7)*w7+B(11,8)*w8+B(11,9)*w9+B(11,10)*w10+B(11,11)*w11+B(11,12)*w12-(Alfa/((1-w11)^4)+Beta/((1-w11)^2)+Beta*Gama/(1-w11)); eq12=B(12,1)*w1+B(12,2)*w2+B(12,3)*w3+B(12,4)*w4+B(12,5)*w5+B(12,6)*w6+B(12,7)*w7+B(12,8)*w8+B(12,9)*w9+B(12,10)*w10+B(12,11)*w11+B(12,12)*w12-(Alfa/((1-w12)^4)+Beta/((1-w12)^2)+Beta*Gama/(1-w12));
F=[eq1;eq2;eq3;eq4;eq5;eq6;eq7;eq8;eq9;eq10;eq11;eq12];
thank you!

Risposta accettata

Michael Haderlein
Michael Haderlein il 24 Lug 2014
To solve this set of equations, I'd use the optimization toolbox function fsolve. Define your set of equations in a function (for simplification, I skip Beta and Gamma):
function w=test(x,B,Alpha)
w=B*x-Alpha./(1-x.^4);
and solve it by
fsolve(@(x) test(x,B,Alpha),ones(size(B,2),1))
Of course, B and Alpha must be defined beforehand. Does it work?
In case you cannot use the optimization toolbox, you'll find couple of files at the file exchange indexed with "Newton Raphson". I didn't read through them, but most likely, you'll find one which is supporting the same syntax.
Best regards,
Michael
  1 Commento
milad
milad il 24 Lug 2014
Thank you Michael;I did it with f-solve but the answers was a little out of my expectation. I want to do it with Newton-Raphson method to be sure about my answers.That's because I think the f-solve does not use Newton-Raphson method to solve the problems.Is it true? Anyway thank you for your suggestions and helping
Best Regards
Milad

Accedi per commentare.

Più risposte (1)

Michael Haderlein
Michael Haderlein il 24 Lug 2014
fsolve provides Trust-Region-dogleg (default), Trust-Region-reflective, and Levenberg-Marquardt. I think there's no built-in Newton-Raphson, but I'm not too sure about that.

Community Treasure Hunt

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

Start Hunting!

Translated by