如何解决R 中使用 rSymph
我需要在 R 控制台中使用 rSympy 执行符号矩阵乘法 Ry.Ry。
library(rSymPy)
Ry = matrix(c("c","-s","s","c"),2,byrow=1); Ry
########## I convert matrix in R to Python's format
# from https://stackoverflow.com/questions/39820161/handling-symbolic-matrices-in-r-as-in-matlab
# written by jav
mat2py <- function(x){
str = lapply(1:nrow(x),function(i)
paste0(x[i,],collapse = ","))
str = paste0("Matrix([",paste0("[",unlist(str),"]","),"])")
return (str)
}
mat2py(Ry)
cat(sympy(mat2py(Ry)),"\n")
得到如下错误信息:
.jcall 中的错误("RJavaTools","Ljava/lang/Object;","invokeMethod",cl,: 回溯(最近一次调用最后一次):文件“”,行 1、在NameError: name 'c' is not defined
解决方法
仍然收到错误消息。当我执行 cat(sympy("Ry*Ry"),"\n")
.jcall("RJavaTools","Z","hasField",.jcast(x,"java/lang/Object") 中的错误,: java.lang.NullPointerException #################### 下面是代码#############
library(rSymPy)
str1="c"
str2="-s"
str3="s"
str4="c"
str(str1)
P=matrix(c(str1,str2,str3,str4),2,byrow=1); P
Ry<-matrix(nrow=2,ncol=2)
for (i in 1:2){
for (j in 1:2) {
Ry[i,j] = paste0(P[i,j]) # Declare variable in matrix
first
}
}
Ry
mat2py <- function(x){
str = lapply(1:nrow(x),function(i) paste0(x[i,],collapse = ","))
str = paste0("Matrix([",paste0("[",unlist(str),"]","),"])")
return (str)
}
mat2py(Ry)
cat(sympy(mat2py(Ry)),"\n")
cat(sympy("Ry*Ry"),"\n")
,
遵循 rSymPy 的文档 - 您是否已经尝试使用此代码?
我不熟悉 rSymPy 包,但我认为有必要将您的变量 c
、-s
和 s
声明为 SymPy 变量。
library(rSymPy)
# create a SymPy variable called c
sympy("var('c')")
# create a SymPy variable called -s
sympy("var('-s')")
# create a SymPy variable called s
sympy("var('s')")
# Matrices are stored row by row (unlike R matrices)
cat(sympy("Ry = Matrix([[c,-s],[s,c]])"),"\n")
cat(sympy("Ry*Ry"),"\n")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。