solving three non linear equation simultaneously??

i have following set of equations-
ex = (1/Ec)*(sigx - v*(sigy + sigz); ---(1)
ey = (1/Ec)*(sigy - v*(sigx + sigz); ---(2)
ez= (1/Ec)*(sigz - v*(sigy + sigx); ---(3)
where,
sigx= -(px*ex*Es + Pfx*Ef*ex + lx);
sigy= -(py*ey*Es + Pfy*Ef*ey + ly);
sigz= -(px*ex*Es + lz);
For equations (1) (2) and(3), known term is ex and hence sigx
Unknowns are ey and ez
Values of other terms are-
Ef = 180000;
Es= 2*10^5;
Ec= 25000;
fx=fy=420;
lx=0;
ly=5;
lz=0;
px=0.016;
py=0.024;
pz= 0.016;
v=0.15;
pfx=0.0125;
pfy=0.0125;
PROBLEM - when i am solving (2) and (3) simultaneously for a given value of ex and hence sigx , I am getting values of ey and ez which are not satisfying (1) equation. What is the reason for this contradiction? Please help!!

2 件のコメント

Birdman
Birdman 2018 年 1 月 30 日
What are your expected results for ey and ez?
udita pant
udita pant 2018 年 1 月 31 日
there are no such expected results for ey and ez . But the values of ey and ez should be such that when kept in eq(1) it should give the same value of ex which was initially assumed.

サインインしてコメントする。

 採用された回答

Birdman
Birdman 2018 年 1 月 30 日

0 投票

I believe what you are looking for is as follows:
syms ex ey ez
Ef=180000;Es=2*10^5;Ec=25000;fx=420;fy=420;Ix=0;Iy=5;Iz=0;px=0.016;py=0.024;pz=0.016;v=0.15;pfx=0.0125;pfy=0.0125;
ex = (1/Ec)*(-(px*ex*Es + pfx*Ef*ex + Ix) - v*(-(py*ey*Es + pfy*Ef*ey + Iy) + -(pz*ez*Es + Iz)));
ey = (1/Ec)*(-(py*ey*Es + pfy*Ef*ey + Iy) - v*(-(px*ex*Es + pfx*Ef*ex + Ix) + -(pz*ez*Es + Iz)));
ez= (1/Ec)*(-(pz*ez*Es + Iz) - v*(-(py*ey*Es + pfy*Ef*ey + Iy) + -(px*ex*Es + pfx*Ef*ex + Ix)));
sol=solve([ex,ey,ez])
See the solutions by typing
sol.ex
sol.ey
sol.ez

9 件のコメント

udita pant
udita pant 2018 年 1 月 31 日
Thanks for your help.... but actually i want to find the value of ey and ez for a given value of ex.
Birdman
Birdman 2018 年 1 月 31 日
Then set the valıe of ex to something, then you will have two equations for two unknowns.
udita pant
udita pant 2018 年 1 月 31 日
編集済み: Walter Roberson 2018 年 1 月 31 日
syms ey ez
Ef=180000;Es=2*10^5;Ec=25000;fx=420;fy=420;Ix=0;Iy=5;Iz=0;px=0.016;py=0.024;pz=0.016;v=0.15;pfx=0.0125;pfy=0.0125;
ex= 0.00003;
sigx= -(px*ex*Es + pfx*Ef*ex + Ix);
ey = (1/Ec)*(-(py*ey*Es + pfy*Ef*ey + Iy) - v*(sigx + -(pz*ez*Es + Iz)));
ez= (1/Ec)*(-(pz*ez*Es + Iz) - v*(-(py*ey*Es + pfy*Ef*ey + Iy) + sigx));
sol=solve([ey,ez]);
y=sol.ey
z=sol.ez
excheck = (1/Ec)*(sigx - v*(-(py*y*Es + pfy*Ef*y + Iy) + -(pz*z*Es + Iz)))
As u said, i fixed the value of ex and got the value of ey and ez .
But when these values of ey and ez are not satisfying the first equation then...i.e excheck is not equal to ex..
this is the problem!!
Walter Roberson
Walter Roberson 2018 年 1 月 31 日
How are you deriving your equation for excheck ?
Birdman
Birdman 2018 年 1 月 31 日
You can not expect it to be the same. Actually, when you check their difference:
err=abs(ex)-abs(vpa(excheck))
>> 0.00002895
which means that their difference can be easily thought as zero.
udita pant
udita pant 2018 年 2 月 17 日
but this value is very large if in terms of strain so for my project i cannot take it as zero. Is there any method through which i can solve this problem.? Kindly answer.
Walter Roberson
Walter Roberson 2018 年 2 月 17 日
How are you deriving your equation for excheck ?
udita pant
udita pant 2018 年 2 月 17 日
By assuming ex we get the value of ex and ey and consequently sigx ,sigy and sigz. Therefore by back substituting these values in eq(1) i.e sigx= -(px*ex*Es + pfx*Ef*ex + Ix) , I am trying to check the value of ex.
Walter Roberson
Walter Roberson 2018 年 2 月 17 日
I notice that your lines
ey = (1/Ec)*(-(py*ey*Es + pfy*Ef*ey + Iy) - v*(sigx + -(pz*ez*Es + Iz)));
ez= (1/Ec)*(-(pz*ez*Es + Iz) - v*(-(py*ey*Es + pfy*Ef*ey + Iy) + sigx));
assign to symbols on the left that are also used on the right. I wonder if those should be
eqns = [ey == (1/Ec)*(-(py*ey*Es + pfy*Ef*ey + Iy) - v*(sigx + -(pz*ez*Es + Iz))),
ez == (1/Ec)*(-(pz*ez*Es + Iz) - v*(-(py*ey*Es + pfy*Ef*ey + Iy) + sigx))];
sol = solve(eqns,[ey, ez]);
This does not bring ex and excheck into agreement, but might hint at further difficulties.

サインインしてコメントする。

その他の回答 (1 件)

Torsten
Torsten 2018 年 1 月 30 日

0 投票

As far as I can see, the equations are linear in the unknowns. So you only have to solve a system of linear equations using the "backslash" operator.
Best wishes
Torsten.

Community Treasure Hunt

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

Start Hunting!

Translated by