solve an equation by iterration

1 view (last 30 days)
Brice Thomas
Brice Thomas on 8 Oct 2016
Commented: Torsten on 11 Oct 2016
Hello everyone!
I haven't been using matlab for a while and I struggle on a simple equation.
I need to obtain this result: Sigma = solve( Sigma== Sigma0*(1+k*(Epsilon-Sigma/E))^n; ) All parameters sigma0, k, Epsilon, E and n=0.2; are known. The only reason for witch I need matlab is the fact that sigma (the unknown), is on both side of the equation, and I need a iterative solver.
I though about the ode45 function but I can not find a example that fit's what I want to obtain. if I am not mistaken, I can find the derivative of the function.
dSigma= -n*Sigma0*(1+k*(Epsilon-Sigma/E))^(n-1)*(k/E)
Can someone tell me the few lines required to solve this? Thank you!

Answers (2)

Massimo Zanetti
Massimo Zanetti on 8 Oct 2016
Put Sigma in the other side of the equation by changing it sign, and then use fsolve. https://it.mathworks.com/help/optim/ug/fsolve.html
  1 Comment
Brice Thomas
Brice Thomas on 11 Oct 2016
I still strugle, could you give a example of code? As I detailled in the answer.
Thank you!

Sign in to comment.


Brice Thomas
Brice Thomas on 8 Oct 2016
Sorry, I struggled one hour one this simple problem without seeing the program works at the end of the day...
I decided to make a simple example to test the fsolve, but even here, it does not compile and give me my root.
Here is a screen-shot of the example and the code.
function [r] = H(X) % a general function that take imput: [0:0.01:4] and must give me the % roots of sine (X) on the interval.
function [ Y ] = Test1( X )
Y=(log(X)-2); plot(X,Y); end
function [Z]=Myroot(X) X0=0.3; Z=fsolve(Test1(X),X0) end
r=Myroot(X) end
My real problem requires only for me to find the root of the expression. For this I wanted to make a function and solve it. But as I said, I strugle. Maybe helping pointing what is wrong here will help me on the other problem.
Thank you!
  2 Comments
John D'Errico
John D'Errico on 8 Oct 2016
Please stop adding answers every time you make a comment. This is not an answer. There is a button to make a comment. Use it.
Torsten
Torsten on 11 Oct 2016
Use
Z=fsolve(@Test1,X0)
instead of
Z=fsolve(Test1(X),X0)
Best wishes
Torsten.

Sign in to comment.

Categories

Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!