Changeset 3070 for trunk/doc/pslib/psLibADD.tex
- Timestamp:
- Jan 21, 2005, 3:59:10 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/doc/pslib/psLibADD.tex (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/doc/pslib/psLibADD.tex
r2779 r3070 1 %%% $Id: psLibADD.tex,v 1.5 6 2004-12-21 21:37:08 price Exp $1 %%% $Id: psLibADD.tex,v 1.57 2005-01-22 01:57:42 eugene Exp $ 2 2 \documentclass[panstarrs]{panstarrs} 3 3 … … 1646 1646 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1647 1647 1648 \subs ubsection{Missing and Todo}1648 \subsection{Missing and Todo} 1649 1649 1650 1650 \tbd{define SINC, LAGRANGE interpolation} … … 1659 1659 1660 1660 \tbd{define Brent's method \& minimization bracketing} 1661 1662 \section{Pan-STARRS Modules} 1663 1664 \subsection{Object Models} 1665 1666 \subsubsection{Real 2D Gaussian} 1667 1668 This function is a two-dimensional Gaussian with an elliptical 1669 cross-section and a constant local background: 1670 \[ 1671 f(x,y) = Z_o e^{-z} + S_o 1672 \] 1673 where 1674 \[ 1675 z = \frac{(x - x_o)^2}{2\sigma_x^2} + \frac{(y-y_o)^2}{2\sigma_y^2} + (x-x_o) (y - y_o) \sigma_{xy} 1676 \] 1677 1678 Below is the relationship between the \code{psModel} parameters and 1679 the function parameters, sample C-code implementing the function 1680 efficiently, and the value of the derivatives: 1681 1682 \begin{verbatim} 1683 param[0] = So; 1684 param[1] = Zo; 1685 param[2] = Xo; 1686 param[3] = Yo; 1687 param[4] = sqrt(2) / SigmaX; 1688 param[5] = sqrt(2) / SigmaY; 1689 param[6] = Sxy; 1690 1691 X = x[0] - param[2]; 1692 Y = x[1] - param[3]; 1693 1694 px = param[4]*X; 1695 py = param[5]*Y; 1696 1697 z = 0.5*SQ(px) + 0.5*SQ(py) + param[6]*X*Y; 1698 r = exp(-z); 1699 f = param[1]*r + param[0]; 1700 /* f is the function value */ 1701 1702 q = param[1]*r; 1703 deriv[0] = +1; 1704 deriv[1] = +r; 1705 deriv[2] = q*(2*px*param[4] + param[6]*Y); 1706 deriv[3] = q*(2*py*param[5] + param[6]*X); 1707 deriv[4] = -2*q*px*X; 1708 deriv[5] = -2*q*py*Y; 1709 deriv[6] = -q*X*Y; 1710 \end{verbatim} 1711 1712 The intial guess for the Gaussian parameters may be taken from the 1713 moments, peak value, and local sky. 1714 1715 \subsubsection{Pseudo-Gaussian} 1716 1717 This function is a polynomial approximation of a 2D Gaussian. The 1718 function is very similar to the real Gaussian: 1719 \[ 1720 f(x,y) = Z_o (1 + z + z^2/2 + z^3/6)^{-1} + S_o 1721 \] 1722 where 1723 \[ 1724 z = \frac{(x - x_o)^2}{2\sigma_x^2} + \frac{(y-y_o)^2}{2\sigma_y^2} + (x-x_o) (y - y_o) \sigma_{xy} 1725 \] 1726 1727 Below is the relationship between the \code{psModel} parameters and 1728 the function parameters, sample C-code implementing the function 1729 efficiently, and the value of the derivatives: 1730 1731 \begin{verbatim} 1732 param[0] = So; 1733 param[1] = Zo; 1734 param[2] = Xo; 1735 param[3] = Yo; 1736 param[4] = sqrt(2) / SigmaX; 1737 param[5] = sqrt(2) / SigmaY; 1738 param[6] = Sxy; 1739 1740 X = x[0] - param[2]; 1741 Y = x[1] - param[3]; 1742 1743 px = param[4]*X; 1744 py = param[5]*Y; 1745 1746 z = 0.5*SQ(px) + 0.5*SQ(py) + param[6]*X*Y; 1747 t = 1 + z + 0.5*z*z; 1748 r = 1.0 / (t*(1 + z/3)); /* ~ exp (-Z) */ 1749 f = param[1]*r + param[0]; 1750 /* f is the function value */ 1751 1752 /* note difference from a pure gaussian: q = param[1]*r */ 1753 q = param[1]*r*r*t; 1754 deriv[0] = +1; 1755 deriv[1] = +r; 1756 deriv[2] = q*(2*px*param[4] + param[6]*Y); 1757 deriv[3] = q*(2*py*param[5] + param[6]*X); 1758 deriv[4] = -2*q*px*X; 1759 deriv[5] = -2*q*py*Y; 1760 deriv[6] = -q*X*Y; 1761 \end{verbatim} 1762 1763 The intial guess for the Gaussian parameters may be taken from the 1764 moments, peak value, and local sky. 1765 1766 \subsubsection{Waussian} 1767 1768 The Waussian is a modified polynomial approximation of a 2D Gaussian, 1769 with non-linear polynomial terms having variable coefficients, rather 1770 than the Taylor series values of 1/2 and 1/6. The 1771 function is very similar to the pseudo-Gaussian: 1772 \[ 1773 f(x,y) = Z_o (1 + z + B_2 (z^2/2 + B_3 z^3/6))^{-1} + S_o 1774 \] 1775 where 1776 \[ 1777 z = \frac{(x - x_o)^2}{2\sigma_x^2} + \frac{(y-y_o)^2}{2\sigma_y^2} + (x-x_o) (y - y_o) \sigma_{xy} 1778 \] 1779 1780 Below is the relationship between the \code{psModel} parameters and 1781 the function parameters, sample C-code implementing the function 1782 efficiently, and the value of the derivatives. Note the fudge factors 1783 of 100 in the derivatives of $B_2$ and $B_3$: these are included to 1784 slow the variation of these parameters, which are otherwise very 1785 sensitive to small errors. 1786 1787 \begin{verbatim} 1788 param[0] = So; 1789 param[1] = Zo; 1790 param[2] = Xo; 1791 param[3] = Yo; 1792 param[4] = Sx; 1793 param[5] = Sy; 1794 param[6] = Sxy; 1795 param[7] = B2; 1796 param[8] = B3; 1797 1798 X = x - param[2]; 1799 Y = y - param[2]; 1800 1801 px = param[4]*X; 1802 py = param[5]*Y; 1803 1804 z = 0.5*SQ(px) + 0.5*SQ(py) + param[6]*X*Y; 1805 t = 0.5*z*z*(1 + param[8]*z/3); 1806 r = 1.0 / (1 + z + param[7]*t); /* ~ exp (-Z) */ 1807 f = param[1]*r + param[0]; 1808 1809 /* note difference from gaussian: q = param[1]*r */ 1810 q = param[1]*r*r*(1 + param[7]*z*(1 + param[8]*z/2)); 1811 deriv[0] = +1; 1812 deriv[1] = +r; 1813 deriv[2] = q*(2*px*param[4] + param[6]*Y); 1814 deriv[3] = q*(2*py*param[5] + param[6]*X); 1815 deriv[4] = -2*q*px*X; 1816 deriv[5] = -2*q*py*Y; 1817 deriv[6] = -q*X*Y; 1818 deriv[7] = -100*param[1]*r*r*t; 1819 deriv[8] = -100*param[1]*r*r*param[7]*(z*z*z)/6; 1820 /* the values of 100 dampen the swing of param[7,8] */ 1821 \end{verbatim} 1822 1823 \subsubsection{Twisted Gaussian} 1824 1825 This function describes an object with power-law wings and a flattened 1826 core, where the core has a different contour from the wings. 1827 1828 \[ 1829 f(x,y) = Z_{\rm pk} (1 + z_1 + z_2^M)^{-1} + Sky 1830 \] 1831 where 1832 \[ 1833 z_1 = \frac{x^2}{2\sigma_{x,in}^2} + \frac{y^2}{2\sigma_{y,in}^2} + x y \sigma_{xy,in} 1834 z_2 = \frac{x^2}{2\sigma_{x,out}^2} + \frac{y^2}{2\sigma_{y,out}^2} + x y \sigma_{xy,out} 1835 \] 1836 1837 \begin{verbatim} 1838 param[0] = So; 1839 param[1] = Zo; 1840 param[2] = Xo; 1841 param[3] = Yo; 1842 param[4] = SxInner; 1843 param[5] = SyInner; 1844 param[6] = SxyInner; 1845 param[7] = SxOuter; 1846 param[8] = SyOuter; 1847 param[9] = SxyOuter; 1848 param[10] = N; 1849 1850 X = x - param[2]; 1851 Y = y - param[3]; 1852 1853 px1 = param[4]*X; 1854 py1 = param[5]*Y; 1855 px2 = param[7]*X; 1856 py2 = param[8]*Y; 1857 1858 z1 = 0.5*SQ(px1) + 0.5*SQ(py1) + param[4]*X*Y; 1859 z2 = 0.5*SQ(px2) + 0.5*SQ(py2) + param[9]*X*Y; 1860 1861 r = 1.0 / (1 + z1 + pow(z2,param[10])); 1862 f = param[5]*r + param[6]; 1863 1864 q1 = param[5]*SQ(r); 1865 q2 = param[5]*SQ(r)*param[10]*pow(z2,(param[10]-1)); 1866 1867 deriv[0] = +1; 1868 deriv[1] = +r; 1869 deriv[2] = q1*(2*px1*param[4] + param[6]*Y) + q2*(2*px2*param[7] + param[9]*Y); 1870 deriv[3] = q1*(2*py1*param[5] + param[6]*X) + q2*(2*py2*param[8] + param[9]*X); 1871 1872 /* these fudge factors impede the growth of param[4] beyond param[7] */ 1873 f1 = fabs(param[7]) / fabs(param[4]); 1874 f2 = (f1 < FSCALE) ? 1 : FFACTOR*(f1 - FSCALE) + 1; 1875 deriv[4] = -2*q1*px1*X*f2; 1876 1877 /* these fudge factors impede the growth of param[5] beyond param[8] */ 1878 f1 = fabs(param[8]) / fabs(param[5]); 1879 f2 = (f1 < FSCALE) ? 1 : FFACTOR*(f1 - FSCALE) + 1; 1880 deriv[5] = -2*q1*py1*Y*f2; 1881 1882 deriv[6] = -q1*X*Y; 1883 1884 deriv[7] = -2*q2*px2*X; 1885 deriv[8] = -2*q2*py2*Y; 1886 deriv[9] = -q2*X*Y; 1887 deriv[10] = -q1*ln(z2); 1888 \end{verbatim} 1889 1890 The intial guess for the Gaussian parameters may be taken from the 1891 moments, peak value, and local sky. 1892 1893 \tbd{future galaxy models to be implemented} 1894 1895 \begin{verbatim} 1896 float Sersic() 1897 param[0] = So; 1898 param[1] = Zo; 1899 param[2] = Xo; 1900 param[3] = Yo; 1901 param[4] = Sx; 1902 param[5] = Sy; 1903 param[6] = Sxy; 1904 param[7] = Nexp; 1905 1906 float SersicBulge() 1907 param[0] So; 1908 param[1] Zo; 1909 param[2] Xo; 1910 param[3] Yo; 1911 param[4] SxInner; 1912 param[5] SyInner; 1913 param[6] SxyInner; 1914 param[7] Zd; 1915 param[8] SxOuter; 1916 param[9] SyOuter; 1917 param[10] = SxyOuter; 1918 param[11] = Nexp; 1919 \end{verbatim} 1661 1920 1662 1921 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Note:
See TracChangeset
for help on using the changeset viewer.
