关于自动解题机的设计的一些思路

   

    线性方程组可以用矩阵来模拟计算,但是如果不是线性方程组呢?是高次的方程呢?矩阵怎么解呢?
    带高次元的大规模矩阵的自动解,需要怎么样的算法和数据结构呢?


    这种用矩阵来解线性方程组的方法并不适用于拓扑分析里面的数值问题,一个特定的拓扑结构

    要对应一个特定的物理结构,是不能够做变换的,变换以后,物理模型就是失去原来的结构了

    这样解出来的数值结果,显然就不对了。。。。

   

    把一个矩阵变换为上下三角阵,然后把对角线的元素全部进行阶乘,求出矩阵值,但是拓扑矩阵的元素
    不能够进行这种变换,一旦进行变换,拓扑结构就发生变化了,旧的架构将失去作用,显然不行

    

     

  String  FunctionA = "a*(X*X)+b*(Y*Y)=c";
  String  FunctionB = "m*(X*X)+n*(Y*Y)=d";

  /* FA变换为 a*(X*X) = c-b*(Y*Y)
             (X*X) = (c-b*(Y*Y))/a
   *          X = ((c-b*(Y*Y))/a)
   *
   * 字符串位移和消除
   *
   * FB代入变换为  m*((c-b*(y*y))/a)+n*(y*y)=d
   * 再次变换     ((m*c) - (m*b*(y*y)))/a + n*(y*y) =d
   *              a*((m*c) - (m*b*(y*y))) + a*n*(y*yY) = a*d
   *              a*m*c - a*(m*b*(y*y)) + a*n*(y*y) = a*d
   *              (y*y)(((a*n)-(a*m*b))) + a*m*c = a*d
   *              (y*y) = ((a*d) - (a*m*c))/((a*n)-(a*m*b))
   *               y= (((a*d) - (a*m*c))/((a*n)-(a*m*b)))@@2 (开平方)
   *  
     代入计算,得到结果
   *
   * 有十几个字符串变换过程,很容易出错,人工识别肯定会出问题,必须有一个
   * 很完善的机器识别算法
   *
   * 本质上是一种字符串变换 需要一个普适性的带状态参数的英文符号自动机-类编译算法
   * 状态参数符号自动机 设计  更加灵活的设计 更加具有普适性的设计
   *
   * 这个算法要实现这样一个目标:通过扫描图像或者键盘输入一组方程式和参数,并不经过
   * 任何代码设计过程,就完全自动解出数值解,中间过程全部由计算机自动完成

  

 * 不用高斯消元法,而直接用传统的迭代消元法来解N元N次方程组
 * 构造自动解题算法  2018.7.2
 *
 * aX^2+bY^2=c
 * dX^2+kY^2=s
 *
 * 自动移项,自动相除,自动代入
 * 用自动迭代算法,消去X
 * 然后生成一元方程,用实时编译器自动计算
 * 方程组字符串处理函数
 * 伪代码算法设计:
 *
 *    扫描方程字符串,确定等号和等号后面的参数的位置
 *    扫描方程字符串,确定X的次数和系数的位置
 *
 *    将不属于X变量项目的且在等号前面的字符串项移动到等号和等号后面的参数以后,且变号
 *    在上述过程完成之后,对等号后面的字符串加括号
 *
 *    将X变量的系数除到等号后面的字符串中,且加上除号字符串,再次在等号后面和被除数后面加上括号
 *    根据X变量的冥指数,对等号后面的字符串(包括除号和被除数)进行开N次方处理
 *
 *    获得以Y表示的X变量字符串
 *
 *    将上述字符串代入方程式2,获得一元二次方程组
 *    调用迭代法和牛顿法求解该方程
 *
 *    将Y值带回方程1,求解X值

猜你喜欢

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