一元N次方程的字符串形式导数输出

 

代码如下  。。。。。。。。。网上给出的求导数的方法是数值方法,这个方法是字符串方法

public class SystemMathTools {

    /*

     *  还不是很完善,需要进一步修改。。。
     *
     *  x*x+3*x+1
     *  一元N次方程组的导数,给出字符串变量的导数形式,用导数公式来生成导数
     *
     *  DerivedFunction(原函数)
     *  输出 导数函数
     *  n*x*x+n*x+1 类似这种一元N次方程的导数,先计算出指数,在进行求导公式演算
     *
     *  1:  分割字符串,读出子字符串
        2: 读入子字符串,统计变量X相乘的个数是几个?统计出指数
     *  3:  用指数乘以子字符串,然后删除一个变量X,形成子串导数
     *  4: 用新的子串导数替换原来的子串函数
     *
     *
     */
    public static int counter(String string, String a) {
        int m;
        int i = string.length() - string.replace(a, "").length();
        m = i / a.length();
        //   System.out.println("x指数为:" + m);
        return m;
    }

    public static String deleteString(String str1, String str2) {

        StringBuffer sb = new StringBuffer(str1);
        String str3;

        int index = sb.indexOf(str2);

        if (index == -1) {
        }

        str3 = sb.delete(index, index + str2.length()).toString();

        return str3;



    }

    public static void main(String[] args) {

        String str = "n*x*x+n*x-1";//一元二次方程组
        System.out.println("原函数为:"+str);
        String[] strArray = str.split("\\+|\\-");//分割为子串,以便分别求导

        System.out.println(strArray[0].trim() + " x指数为:" + counter(strArray[0].trim(), "x"));
        System.out.println(strArray[1].trim() + " x指数为:" + counter(strArray[1].trim(), "x"));
        System.out.println(strArray[2].trim() + " x指数为:" + counter(strArray[2].trim(), "x"));

        String str1 = counter(strArray[0].trim(), "x") + deleteString(strArray[0].trim(),"x");
        String str2 = counter(strArray[1].trim(), "x") + deleteString(strArray[1].trim(),"x");
   
        String str3 = deleteString(str1,"*");
        System.out.println("子串导数为"+str3);
        
        String str4 = deleteString(str2,"*");
        System.out.println("子串导数为:"+str4);

        System.out.println("导数为:"+str3+"+"+str4);
        
    }
}

猜你喜欢

转载自www.cnblogs.com/comsci/p/10348137.html