File: fsolve-2.m

package info (click to toggle)
octave2.1 1%3A2.1.73-13
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 37,028 kB
  • ctags: 20,874
  • sloc: cpp: 106,508; fortran: 46,978; ansic: 5,720; sh: 4,800; makefile: 3,186; yacc: 3,132; lex: 2,892; lisp: 1,715; perl: 778; awk: 174; exp: 134
file content (48 lines) | stat: -rw-r--r-- 824 bytes parent folder | download | duplicates (9)
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
x_opt = [ -0.767297326653401;
           0.590671081117440;
           1.47190018629642;
          -1.52719341133957 ];

tol = 1.0e-5;

function retval = f (p)

  x = p(1);
  y = p(2);
  z = p(3);
  w = p(4);

  retval = zeros (4, 1);

  retval(1) = 3*x + 4*y + exp (z + w) - 1.007;
  retval(2) = 6*x - 4*y + exp (3*z + w) - 11;
  retval(3) = x^4 - 4*y^2 + 6*z - 8*w - 20;
  retval(4) = x^2 + 2*y^3 + z - w - 4;

end

[x, info] = fsolve ("f", [-1, 1, 2, -1]);

val = f (x);

info_bad = (info != 1);
solution_bad = sum (abs (x - x_opt) > tol);
value_bad = sum (abs (val) > tol);

if (info_bad)
  printf ("info bad\n");
else
  printf ("info good\n");
endif

if (solution_bad)
  printf ("solution bad\n");
else
  printf ("solution good\n");
endif

if (value_bad)
  printf ("value bad\n");
else
  printf ("value good\n");
endif