Matlab - Resolución de sistema de ecuaciones

   
Vista:

Resolución de sistema de ecuaciones

Publicado por Dorian (1 intervención) el 20/01/2012 22:44:58
Hola muy buenas, estoy intentando resolver un sistema de ecuaciones con Matlab y estoy teniendo problemas.

Lo que yo introduzco:
>> syms x y
>> [x,y] = solve('760=exp((1-x)^2*(0.4623+0.2203*x))*exp(16.6513-(2940.46/(y-52.16)))','760=exp(0.3727*x^2+0.2203*x^3)*exp(15.9006-2788.51/(y-52.36))')

Pero lo único que obtengo es esto:

Warning: Explicit solution could not be found.
> In solve at 83

x =

[ empty sym ]


y =

[]

Un saludo y espero vuestras opiniones o soluciones.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO

Resolución de sistema de ecuaciones

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 21/01/2012 17:21:15
HOLA Dorian.
Revisa este artículo.
http://webdelprofesor.ula.ve/ingenieria/albertoq/resolver%20ecuaciones%20lineales%20y%20no%20lineales.pdf

el codigo newtonnl(f1,f2,X0,tol,mx)
que copio en el foro, es lo que encontré en este articulo, no es de mi autoria
.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
function sistema_no_lineal
% e1='760-exp((1-x)^2*(0.4623+0.2203*x))*exp(16.6513-(2940.46/(y-52.16)))
% e2='760-exp(0.3727*x^2+0.2203*x^3)*exp(15.9006-2788.51/(y-52.36))'
% [x,y] = solve(e1,e2,'x,y')
 
f1='760-exp((1-x)^2*(0.4623+0.2203*x))*exp(16.6513-(2940.46/(y-52.16)))';
F1=inline(vectorize(f1));
xa=-30:1:30; ya=-30:1:30; [x,y]=meshgrid(xa,ya);
f11=F1(x,y);
 
f22='760-exp(0.3727*x^2+0.2203*x^3)*exp(15.9006-2788.51/(y-52.36))';
F2=inline(vectorize(f22));
f22=F2(x,y);
 
contour(x,y,f11,[0,0],'k');
hold on;
grid on;
contour(x,y,f22,[0,0],'r');
hold off
clear all
syms x y
newtonnl(760-exp((1-x)^2*(0.4623+0.2203*x))*exp(16.6513-(2940.46/(y-52.16))),760-exp(0.3727*x^2+0.2203*x^3)*exp(15.9006-2788.51/(y-52.36)),[-7;-6],0.0001,10)
 
 
 
 function newtonnl(f1,f2,X0,tol,mx)
syms x y;
j=jacobian([f1;f2],[x y]);
% obtiene la matriz jacobiana para f1 y f2 en las variables x y y
F1=inline(char(f1),'x','y');
% los paremetros ’x’,’y’ permiten definir la función en terminos de dos variables
F2=inline(char(f2),'x','y');
J1=inline(char(j(1,1)),'x','y');
J2=inline(char(j(1,2)),'x','y');
J3=inline(char(j(2,1)),'x','y');
J4=inline(char(j(2,2)),'x','y');
% define cada función dependiente de las variables x y y
E=tol+1;
% inicializamos una variable para medir la distancia entre dos aporximaciones
% como tol+1 para que el cilo empiece
C=0;
% nos permite contar las iteraciones que vamos realizando de modo que no
% sobrecen a mx que es el número máximo de iteraciones.
F=zeros(2,1); J=zeros(2,2);
% inicializa el vector columna para que el producto este bien definido
% e inicializa la matriz jacobiana en ceros
while E>tol && C<mx
C=C+1; % cuenta la iteración
F(1)=F1(X0(1),X0(2)); F(2)=F2(X0(1),X0(2));
fprintf('n=%d x=%16.10f      y=%18.10f ',C,X0(1),X0(2));
 
%muestra paso de la iteracion, la aproximación para x y y
fprintf('  f1(x,y)=%12.5e   f2(x,y)=%12.5e \n',F(1),F(2))
%muestra el copmportamiento de las funciones del sistema (esperamos sean casi cero)
J(1,1)=J1(X0(1),X0(2)); J(1,2)=J2(X0(1),X0(2));
J(2,1)=J3(X0(1),X0(2)); J(2,2)=J4(X0(1),X0(2));
H=-J\F;
X1=X0+H;
E=norm(X1-X0);
X0=X1;
end
 
 
EJECUCION
>> sistema_no_lineal
n=1 x=   -7.0000000000      y=     -6.0000000000   f1(x,y)=7.59850e+002   f2(x,y)=1.69372e+002
n=2 x= 1994.8599806872      y= -66429.2712368832   f1(x,y)=        -Inf   f2(x,y)=        -Inf
Warning: Matrix is singular, close to singular or badly scaled. Results may be inaccurate. RCOND = NaN.
> In sistema_no_lineal>newtonnl at 57
  In sistema_no_lineal at 22



Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Profesor de Metodos Numericos con Matlab
Programador en Matlab
jjcc94@hotmail. com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar