⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d9r2.txt

📁 解具有导数的多元函数的无约束极小值点或具有导数的非线性方程组的近似解
💻 TXT
字号:
import java.text.*;
public class d9r2
{
	public static void main (String[] args)
	{
        //program d9r2
        //driver for routine lfit
        d9r2F g = new d9r2F();
		DecimalFormat form = new DecimalFormat("0.000000");
        int i, j, npt = 100;
        double chisq, spread = 0.1;
        int mfit, nterm = 3;
        double x[] = new double[101];
		double y[] = new double[101];
		double sig[] = new double[101];
		double a[] = new double[4];
		double covar[] = new double[10];
		int lista[] = new int[4];
        int idum = -911;
		chisq = 0.0;
        for (i = 1; i <= npt; i++)
		{
            x[i] = 0.1 * i;
            y[i] = nterm;
            for (j = nterm - 1; j >= 1; j--)
			{
                y[i] = j + y[i] * x[i];
            }
            y[i] = y[i] + spread * g.gasdev(idum);
			idum = g.gasdev_idum;
            sig[i] = spread;
        }
        mfit = nterm;
        for (i = 1; i <= mfit; i++)
		{
            lista[i] = i;
        }
        g.lfit(x, y, sig, npt, a, nterm, lista, mfit,covar, nterm, chisq);
		chisq = g.lift_chisq;
        System.out.println("Parameter               Uncertainty");
        for (i = 1; i <= nterm; i++)
		{
            System.out.print("a(" + i + ")= ");
            System.out.print(form.format(a[i]) + "  ");
            System.out.println(form.format(Math.sqrt(covar[(i - 1) * nterm + i])) + "   ");
        }
        System.out.println("Chi-squared =  " + form.format(chisq));
        System.out.println("Full covariance matrix");
        for (i = 1; i <= nterm; i++)
		{
            for (j = 1; j <= nterm; j++)
			{
                System.out.print(form.format(covar[(i - 1) * nterm + j]) + "   ");
            }
			System.out.println();
        }
        //now test the lista feature
        for (i = 1; i <= nterm; i++)
		{
            lista[i] = nterm + 1 - i;
        }
        g.lfit(x, y, sig, npt, a, nterm, lista, mfit, covar, nterm, chisq);
		chisq = g.lift_chisq;
        System.out.println("Parameter               Uncertainty");
        for (i = 1; i <= nterm; i++)
		{
            System.out.print("a(" + i + ")= ");
            System.out.print(form.format(a[i]) + "        ");
            System.out.println(form.format(Math.sqrt(covar[(i - 1) * nterm + i])) + "    ");
        }
        System.out.println("Chi-squared =  " + form.format(chisq));
        System.out.println("Full covariance matrix");
        for (i = 1; i <= nterm; i++)
		{
            for (j = 1; j <= nterm; j++)
			{
                System.out.print(form.format(covar[(i - 1) * nterm + j]) + "   ");
            }
            System.out.println();
        }
        //now check results of restricting fit parameters
        int ii = 1;
		int aaa;
        for (i = 1; i <= nterm; i++)
		{
            aaa = i - (int)(i / 2) * 2;
            if (aaa == 1)
			{
                lista[ii] = i;
                ii = ii + 1;
            }
        }
        mfit = ii - 1;
        g.lfit(x, y, sig, npt, a, nterm, lista, mfit, covar, nterm, chisq);
		chisq = g.lift_chisq;
        System.out.println("Parameter               Uncertainty");
        for (i = 1; i <= nterm; i++)
		{
            System.out.print("a(" + i + ")= ");
            System.out.print(form.format(a[i]) + "        ");
            System.out.println(form.format(Math.sqrt(covar[(i - 1) * nterm + i])) + "   ");
        }
        System.out.println("Chi-squared =  " + form.format(chisq));
        System.out.println("Full covariance matrix");
        for (i = 1; i <= nterm; i++)
		{
            for (j = 1; j <= nterm; j++)
            {
                System.out.print(form.format(covar[(i - 1) * nterm + j]) + "   ");
            }
			System.out.println();
        }
    }
}
public class d9r2F 
{
	void funcs(double x, double afunc[], int ma)
	{
        afunc[1] = 1.0;
        for(int i = 2; i <= ma; i++)
        {
            afunc[i] = x * afunc[i - 1];
		}
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -