
Mathematica
Flaribbit
这个作者很懒,什么都没留下…
展开
-
POC 使用rust编写mathematica库函数
参考之前的文章:Mathematica 使用C语言编写库函数教程 带示例主要是实现三个接口和自带的函数就可以了,至于头文件可以用 bindgen,我这里糊了个最小实现。use std::ffi::c_void;const LIBRARY_NO_ERROR: i32 = 0;#[repr(C)]pub union MArgument { integer: *mut i32, real: *mut f64,}#[no_mangle]pub extern "C" fn Wol原创 2021-07-27 15:30:57 · 325 阅读 · 0 评论 -
Mathematica 使用C语言编写库函数教程 带示例
在,Mathematica 还来百度?帮助文档写的很详细了,这里只说一下重点用 MArgument_getXXXX 获得函数参数用 MArgument_setXXXX 设置返回值编译链接 WolframRTL.dll比如f2.c#include <math.h>#include "WolframImageLibrary.h"#include "WolframLibrary.h"DLLEXPORT int WolframLibrary_getVersion() {原创 2020-12-26 11:32:32 · 981 阅读 · 0 评论 -
Mathematica探究:同一速度不同方向抛出小球 能够到达的范围是怎样的
首先列出运动方程,并求解得到关于角度的曲线族的方程f[x_, y_, a_] = Eliminate[{ x == v Cos[a] t, y == v Sin[a] t + 1/2*g*t^2}, t] /. Equal -> Subtractf(x,y,a)=2v2xsin(a)cos(a)−2v2ycos2(a)+gx2f(x,y,a)=2 v^2 x \sin (a) \cos (a)-2 v^2 y \cos ^2(a)+g x^2f(x,y,a)=2v2xsin原创 2020-08-06 10:18:04 · 349 阅读 · 0 评论 -
探索 由一个自相似数列构成的二进制小数
问题来自群友:从1开始,二进制取反然后拼接到后面,重复这一操作,得到1101001100101101001011001101001100101100110100101101001100101101001011001101001011010011001011001101001100101101001011001101001......自然而然想到,从前面增加0.,这个小数会趋近...原创 2019-11-29 13:04:53 · 218 阅读 · 0 评论 -
Mathematica 自定义的几个关于美化绘图的函数
又见绘图问题,再加上每次自己写刻度什么的太累了,干脆写了几个函数FStyle[size_:10.5,font_:"Times New Roman"]:={ AxesStyle->Black, TicksStyle->Directive[Black,size,FontFamily->font], FrameTicksStyle->Directive[Black,...原创 2019-10-21 14:45:12 · 1405 阅读 · 0 评论 -
Mathematica 用斜线填充两个曲线之间的区域
Word有曲线填充,但是这种操作在mma里面还真不好搞,毕竟不管怎么样都要计算曲线两端的坐标,那就暴力算吧findArea[expr_, x1_, x2_, d_, y0_] := Table[Line[ FindRoot[{# == y, y == 1.2 (x - x0) + y0}, {{x, x0}, {y, y0}}][[;; , 2]] & /@ ...原创 2019-10-23 17:25:55 · 3483 阅读 · 0 评论 -
Mathematica 随机生成一堆线性规划的式子
嘛,讲道理直接LinearProgramming就完事了看第一种用法LinearProgramming[c,m,b]求向量 x,使 c.x 在约束条件 m.x>=b 和 x>=0 下达到极小.很明显c是向量,m是系数矩阵,b是列矩阵,随机生成这些东西丢进去就是了不过内容似乎与标题不符,那就~With[{n=10},Evaluate[Plus@@Table[Slot@i...原创 2019-07-22 18:49:10 · 363 阅读 · 0 评论 -
【记录】Mathematica 有哪些三位数满足:三个数码任意取出两个所组成的数字都是素数
来自群友:137是素数还有哪些三位数满足:三个数码任意取出两个所组成的数字都是素数13是素数17是素数31是素数37是素数71是素数73是素数首先想到FromDigits, IntegerDigits, Permutations,于是就有了下面的程序Range[100,999]//Select[AllTrue[FromDigits/@Permutations[IntegerD...原创 2019-07-22 18:34:09 · 178 阅读 · 0 评论 -
一次无聊的尝试——蜂鸣器播放音频 借助Mathematica生成数据
好吧其实是个代码备份audio=Audio["D:\\Users\\flaribbit\\Desktop\\Untitled.wav"]audio=UnitStep[# - 0.2] &[audio]data=Floor[Partition[AudioData[audio][[1]], 8]];StringRiffle["0x" <> IntegerString[Fro...原创 2019-08-03 17:31:46 · 417 阅读 · 0 评论 -
Mathematica 怎么列表展示出复合函数高阶导数公式 Faà di Bruno's formula 关于Mathematica推公式的一些技巧等
来自于群友的问题again如图:很明显用D就可以解决,但是还要让麦酱认出r和t是复合函数,所以要带上自变量,对于t来说自变量是s,自然写成t[s],而r是复合函数,直接套着写就行了~D[r[t[s]],{s,#}]&/@Range@4代码就写完了,但是输出不符合阅读习惯,看着很头疼啊,比较一下,还是t[s]的问题,写成t就舒服多了...原创 2019-07-30 23:16:58 · 3611 阅读 · 0 评论 -
Mathematica 关于代码优化 如何查看运行每条语句需要的时间等 RuntimeTools`Profile
RuntimeTools使用方法:打开调试在代码后面加上//RuntimeTools`Profile代码运行后就会弹出一个笔记本,里面写着每个代码片段运行的次数和时间后续就可以根据这个做相应的优化了...原创 2019-08-03 14:54:22 · 1396 阅读 · 0 评论 -
Mathematica 关于惰性求值
mathematica中,默认情况下是非惰性的,例如x=2;f[x]他实际计算的时候并不是先计算f[x]然后把x=2代入,而是先计算参数,发现x=2,然后直接计算f[2]如何改变这一情况呢,有两种方法1. 改变函数特性例如SetAttributes[f, HoldAll],这里的HoldAll就可以保证函数f的参数在传入的时候不会被计算,在函数体中用到的时候才会计算2. 通过Unev...原创 2019-08-03 14:48:03 · 286 阅读 · 0 评论 -
Mathematica 一个基于康托集合定义的函数
原文:无限小却无限大的集合 & 阶梯状的连续函数部分内容摘要:康托集合是闭区间[0,1]的子集,它的定义如下:给定区间[0,1],把这个区间分成三段,去掉中间那一端(即去掉(1/3,2/3)),然后把剩下的两段中每一段都按照刚才的方法再进行操作,然后再分,再分,就这样一直挖洞挖下去。在第二次操作后,剩下的区间是[0,1/9]∪[2/9,1/3]∪[2/3,7/9]∪[8/9,1],再操...原创 2019-07-30 18:14:55 · 1619 阅读 · 0 评论 -
考研小助手 Mathematica 麦酱教你算不定积分 wolfram alpha
室友遇到这样一个积分∫02πdθ∫013r21−3r2rdr\int_0^{2\pi}{\rm d}\theta\int_0^\frac{1}{\sqrt 3}r^2\sqrt{1-3r^2}r{\rm d}r∫02πdθ∫031r21−3r2rdr我算了五分钟放弃了(好菜然后麦酱启动内层不定积分−1135(1−3r2)3/2(9r2+2)-\frac{1}{135} \le...原创 2019-08-01 23:48:29 · 2318 阅读 · 0 评论 -
解决Mathematica ContourPlot BubbleChart等函数出图中Dynamic过多前端卡死的问题
这是一个例子BubbleChart[RandomReal[1, {5, 7, 3}]]画出来的图是动态的,鼠标指上去会有动态的提示但是如果是论文绘图的话这种提示没什么必要,打印出来又没有,而且你把上面的7改大一点试试会不会卡死【作死好在Mathematica的统一性,它特殊的数据结构和语法就可以让这个问题很容易解决/.Tooltip[t_,_]:>t[[1,1,1,1,1]]示例...原创 2019-08-13 21:32:17 · 685 阅读 · 0 评论 -
Mathematica 批量一键合并ppt
python能干的事,麦酱当然也能干,只是可能没人会想到这么玩……代码如下Needs["NETLink`"]PPTMerge[merged_,list_]:=Block[{pptmerged,ppt,client,pages}, CopyFile[First@list,merged]; client=CreateCOMObject["PowerPoint.Application"]; ...原创 2019-08-13 21:44:36 · 502 阅读 · 0 评论 -
优雅地让Mathematia不约分分数
问题来自群友,内容严格讲也并非我原创,事后整理了一下其实我首先想到的是Inactive,但是试了一下,套了这个东西之后除法并不会显示为分数线,只会显示成“/”然后想到,放在Defer里面的表达式是不会被简化的,试试?Defer[4/6]把Defer的这个特性巧妙地赋予除法,之前群里有讨论过,使用复合函数即可Defer@*Divide,这样就造出了一种暂时不会约分分式的除法,然后把这个触发应用...原创 2019-08-14 21:34:05 · 752 阅读 · 0 评论 -
【学习记录】Mathematica 一种类似遗传算法暴力解优化问题的算法
问题来自群友:94 77 67 728 95 61 8724 36 47 69100 38 43 57这样一个矩阵重新排列,使每个元素与相邻(上下左右)的元素差的绝对值求和,不重复计算这个差问一种算法让最后的总和最小我的算法当时没多想,用第一想法解决了,还意外的比别人快。。。准备org = {94, 77, 67, 72, 8, 95, 61, 87, 24, 36, 47,...原创 2019-08-16 21:43:19 · 1203 阅读 · 0 评论 -
【学习记录】Mathematica 前十个质数分为三组 各组的和为等差数列 列举出各组数据
我的解法我的解法是0-1规划,直接干primes = Prime~Array~10;vars = x~Array~{3, 10};cons = {(vars[[1]] + vars[[3]]).primes == 2 vars[[2]].primes, Total@Flatten@vars == 10, Sum[vars[[i, #]], {i, 3}] == 1 & ...原创 2019-08-16 21:49:06 · 372 阅读 · 0 评论 -
Mathematica 解决导出图片的刻度线又短又粗丑爆炸的问题
经过一番折腾,发现最好的方法还是自定义刻度线,而且这也是最自由的方法了,而且实现起来还不复杂查找替换的方法试过了 出图也不满意原代码:ListLinePlot[data, PlotStyle -> Directive[Black, Thin], MeshStyle -> Black, PlotMarkers -> "\[FilledDiamond]", Fram...原创 2019-09-27 20:06:30 · 4013 阅读 · 0 评论 -
mathematica 绘图终结者 关于画出高质量的可以用在论文里面或者出版的图形
群里又在讨论绘图软件的问题,我的看法是全能的还要自己玩的溜的才是最好的,比如这个图当场感觉mma不服,然后就有了以下代码(看着比较长。。。实际上除了Ticks里面的部分,其他内容都是可以复制粘贴重复利用的,个人感觉比某些软件一遍一遍鼠标点点点方便多了)Plot[{0.5 (1 + Cos[2 x]), 0.25 (1 - Cos[2 x])}, {x, -1.8, 5}, Ticks -...原创 2019-10-08 13:00:26 · 1492 阅读 · 1 评论 -
【娱乐】Mathematica 数学全国卷 15 暴力算法
Subsets[ConstantArray["女",2]~Join~ConstantArray["男",4],{3}]~Select~(MemberQ[#,"女"]&)代码翻译:2女4男选出三个人再选出包含女的组合纯娱乐代码(原创 2018-06-24 23:43:37 · 266 阅读 · 0 评论 -
Mathematica画图系列 做了该用geogebra做的事情。。
群里看到这样一张图,就顺手画了代码如下:Manipulate[ Block[{r1 = 5, o}, Graphics[{ Circle[{0, 0}, 5], Circle[(r1 - r2) {Cos[t], Sin[t]}, r2], Gray, l = Table[ o = (r1 - r2) {Cos[i], Sin[i]}; ...原创 2019-08-02 16:52:13 · 1136 阅读 · 0 评论 -
Mathematica 爬虫系列 火车站站查询
代码如下(data=StringCases[Import["http://www.jt2345.com/huoche/zhanzhan/"<>#1<>"-"<>#2<>".htm","Text",CharacterEncoding->"CP936"],RegularExpression@"<td.*?>(.*?)</td&g...原创 2019-07-15 23:07:51 · 619 阅读 · 0 评论 -
mathematica 递阶结构模型的建立
为了保证程序不出错 这里贴的是代码格式而非纯文本 请粘贴到mathematica中后阅读m = ( { {1, \[Placeholder], \[Placeholder], \[Placeholder], \\[Placeholder], \[Placeholder], \[Placeholder]}, {1, 1, \[Placeholder], \[Place...原创 2018-10-12 16:52:05 · 1188 阅读 · 0 评论 -
Mathematica 遗传算法的思路和部分程序
为了节省空间,染色体和基因用整数表示,运算的时候看成二进制就是了,应该可以大大提高速度随机创建种群:GANewGroup[n_:50,l_:16]:=Table[RandomInteger[2^l],n];基因解码(这里按照自己的编码方式改成自己的):GADecode[x_]:=x*0.00003051757813;适应度(改成自己的):GAFitness[x_]:=...原创 2018-08-24 17:15:07 · 1901 阅读 · 0 评论 -
Mathematica画图练习 图元绘图
代码:data=Partition[StringSplit["A01 A 146 739 1 A02 A 146 735 0 A03 A 142 710 0 A04 A 146 723 0 A05 A 134 740 0 B01 B 200 662 1 B02 B 217 674 0 B03 B 213 694 0 B04 B 201 632 0 B05 B 213 675 0 B06 B ...原创 2018-08-11 21:20:34 · 2701 阅读 · 0 评论 -
Mathematica 一维数组和二维数组的相互转换
一维数组转二维数组:Partition一维数组转二维数组/二维数组变形:ArrayReshape转一维数组:Flatten分块矩阵合并:ArrayFlatten使用方法例:Partition[{a,b,c,d,e,f},2]ArrayReshape[{a,b,c,d,e,f},{2,3}]ArrayReshape[{1,2,3,4,5,6,7},{5,3},0]Flat...原创 2018-07-22 11:35:47 · 4495 阅读 · 0 评论 -
mathematica 第一次使用神经网络
题目原因/背景 略代码仅适用于mathematica11以上版本数据:data={{-261,-105,-53,-68}->{0,0,0,0,1},{-280,-111,-58,-74}->{0,0,0,0,1},{-287,-108,-48,-69}->{0,0,0,0,1},{-300,-110,-52,-67}->{0,0,0,0,1},{-319,-1...原创 2018-07-22 00:41:28 · 2210 阅读 · 0 评论 -
Mathematica 随机打乱列表顺序/列表随机重排列
没有找到直接的相关函数想到的方法是随机交换列表元素,例如以下程序为1-10的数字乱序Permute[Range@#,RandomPermutation@#]&@10顺带列表乱序,把list换成你想乱序的列表Permute[#,RandomPermutation@Length@#]&@list...原创 2018-06-23 21:59:57 · 2035 阅读 · 1 评论 -
Mathematica 矩阵的LU分解
虽然有自带的函数,但是那个函数会进行行变换,所以我又自己写了一个LUDecomp[m_]:=Block[{lu,n},n=Dimensions[m][[1]];lu=ConstantArray[0,{n,n}];For[r=1,r<=n,r++,For[i=r,i<=n,i++,lu[[r,i]]=m[[r,i]]-Sum[lu[[r,k]]*lu[[k,i]],{k,1,r-...原创 2018-06-01 00:23:38 · 2199 阅读 · 0 评论 -
Mathematica QQ聊天记录txt转二维数组
datastring=Import["xxxx.txt",CharacterEncoding->"UTF-8"];datastring=StringReplace[datastring,{RegularExpression["(.*?:\\d\\d) (.*?)\n"]->"$1<s2>$2<s2>","\n\n"-&am原创 2018-05-20 22:56:16 · 286 阅读 · 0 评论 -
Mathematica笔记 删除重复元素并排序中遇到的精度问题
问题来源:浮点数大坑62.02/62.02=1.`62.03/62.03=0.9999999999999999`然后Union的时候就很尴尬In[20]:= {.2,62.02/62.02,.8,.6,62.03/62.03}Out[20]= {0.2,1.,0.8,0.6,1.}In[21]:= Union[%]Out[21]= {0.2,0.6,0.8,1.,1.}注意结尾有两个1后来发...原创 2018-05-18 10:12:56 · 1793 阅读 · 5 评论 -
Mathematica 造轮子系列 图元直方图
来自群友,数据长这样0.031415928 0.062831856 0.0101385880.062831856 0.094247788 0.0173167710.094247788 0.1256637 0.023269410.1256637 0.1570796 0.0307499960.1570796 0.1884956 0.0370050470.1884956 0.219911...原创 2018-10-20 18:38:03 · 815 阅读 · 0 评论 -
Mathematica 绘制二元函数极小值随参数变化图(二维)
问题来自群友,直接上代码ListLinePlot[Labeled[{#[[2,1,2]],#[[2,2,2]]},NumberForm[#[[1]],3]]&/@Table[FindMinimum[{Cos[x]-Exp[x y],z+x^2+y^2<=8},{x,y}],{z,0.1,1,.1}],Mesh->All,ColorFunction->(Hue@Re...原创 2018-10-31 16:23:25 · 2964 阅读 · 0 评论 -
使用Mathematica调用ffms2读取视频帧图像
设置工作目录SetDirectory@NotebookDirectory[];解压文件(文件就在这段代码里)Block[{file}, file = OpenWrite["ffmslink.dll", BinaryFormat -> True]; BinaryWrite[file, ByteArray[CompressedData["1:eJztOwtYVMfVsy9YXi...原创 2019-07-15 23:01:35 · 7752 阅读 · 0 评论 -
Mathematica 实现随机更换壁纸
又一次调用win32函数呢…初始化部分:<<NetLink`InstallNET[];SystemParametersInfoA=DefineDLLFunction["SystemParametersInfoA","user32.dll","int",{"int","int","char*","int"}];ChangeWallpaper[file_]:=SystemPara...原创 2019-07-15 22:54:34 · 357 阅读 · 1 评论 -
用Mathematica绘制洛伦兹模型的状态方程
偶然看到的,原文:你看见蝴蝶翅膀上的数学公式了吗?——哆嗒数学网看到matlab代码代码就像用麦酱改写一下试试。。原matlab代码:f=@(t,x)[-8/3*x(1)+x(2)*x(3);-10*x(2)+10*x(3);-x(1)*x(2)+28*x(2)-x(3)];t_final=100;x0=[0;0;1e-10];[t,x]=ode45(f,[0,t_final],x0);...原创 2019-07-15 22:48:18 · 3307 阅读 · 0 评论 -
mathematica 编写tcp/http服务器
例程:(*创建http服务器*)server=SocketListen[8000,Function[{assoc},Block[{client=assoc["SourceSocket"]},Block[{html,expr},expr=First@StringCases[assoc["Data"],RegularExpression["GET /\\?expr=([^ ]+)"]-&g...原创 2019-01-15 22:45:10 · 502 阅读 · 0 评论 -
mathematica websocket数据帧解码
ClearAll["`*"]SetAttributes[readData,HoldFirst];readData[array_]:=Block[{fin,opcode,maskkey,length,start,data},fin=BitAnd[array[[1]],128(*0x80*)]!=0;opcode=BitAnd[array[[1]],15(*0x0f*)];(*计算数据长度...原创 2019-01-23 22:00:27 · 288 阅读 · 0 评论