Autor Tema: Sistema no lineal. Fsolve, Matlab.

0 Usuarios y 1 Visitante están viendo este tema.

16 Mayo, 2022, 09:24 pm
Leído 202 veces

susojuarez

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 19
  • País: es
  • Karma: +0/-0
Hola, intento resolver esta ecuacion no lineal en Matlab:
Kp=0.01;
Tp=10;
L=0.7;
Kc=1.1;
Pr=0;
Ti=0.1;

foptd3=@(x)[ 
    Kp./(sqrt(1+(x(1).^2*Tp.^2)))-(((x(1)*Ti/(1.1)))./sqrt(1+((x(1)*Ti)+((4*Pr)./pi)).^2));
    (-x(1)*L)-atan(x(1)*Tp)+(pi./2)+atan(x(1)+(4*Pr)./pi)
    ];
x0 = (0);
options = optimoptions('fsolve','Display','iter');
[x,fval]=fsolve(foptd3,x0,options);

Y me dice:
>> FOPTD_3_script
Warning: Trust-region-dogleg algorithm of FSOLVE cannot handle non-square systems; using Levenberg-Marquardt algorithm instead.
> In fsolve (line 342)
In FOPTD_3_script (line 19)

                                        First-Order                    Norm of
 Iteration  Func-count    Residual       optimality      Lambda           step
     0           2          2.4675            15.2         0.01
     1           4        0.360624            1.49        0.001       0.161916
     2           6        0.119752           0.142       0.0001        0.24074
     3           8       0.0283704          0.0367        1e-05       0.760066
     4          10       0.0172614         0.00203        1e-06        0.28409
     5          12       0.0172386         8.1e-05        1e-07      0.0108042
     6          14       0.0172386        3.08e-06        1e-08    0.000436343
     7          16       0.0172386        1.16e-07        1e-09    1.65864e-05

No solution found.

fsolve stopped because the last step was ineffective. However, the vector of function
values is not near zero, as measured by the value of the function tolerance.

<stopping criteria details>
¿Cuál es el problema? Gracias.

17 Mayo, 2022, 04:53 pm
Respuesta #1

Abdulai

  • Moderador Global
  • Mensajes: 2,695
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
...
foptd3=@(x)[ 
    Kp./(sqrt(1+(x(1).^2*Tp.^2)))-(((x(1)*Ti/(1.1)))./sqrt(1+((x(1)*Ti)+((4*Pr)./pi)).^2));
    (-x(1)*L)-atan(x(1)*Tp)+(pi./2)+atan(x(1)+(4*Pr)./pi)
    ];
x0 = (0);
...

No entiendo qué querés hacer,  son dos ecuaciones no lineales pero hay una sola incógnita ( x(1) ) .

17 Mayo, 2022, 06:19 pm
Respuesta #2

susojuarez

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 19
  • País: es
  • Karma: +0/-0
¡Hala, pues es verdad! Claro, no me daba cuenta de lo que estaba haciendo, me lié. Es al revés, con x(1) y sabiendo varios parámetros, quiero sacar dos que no conozco. Voy a ello a ver que sale.
Gracias por contestar. :)

19 Mayo, 2022, 03:45 am
Respuesta #3

susojuarez

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 19
  • País: es
  • Karma: +0/-0
¿El módulo y argumento de este cociente de números complejos (captura.jpg) sería correcto? Por otra parte me preocupa el signo - 'menos' de AN y los del argumento H(jw).



Gracias.

19 Mayo, 2022, 04:09 am
Respuesta #4

Abdulai

  • Moderador Global
  • Mensajes: 2,695
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Está bien. 
En un cociente de complejos el módulo es el cociente de los módulos y el argumento la resta de los argumentos.

20 Mayo, 2022, 05:09 am
Respuesta #5

susojuarez

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 19
  • País: es
  • Karma: +0/-0
Gracias. :D Estoy llegando al final del asunto. Quería, en principio, que la w del modelo lineal que soluciono en Matlab con fsolve como se ve en el archivo adjunto, me diera un valor parecido al que saco en Simulink (mido en gráfica de salida el periodo, T y calculo w=0.346).
Claro, yo tengo como tu bien dices dos ecuaciones no lineales (que representan al sistema en módulo y argumento) con una incognita. Con las dos ecuaciones no lo resuelve. Y si lo hago sólo con la de arriba  (módulos) me saca el valor 0.0842. Y si pongo como comentario la de arriba y resuelvo sólo la ecuación de abajo me da un valor distinto, 0.6834.



¡Vaya lío que tengo, con esto!  :banghead:

20 Mayo, 2022, 04:24 pm
Respuesta #6

Abdulai

  • Moderador Global
  • Mensajes: 2,695
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
...Y si pongo como comentario la de arriba y resuelvo sólo la ecuación de abajo me da un valor distinto, 0.6834.
...

Ahi la variable solución es x(1) pero tenés también un w que te va a usar el último valor.   Corregido eso la solución es \( x(1)=w\approx 1.5 \)  que es diferente a lo que esperabas. Por lo que me pregunto si la función es correcta.

23 Mayo, 2022, 07:19 pm
Respuesta #7

susojuarez

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 19
  • País: es
  • Karma: +0/-0
Buenas tardes. Yo quiero hacer lo mismo que en el archivo .pdf adjunto, y así compruebo que las funciones están bien. Pero claro yo sólo tengo que sacar la frecuencia angular (w), y me lío con eso de las dos ecuaciones (la del módulo y la del argumento). No sé si individualmente cada una debe de dar el mismo valor, o si hay que hacer algo más con las dos para que den un valor único... Perdón por mi ignorancia. Gracias.
PD. Añado mi sistema en .png

24 Mayo, 2022, 08:58 pm
Respuesta #8

susojuarez

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 19
  • País: es
  • Karma: +0/-0
¿Será esta la solución????
Sistema de ecuaciones con una incógnita.
Un sistema de inecuaciones con una incógnita está formado por dos o más inecuaciones con una
incógnita.
Para resolver un sistema de inecuaciones con una incógnita se resuelve cada inecuación por
separado y se busca la intersección de todas las soluciones.
La solución será un intervalo, una semirrecta o puede ocurrir que no haya solución
3x -12 = -3x
3x +15= 8x
Cada inecuación por separado:
3x- 12= -3x    3x +15= 8x
 3x + 3x= 12   3x - 8x = -15
6x = 12    -5x =15
 x =2     x = 3

25 Mayo, 2022, 10:08 am
Respuesta #9

susojuarez

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 19
  • País: es
  • Karma: +0/-0
Igual es que no está bien construido el sistema. Voy a revisarlo.