权那他

27 分类: 数学

MathFAL一个数学计算验证机制

MathFAL

MathFAL一个数学计算验证机制

目前仅写了对幂函数求导
以后相继写出对数、指数、三角函数、甚至复合函数求导极限计算多远函数的偏导数计算、说不定还有解微分方程

Mathematical Derivative Verification Code of the Math Function and Limit

启发

相继看到 树洞的 化学式/历史上的今天验证码开源
引发了我写一个验证码,不过我无比喜欢数学,所有写了一个用数学导数的验证码。
这可能导致学历非高中生及其以上的了无法答对。也算是个过滤器吧!!!!

从而写了个JavaScript的验证

目前构建函数的机制


/* 创建幂函数 简单型 */
    function powerCreate(array) {
        var coefficient, //系数
            frequency, //次数
            powerArray; //加入数组
        coefficient = randomNum(array[1], array[0]); /* 0的概率极小 */
        frequency = randomNum(array[3], array[2]);
        powerArray = [coefficient,frequency];
        return powerArray; //抛出
    }
    /* 幂函数 求导法则 */
    function derivationPower(array) {
        var coe = array[0], //系数
            fre = array[1], //次数
            powDer; //加入数组
        coe = coe * fre;
        fre = fre>0?fre-1:-1;
        powDer = [coe,fre];
        return powDer;
    }
    /* 计算幂函数结果 */
    function calculationPower(array,x,rank) {
        var cal = Number(0),
            val = new Array();
        for(var index in array){
            /* 幂函数高阶求导 */
            var oneFor = array[index];
            for (var i=0;i<rank;i++) {
                oneFor = derivationPower(oneFor);
            }
            val[index] = oneFor;
            /* 赋值运算 */
            var coe = Number(val[index][1])>=0?Number(1):Number(0);
            for (var i=0;i< Number(val[index][1]);i++) {
                coe *= Number(x);
            }
            /* 累加运算 */
            cal += Number(val[index][0]) * Number(coe);
        }
        return cal;
    }

下载

欢迎fork
Github kraityMathfal

预览

https://lib.krait.cn/library/mathfal/0.1/demo.html

使用方法

  • 引入 mathfal.js

<script src="https://lib.krait.cn/library/mathfal/0.1/mathfal.js"></script>
  • 进行初始化 new 一个对象
    注意 验证机制需要结合自己的页面方案,下面仅对结果进行验证

var mathfal = new mathfal({
        identity:{
            id: "mathfal_container",
            canvasId: "mathfal_canvas"
        }
    });
    document.getElementById("mathfal_button").onclick = function(){
        var mathfalValue = mathfal.validate(document.getElementById("mathfal_input").value);
        if(mathfalValue){
                alert("求导计算正确");
        }else{
                alert("求导计算错误");
        }
    }
  • 在需要处加入,需结合自己的结构进行美化

    
    <div id="mathfal_container"></div>
    <input id="mathfal_input" value="" type="text" required/>
    <button id="mathfal_button">核对</button>

FORK

欢迎FORK哦!

#数学

作者: 权那他

版权: 除特别声明,均采用BY-NC-SA 4.0许可协议,转载请表明出处

目录Content

已有 3 条评论

  1. 可能我需要先new一个对象 :smile:

    1. 可以先实例化。

      1. 主观能动性 主观能动性

        精辟
        0 error(s), 0 warning(s)

评论