首页 > 编程语言 >组合数学程序包 by My_Desire

组合数学程序包 by My_Desire

时间:2024-04-10 16:34:55浏览次数:23  
标签:Desire Join 程序包 Transpose Module Length usage Table My

BeginPackage[ "My`"]

RTRow::usage = "Read Triangle by Row"

TpQ::usage = "全正性判断"

LSTP::usage = "三角全正性判断"

RiordanArray::usage = "RiordanArray[d_Function,h_Function,n_]"

ExpRiordanArray::usage = "expRiordanArray[d_Function,h_Function,L_]"

AZ::usage = "AZ sequence matrix."

RowRZ::usage = "row gf Rz"

RowRZQ::usage = "Q row gf Rz"

LHM::usage = "Lower Hessenberg Matrix"

AddOne::usage = "矩阵添加首行首元1"

AddRC::usage = "矩阵添加首行首列首元1"

RevLT::usage = "下三角矩阵的反排"

ADLT::usage = "AntiDiagLowerTriangle"

ADT::usage = "AntiDiagTotal"

EvenRowMat::usage = "取矩阵偶数行"

OddRowMat::usage = "取矩阵奇数行"

SMQ::usage = "判断序列是不是SM的"

PFQ::usage = "判断序列是不是PF的"

LCQ::usage = "判断序列是不是LC的"

LCXQ::usage = "判断序列是不是LCX的"

OEISA::usage = "获取序列的OEIS号"

OEISO::usage = "打开序列对应的OEIS网站"

OEISI::usage = "获取序列的OEIS号的信息"

MyLook::usage = "让我看看"

Begin[ "Private`"]

RTRow[R_]:=
Module[
{M,sl},M=R;
Flatten[Table[R[[i]][[1;;i]],{i,Length[R]}]]];

RiordanArray[d_Function,h_Function,n_]:=
Module[
{R,p,q,i},i=n;
p=Series[d[u],{u,0,i}];
q=Series[h[u],{u,0,i}];
R = CoefficientList[Array[p*q^# &, i + 1, 0], u, i + 1];
R// Transpose]

ExpRiordanArray[d_Function,h_Function,L_]:=
Module[
{R,Y,M,p,q,l},l=L;
M=Table[n!/k!,{n,0,l},{k,0,n}]//PadRight;
p=Series[d[x],{x,0,l}];
q=Series[h[x],{x,0,l}];
R=CoefficientList[Array[p*q^#&,l+1,0],x,l+1];
Y=Transpose[R]*M//Expand;Y//MatrixForm]

LHM[d_Function,h_Function,n_]:=
Module[
{p,q,i,sl},i=n;
p=Series[d[t],{t,0,i}];
q=Series[h[t],{t,0,i}];
sl={CoefficientList[p,t]};SetSharedVariable[sl];
Do[AppendTo[sl,Flatten[CoefficientList[q*t^j, t,n+1]]],{j,0,n-1}];
sl//PadRight//Transpose
]

AZ[R_]:=Inverse[Take[R,Length[R]-1,Length[R]-1]] . Take[R,{2,Length[R]},Length[R]-1]

RowRZ[R_,l_]:=Do[Print[DeleteCases[0][R[[i]]*Table[Array[#*Global`x^i&,1],{i,0,l}]//Flatten]//Total],{i,1,l+1}]

RowRZQ[R_,l_]:=Table[Flatten[NSolve[Total[DeleteCases[0][R[[i]]*Table[Array[#*Global`x^i&,1],{i,0,l}]//Flatten]]==0,Global`x]],{i,1,l+1}]//PadRight//MatrixForm

LSTP[R_]:=
Module[
{G,o},G=R;o=Length[G]-1;
sl={};SetSharedVariable[sl];
Do[Do[AppendTo[sl,Det[Transpose[Transpose[G][[1;;j]]][[i;;i+j-1]]]],{i,1,o+2-j}],{j,1,o+2}];
ReplaceAll[Boole[AllTrue[Flatten[sl], Positive]],{0->"\[Times]",1->"\[Checkmark]"}]]

TpQ[R_]:=
Module[
{M,sl},M=R;
sl={};SetSharedVariable[sl];
Do[AppendTo[sl,Select[Minors[M,i]//Flatten,#<0&]],{i,0,Length[M]}];
ReplaceAll[Boole[AllTrue[Flatten[sl], Positive]],{0->"\[Times]",1->"\[Checkmark]"}]]

AddRC[R_]:=
Module[
{M,T},M=R;
T=ResourceFunction["PrependColumn"][Transpose[ResourceFunction["PrependColumn"][M,
Table[0,{i,0,Length[M]-1}]]],Join[{1},Table[0,{i,0,Length[M]-1}]]]//Transpose;
ResourceFunction["DropColumn"][Transpose[ResourceFunction["DropColumn"][T,{Length[T]}]],
{Length[ResourceFunction["DropColumn"][T,{Length[T]}]]}]//Transpose]

AddOne[R_]:=
Module[
{M,T},M=R;
T=Join[{Join[{1},Table[0,{i,0,Length[M]-2}]]},M];
Transpose[ResourceFunction["DropColumn"][Transpose[T],{Length[T]}]]]

RevLT[R_]:=
Module[
{M},M=R;
Map[Reverse,MapIndexed[RotateLeft,M]]]

ADLT[R_]:=
Module[
{M,sl},M=R;
Table[M[[n-k]][[k+1]],{n,1,Length[M],2},{k,0,Floor[n/2]}]//PadRight]

ADT[R_]:=
Module[
{M,sl},M=R;
Transpose[Table[M[[n-k]][[k+1]],{n,1,Length[M],1},{k,0,Floor[n/2]}]//PadRight]//Total
]

EvenRowMat[R_]:=
Module[
{M},M=R;
Table[M[[n]][[k]],{n,1,Length[M],2},{k,1,Length[Transpose[M]]}]//PadRight]

OddRowMat[R_]:=
Module[
{M},M=R;
Table[M[[n]][[k]],{n,2,Length[M],2},{k,1,Length[Transpose[M]]}]//PadRight]

SMQ[a_]:=
Module[
{g},g=a;
Table[g[[i+j+1]],{i,0,Length[g]/2-1},{j,0,Length[g]/2-1}]//TpQ]

LCQ[a_]:=
Module[
{g},g=a;
ReplaceAll[Boole[Table[g[[i]]*g[[i+2]]-g[[i+1]]*g[[i+1]]<=0,{i,1,Length[g]-2}]],{0->"\[Times]",1->"\[Checkmark]"}]]

LCXQ[a_]:=
Module[
{g},g=a;
ReplaceAll[Boole[Table[g[[i]]*g[[i+2]]-g[[i+1]]*g[[i+1]]>=0,{i,1,Length[g]-2}]],{0->"\[Times]",1->"\[Checkmark]"}]]

PFQ[a_]:=
Module[
{g},g=a;
LowerTriangularize[ToeplitzMatrix[g]]//TpQ]

OEISA[a_]:=
Module[
{g},g=a;
searchString=StringJoin[Riffle[ToString/@g,"%2C+"]];
oeisLink="https://oeis.org/search?q="<>searchString<>"&language=english&go=Search";
pageContent=Import[oeisLink,"Source"];
sequenceNumberPattern="A[0-9]+";
matches=StringCases[pageContent,RegularExpression[sequenceNumberPattern]->"$0"];
firstMatch=First[matches]]

OEISO[a_]:=
Module[
{g},g=a;
searchString=StringJoin[Riffle[ToString/@g,"%2C+"]];
oeisLink="https://oeis.org/search?q="<>searchString<>"&language=english&go=Search";
oeisLink]

OEISI[a_]:=
Module[
{g},g=a;
htmlContent=URLFetch[g//OEISO];
pattern="<td valign=top align=left>[\\s\\S]*?<br>";
matches=StringCases[htmlContent,RegularExpression[pattern]->"$0"];
result=StringSplit[matches[[1]],"\n"][[2]];
result=StringTrim[result];
result]

MyLook[R_]:=
Module[
{M,L,m},M=R;L=Length[M];m=Transpose[M][[1]];
{Grid[{{"三角",M//RTRow//OEISA,M//RTRow//OEISI},{"第0列",m//OEISA,m//OEISI},{"行和",Total[Transpose[M]]//OEISA,Total[Transpose[M]]//OEISI},{"反对角线和",M//ADT//OEISA,M//ADT//OEISI},{"反排",RevLT[M]//RTRow//OEISA,RevLT[M]//RTRow//OEISI},{"无符号逆",M//Inverse//Abs//RTRow//OEISA,M//Inverse//Abs//RTRow//OEISI}},Alignment->Left,Frame->All],Grid[{{Null,Null,"left product","product"},{"原矩阵",M//MatrixForm,M . Inverse[AddRC[M]]//MatrixForm,M//AZ//MatrixForm},{Null,{{"TP",M//TpQ},{"LSTP",M//LSTP}},{"TP",M . Inverse[AddRC[M]]//TpQ},{"TP",M//AZ//TpQ}},{"无符号逆",M//Inverse//Abs//MatrixForm,Abs[Inverse[M]] . Inverse[AddRC[Abs[Inverse[M]]]]//MatrixForm,Abs[Inverse[M]]//AZ//MatrixForm},{Null,{{"TP",M//Inverse//Abs//TpQ},{"LSTP",M//Inverse//Abs//LSTP}},{"TP",Abs[Inverse[M]] . Inverse[AddRC[Abs[Inverse[M]]]]//TpQ},{"TP",Abs[Inverse[M]]//AZ//AZ//TpQ}},{"反排",RevLT[M]//MatrixForm,RevLT[M] . Inverse[AddRC[RevLT[M]]]//MatrixForm,RevLT[M]//AZ//MatrixForm},{Null,{{"TP",RevLT[M]//TpQ},{"LSTP",RevLT[M]//LSTP}},{"TP",RevLT[M] . Inverse[AddRC[RevLT[M]]]//TpQ},{"TP",RevLT[M]//AZ//TpQ}}},Frame->All],{{Grid[{{"序号"}~Join~Table[n,{n,0,L-1}],{"第0列"}~Join~m[[1;;L]],Flatten[{"对数凸判断"}~Join~{Flatten[{Null}~Join~{m//LCXQ}]}],{"SM判断"}~Join~Table[m[[n;;Length[m]]]//SMQ,{n,1,Length[m]-1}],Flatten[{"对数凹判断"}~Join~{Flatten[{Null}~Join~{m//LCQ}]}],{"PF判断"}~Join~Table[m[[n;;Length[m]]]//PFQ,{n,1,Length[m]-1}]},Frame->All],Grid[{{"序号"}~Join~Table[n,{n,0,L-1}],{"行和"}~Join~Total[Transpose[M]][[1;;L]],Flatten[{"对数凸判断"}~Join~{Flatten[{Null}~Join~{Total[Transpose[M]]//LCXQ}]}],{"SM判断"}~Join~Table[Total[Transpose[M]][[n;;Length[Total[Transpose[M]]]]]//SMQ,{n,1,Length[Total[Transpose[M]]]-1}],Flatten[{"对数凹判断"}~Join~{Flatten[{Null}~Join~{Total[Transpose[M]]//LCQ}]}],{"PF判断"}~Join~Table[Total[Transpose[M]][[n;;Length[Total[Transpose[M]]]]]//PFQ,{n,1,Length[Total[Transpose[M]]]-1}]},Frame->All],Grid[{{"序号"}~Join~Table[n,{n,0,L-1}],{"反对角线和"}~Join~ADT[M][[1;;L]],Flatten[{"对数凸判断"}~Join~{Flatten[{Null}~Join~{ADT[M]//LCXQ}]}],{"SM判断"}~Join~Table[ADT[M][[n;;Length[ADT[M]]]]//SMQ,{n,1,Length[ADT[M]]-1}],Flatten[{"对数凹判断"}~Join~{Flatten[{Null}~Join~{ADT[M]//LCQ}]}],{"PF判断"}~Join~Table[ADT[M][[n;;Length[ADT[M]]]]//PFQ,{n,1,Length[ADT[M]]-1}]},Frame->All]}}//Grid,RowRZQ[M,Length[M]-1]}//MatrixForm
]

End[]

EndPackage[]

标签:Desire,Join,程序包,Transpose,Module,Length,usage,Table,My
From: https://www.cnblogs.com/Desire-My/p/18126310

相关文章

  • python收到MQTT消息后写入mySQL
    python收MQTT消息和写mySQL的代码在前面的文章都有介绍,这里直接上完整的功能代码mqtt2mysql.py#python3.6importloggingimportrandomimporttimeimportmysql.connector#frompaho.mqttimportclientasmqtt_clientimportpaho.mqtt.clientasmqttBROKER......
  • MySQL Ruler mysql 日常开发规范
    拓展阅读MySQLViewMySQLtruncatetable与delete清空表的区别和坑MySQLRulermysql日常开发规范MySQLdatetimetimestamp以及如何自动更新,如何实现范围查询MySQL06mysql如何实现类似oracle的mergeintoMySQL05MySQL入门教程(MySQLtutorialbook)MySQL04-E......
  • SpringBoot整合Mybatis3 Dynamic Sql
      前置条件:CREATETABLE`volunteer`(`vt_id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'志愿者id',`vt_integral_count`int(11)DEFAULTNULLCOMMENT'剩余总积分',`vt_avatar`varchar(255)DEFAULTNULLCOMMENT'头像',`vt_name`va......
  • MySQL分组查询以及having筛选
    DDLCREATETABLE`student`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'学号',`createDate`datetimeDEFAULTNULL,`userName`varchar(20)DEFAULTNULL,`pwd`varchar(36)DEFAULTNULL,`phone`varchar(11)DEFAULTNULL,`age`tinyint(......
  • prometheus 监控mysql
      启动脚本vim/usr/lib/systemd/system/mysqld_exporter.service[Unit]Description=PrometheusMySQLExporterAfter=network.target[Service]Type=simpleUser=exporterGroup=exporterRestart=alwaysExecStart=/opt/mysqld_exporter-0.15.1/mysqld_exporter\--......
  • Windows环境下删除MySQL
    目录一、关闭MySQL服务1、win+R打开运行,输入services.msc回车2、服务里找到MySQL并停止二、卸载MySQL软件1、打开控制模板--卸载程序--卸载MySQL相关的所有组件三、删除MySQL在物理硬盘上的所有文件1、删除MySQL的安装目录(默认在C盘下的ProgramFiles文件夹)2、删除MySQL数据目录数......
  • 如何优化在docker容器内的MySQL性能
    前言:在现代数据库应用中,性能和可靠性是至关重要的。对于运行在docker中的MySQL容器,通过优化配置可以充分利用宿主机的的性能,从而提升数据库的整体性能和响应速度。下面将介绍如何通过编辑MySQL容器中的配置文件来优化其性能,并详细说明操作步骤。正文:随着云计算和容器化......
  • 基于SpringBoot+MySQL+SSM+Vue.js的宠物商城系统(附论文)
    演示视频基于SpringBoot+MySQL+SSM+Vue.js的宠物商城系统技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoot文字描述基于SpringBoot+MySQL+SSM+Vue.js的宠物商城系统(附论文),用......
  • 基于SSM+MySql+Layui的在线教育视频课程管理系统(附论文)
    演示视频基于SSM+MySql+Layui的在线教育视频课程管理系统(附论文)-源码乐园技术描述开发工具:Idea/Eclipse数据库:mysqlJar包仓库:Maven前段框架:LayUI后端框架:Spring+SpringMVC+Mybatis+MySQL文字描述基于SSM+MySql+Layui的在线教育视频课程管理系统,分为用......
  • 基于SSM+SpringBoot+MySQL+Element+Vue的鲜花销售商城系统(附论文)
    演示视频基于SSM+SpringBoot+MySQL+Element+Vue的鲜花销售商城系统(附论文)-源码乐园技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Element/Vue后端框架:Spring+SpringMVC+Mybatis+Element+Vue文字描述基于SSM+SpringBoot+MySQL+Element......