不好意思,又来向大家请教符号矩阵的问题,前一段时间请教了相关的问题,已经有高手提供了具体的代码,见:
符号运算中的正则表达式问题(Java中),链接是:http://topic.csdn.net/u/20090921/09/3cf6b30f-0047-4b08-a8cc-594bfad2df4f.html
在那里bigbug9002在17楼给了一个修改好的代码,可以实现符号矩阵的相乘问题。
现在的新问题是,当实现矩阵求逆时,会出现类似:1/(2+3x-5x^2)这样的一元多项式,这样的式子中多了括号除号,同时出现了分母,一元多项式出现在分母的位置,
这样的符号表达式该如何用正则表达式split呢,又该如何实现这样的符号矩阵的相加和相乘呢?
解决这个问题需要很好的正则表达式功力,盛邀各位高手来解决!同时盛邀bigbug9002大虾进一步来指导。这个问题解决了,对实现用JAVA语言编写符号矩阵问题非常有指导作用,会造福所有JAVA程序爱好者的。
小虾恭迎各位指导......

解决方案 »

  1.   

    fdl0112对正则表达式很有激情啊
    祝福
    本人做应用开发的
    实在没时间
    关注中
      

  2.   

    你要用正则表达式来解析算示表达式?我看还是算了吧,正则表达式不是语法分析器,做不到的,建议你可以看看语法分析工具 ANTLR
      

  3.   

    Java 中的正则表达式没有 .NET 中平衡组的概念,所以也不能支持嵌套结构的括号什么的,所以在 Java 中使用正则表达式来分析或者解析是做不到的!
      

  4.   

    造福所有JAVA程序爱好者的..
    这么伟大,得帮着顶啊
      

  5.   

    同8楼看法。lz的思路有点不当。建议用语法解析的角度去解决。推荐CUP.
      

  6.   

    正则表达式功能很强大,只要愿意花心思和时间,应该可以做到,在符号运算中的正则表达式问题(Java中),链接是:http://topic.csdn.net/u/20090921/09/3cf6b30f-0047-4b08-a8cc-594bfad2df4f.html 中已经有了个很好的开端了,现在需要继续深入下去。建议大家有时间把那个帖子17楼的代码看看,看需要如何添加修改。
    语法分析器好像用javaCC的多吧。如果用语法分析器的话,该如何解决我提出的问题呢,欢迎擅长语法分析器的大虾们来给个尝试啊。
      

  7.   

    这两天一直在查阅有关正则表达式和JAVACC的资料,发现用JAVACC处理起来可能需要更多的时间,难度更大。还是用正则表达式处理要好一些。关于除法我是这么想着,把分母从矩阵中提取出来,然后把各个矩阵的分母部分按照一元多项式乘法来处理,把提取分母后转化好的分子部分构成的矩阵按正常矩阵相乘来处理。
    从数学的角度来说,最后由分子构成的结果矩阵1和由分母构成的结果矩阵2是“等价”的(我的意思是两个矩阵都是一元多项式),整个分式需要最后的约分,化简等处理。但是从工程应用的角度来说,我只需要分子构成的结果矩阵1,而分母构成的结果矩阵2会导致分母为0这样的错误,在工程上对应的是“奇点”。当然这些东西学工科的人很容易理解,只学计算机的朋友估计看起来有难度。
    所以对我要解决的工程问题而言,即使不解决分式的一元多项式矩阵相乘的问题我也有对策了。但是我还是期待有高手能把这个加入除法、分式的一元多项式问题给个解答。
    正如楼上所说的,多项式的除法实现起来困难重重,但我想问题一定是可以解决的,一旦解决就可以在数学的角度和编程的角度完成一元多项式矩阵的相乘问题,编程中涉及的各种正则表达式和编译原理的应用对所有JAVA学习者都是非常有用的。所以我还是很期待各位高手浮出水面,各抒己见。
      

  8.   

    嗯。
    关于矩阵的运算,我推荐使用MatLab来做。
    这样可以省去很多时间。
    如果楼主非要解决符号矩阵的运算问题,不妨看看MatLab。MatLab是一款数学方面的软件。
    除了某些常微分方程解不了,大学学的简单微积分,
    矩阵求解什么的,都能解。
    当然,要想使用它,你还要像学Java语言一样,学习它的语言。
    如果它还达不到要求,再试试Mathmatics软件。我很赞同楼上所说的话的。但是,自己大多数都比较懒。
    “多项式的除法实现起来困难重重,但我想问题一定是可以解决的,一旦解决就可以在数学的角度和编程的角度完成一元多项式矩阵的相乘问题,编程中涉及的各种正则表达式和编译原理的应用对所有JAVA学习者都是非常有用的。”
      

  9.   

    正则表达式中对于符号的表示是“//p{Punct}”,你可以试试把符号都用split消去。先给你这个,我记下这个帖子,帮你看看
      

  10.   

    用Matlab,或者Mathmatics,maple其实更适合求解符号矩阵的计算问题。在工程上有很多的软件和程序其实处理数值计算时都是用一种语言,比如用C++混编Matlab来完成的。但是其实Matlab中的matcom数值包也好,不外乎还是用Fortran语言或C语言编写下的。Java语言既然能与C,C++等相提并论,它本身就应该也能独立解决、独立编写数值计算包的。
    而我期待的就是用纯Java语言来编写我想要实现的算法程序,其中最主要的就是符号矩阵运算问题,不要混编其他成熟软件的计算包。希望各位Java爱好者能帮我一起解决我提出的问题。