summaryrefslogtreecommitdiff
path: root/help/en_US/lsqnonneg.xml
blob: 5d78bbd2b72146a326b5ef217206d3790a759913 (plain)
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?xml version="1.0" encoding="UTF-8"?>

<!--
 *
 * This help file was generated from lsqnonneg.sci using help_from_sci().
 *
 -->

<refentry version="5.0-subset Scilab" xml:id="lsqnonneg" xml:lang="en"
          xmlns="http://docbook.org/ns/docbook"
          xmlns:xlink="http://www.w3.org/1999/xlink"
          xmlns:svg="http://www.w3.org/2000/svg"
          xmlns:ns3="http://www.w3.org/1999/xhtml"
          xmlns:mml="http://www.w3.org/1998/Math/MathML"
          xmlns:scilab="http://www.scilab.org"
          xmlns:db="http://docbook.org/ns/docbook">

  <refnamediv>
    <refname>lsqnonneg</refname>
    <refpurpose>Solves nonnegative least-squares curve fitting problems.</refpurpose>
  </refnamediv>


<refsynopsisdiv>
   <title>Calling Sequence</title>
   <synopsis>
   xopt = lsqnonneg(C,d)
   xopt = lsqnonneg(C,d,param)
   [xopt,resnorm,residual,exitflag,output,lambda] = lsqnonneg( ... )
   
   </synopsis>
</refsynopsisdiv>

<refsection>
   <title>Parameters</title>
   <variablelist>
   <varlistentry><term>C :</term>
      <listitem><para> a matrix of double, represents the multiplier of the solution x in the expression C*x - d. Number of columns in C is equal to the number of elements in x.</para></listitem></varlistentry>
   <varlistentry><term>d :</term>
      <listitem><para> a vector of double, represents the additive constant term in the expression C*x - d. Number of elements in d is equal to the number of rows in C matrix.</para></listitem></varlistentry>
   <varlistentry><term>xopt :</term>
      <listitem><para> a vector of double, the computed solution of the optimization problem.</para></listitem></varlistentry>
   <varlistentry><term>resnorm :</term>
      <listitem><para> a double, objective value returned as the scalar value norm(C*x-d)^2.</para></listitem></varlistentry>
   <varlistentry><term>residual :</term>
      <listitem><para> a vector of double, solution residuals returned as the vector d-C*x.</para></listitem></varlistentry>
   <varlistentry><term>exitflag :</term>
      <listitem><para> A flag showing returned exit flag from Ipopt. It could be 0, 1 or 2 etc. i.e. Optimal, Maximum Number of Iterations Exceeded, CPU time exceeded. Other flags one can see in the lsqlin macro.</para></listitem></varlistentry>
   <varlistentry><term>output :</term>
      <listitem><para> Structure containing information about the optimization. This version only contains number of iterations.</para></listitem></varlistentry>
   <varlistentry><term>lambda :</term>
      <listitem><para> Structure containing the Lagrange multipliers at the solution xopt. It contains lower, upper bound multiplier and linear equality, inequality constraint multiplier.</para></listitem></varlistentry>
   </variablelist>
</refsection>

<refsection>
   <title>Description</title>
   <para>
Solves nonnegative least-squares curve fitting problems specified by :
   </para>
   <para>
<latex>
\begin{eqnarray}
&amp;\mbox{min}_{x}
&amp; 1/2||C⋅x - d||_2^2  \\
&amp; &amp; x \geq 0 \\
\end{eqnarray}
</latex>
   </para>
   <para>
The routine calls Ipopt for solving the nonnegative least-squares curve fitting problems, Ipopt is a library written in C++.
   </para>
   <para>
</para>
</refsection>

<refsection>
   <title>Examples</title>
   <programlisting role="example"><![CDATA[
// A basic lsqnonneg problem
C = [1 1 1;
1 1 0;
0 1 1;
1 0 0;
0 0 1]
d = [89;
67;
53;
35;
20;]
[xopt,resnorm,residual,exitflag,output,lambda] = lsqnonneg(C,d)
   ]]></programlisting>
</refsection>

<refsection>
   <title>Authors</title>
   <simplelist type="vert">
   <member>Harpreet Singh</member>
   </simplelist>
</refsection>
</refentry>