clear; clc; close all; % 设出圆锥曲线方程 F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4)*x(:,1)+p(5)*x(:,2)+p(6); % 离散数据点 x1=[2762 2754 2745 2735 2723 2710 2695 2679 2661 2643 2623 2602 2580 2557 2532 2507 2481 2454 2425 2396 2367 2336 2305 2273 2240 2207 2173 2138 2103 2068 2032 1995 1959 1921 1 8 8 4 1 8 4 6 1 8 0 7 1 7 6 9 1 7 3 0 1 6 9 1 1 6 5 2 1 6 1 3 1 5 7 3 1 5 3 4 1 4 9 4 1 4 5 4 1 4 1 5 1 3 7 5 1 3 3 6 1 2 9 6 1 2 5 6 1 2 1 7 1 1 7 8 1 1 3 9 1 1 0 0 1 0 6 1 1 0 2 3 9 8 5 9 4 7 9 1 0 8 7 3 8 3 6 8 0 0 7 6 4 7 2 9 6 9 4 6 6 0 6 2 6 5 9 3 5 6 1 5 2 9 4 9 9 4 6 8 4 3 9 4 1 0 3 8 3 3 5 6 3 3 0 3 0 5 2 8 1 2 5 9 2 3 7 2 1 6 1 9 7 1 7 9 1 6 2 1 4 6 1 3 2 1 1 9 1 0 7 9 7 8 9 8 2 7 6 7 2 7 0 6 9 7 0 7 3 7 7 8 4 9 2 1 0 2 1 1 3 1 2 7 1 4 3 1 6 0 1 7 9 2 0 1 2 2 4 2 4 9 2 7 6 3 0 4 3 3 5 3 6 7 4 0 1 4 3 8 4 7 5 5 1 4 5 5 5 5 9 8 6 4 2 6 8 7 7 3 4 7 8 2 8 3 2 8 8 2 9 3 3 9 8 6 1 0 3 9 1 0 9 3 1 1 4 8 1 2 0 3 1 2 5 9 1 3 1 5 1 3 7 1 1 4 2 7 1 4 8 4 1 5 4 0 1 5 9 6 1 6 5 2 1 7 0 7 1 7 6 1 1 8 1 5 1 8 6 8 1 9 2 1 1 9 7 2 2 0 2 2 2 0 7 2 2 1 2 0 2 1 6 6 2 2 1 2 2 2 5 5 2 2 9 7 2 3 3 9 2 3 7 8 2 4 1 5 2 4 5 0 2 4 8 4 2 5 1 6 2 5 4 7 2 5 7 5 2 6 0 2 2 6 2 6 2 6 4 9 2 6 7 0 2689 2706 2722 2735 2746 2756 2764 2770 2774 2776 2777 2776 2773 2769 ]; y1=[1792 1786 1781 1775 1769 1764 1758 1753 1747 1742 1737 1732 1727 1722 1717 1713 1708 1704 1700 1696 1692 1688 1684 1681 1677 1674 1671 1668 1665 1 6 6 3 1 6 6 0 1 6 5 8 1 6 5 5 1 6 5 3 1 6 5 1 1 6 5 0 1 6 4 8 1 6 4 6 1 6 4 5 1 6 4 4 1 6 4 3 1 6 4 2 1 6 4 1 1 6 4 0 1 6 4 0 1 6 4 0 1 6 3 9 1 6 3 9 1 6 4 0 1 6 4 0 1 6 4 0 1 6 4 1 1 6 4 1 1 6 4 2 1 6 4 3 1 6 4 4 1 6 4 6 1 6 4 7 1 6 4 9 1 6 5 1 1 6 5 2 1 6 5 4 1 6 5 7 1 6 5 9 1 6 6 1 1 6 6 4 1 6 6 7 1 6 7 0 1 6 7 3 1 6 7 6 1 6 7 9 1 6 8 3 1 6 8 6 1 6 9 0 1 6 9 4 1 6 9 8 1 7 0 2 1 7 0 6 1 7 1 1 1 7 1 5 1 7 2 0 1 7 2 5 1 7 3 0 1 7 3 5 1 7 4 0 1 7 4 5 1 7 5 0 1 7 5 6 1 7 6 1 1 7 6 7 1 7 7 3 1 7 7 8 1 7 8 4 1 7 9 0 1 7 9 6 1 8 0 2 1 8 0 8 1 8 1 4 1 8 2 1 1 8 2 7 1 8 3 3 1 8 3 9 1 8 4 5 1 8 5 2 1 8 5 8 1 8 6 4 1 8 7 0 1 8 7 7 1 8 8 3 1 8 8 9 1 8 9 5 1 9 0 0 1 9 0 6 1 9 1 2 1 9 1 7 1 9 2 3 1 9 2 8 1 9 3 3 1 9 3 8 1 9 4 2 1 9 4 7 1 9 5 1 1 9 5 5 1 9 5 9 1 9 6 3 1 9 6 6 1 9 7 0 1 9 7 2 1 9 7 5 1 9 7 7 1 9 7 9 1 9 8 1 1 9 8 3 1 9 8 4 1 9 8 5 1 9 8 5 1 9 8 6 1 9 8 6 1 9 8 5 1 9 8 5 1 9 8 4 1 9 8 3 1 9 8 1 1 9 8 0 1 9 7 8 1 9 7 5 1 9 7 3 1 9 7 0 1 9 6 7 1 9 6 3 1 9 6 0 1 9 5 6 1 9 5 2 1 9 4 8 1 9 4 3 1 9 3 8 1 9 3 4 1 9 2 9 1 9 2 3 1 9 1 8 1 9 1 3 1907 1901 1896 1890 1884 1878 1872 1866 1859 1853 1847 1841 1835 1828 1822 1816 1810 1804 1798 ] x=[x1,y1] p0=[1 1 1 1 1 1]; warning off % 拟合系数,最小二乘方法 p=nlinfit(x,zeros(size(x,1),1),F,p0); plot(x(:,1),x(:,2),'ro'); hold on; xmin=min(x(:,1)); xmax=max(x(:,1)); ymin=min(x(:,2)); ymax=max(x(:,2)); % 作图 ezplot(@(x,y)F(p,[x,y]),[-1+xmin,1+xmax,-1+ymin,1+ymax]); title('曲线拟合'); legend('样本点','拟合曲线')