Solve a nonlinear equation with constrains

Hello,
clear
p0=1000e6;
t0 = 1e-6;
td = 1e-6;
t = t0 + td;
c = 5e6;
a = @(r)log(r)./(t0*(r-1.0));
b = @(r)a(r).*r;
func= @(r) p0*((exp(-a*t) - exp(-b*t))/(exp(-a*t0) - exp(-b*t0)))-c;
r=1.5;
roots = fzero(func,r)
my equation is the func.
where a and b are,

1 comentario

Bora Eryilmaz
Bora Eryilmaz el 15 de Dic. de 2022
Editada: Bora Eryilmaz el 15 de Dic. de 2022
Your function "p(t)" (func in your code) is not a function of time since you are assigning a fixed scalar value to "t" in your code. So, func() is a function of r, with a fixed "t". So what you are really solving here is p(r) = 0 given fixed values for t, t0, a, b, c.
You will need to reformulate your problem.

Iniciar sesión para comentar.

 Respuesta aceptada

p0 = 1000e6;
t0 = 1e-6;
td = 1e-6;
t = t0 + td;
c = 7.5e8;
a = @(r)log(r)./(t0*(r-1.0));
b = @(r)a(r).*r;
func= @(r) p0*((exp(-a(r)*t) - exp(-b(r)*t))./(exp(-a(r)*t0) - exp(-b(r)*t0))) - c;
r = 0.001:0.1:10;
plot(r,func(r))
root1 = fzero(func,[0.001 0.75])
root1 = 0.5000
root2 = fzero(func,[1.1 2.5])
root2 = 2.0000

2 comentarios

Miraboreasu
Miraboreasu el 15 de Dic. de 2022
Thanks, but if I keep c=5e6, it won't work
Torsten
Torsten el 15 de Dic. de 2022
Editada: Torsten el 16 de Dic. de 2022
Yes, because no roots exist. Plot the function, and you will see that it does not cross the r-axis.
Note for functions that only depend on one variable: First plot, then solve.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Productos

Versión

R2022a

Preguntada:

el 15 de Dic. de 2022

Editada:

el 16 de Dic. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by