天道酬勤,学无止境

maxima

在传递给 sum() 之前强制评估索引表达式(Force evaluate index expression before passing to sum())

问题 我想编写一个(以某种方式)增强的 sum 函数,它一次需要多个索引,但我无法理解如何让它工作。 这是我目前拥有的: (%i1) nsum(indexes, expr) := if indexes = [] then expr else nsum(rest(indexes), sum(expr, first(indexes),1, N)) $ (%i2) nsum([i,j], i+j), nouns; sum: index must be a symbol; found intosym(first(indexes)) #0: nsum(indexes=[k,j],expr=k+j) 我认为这可以通过在传递给sum函数之前强制 Maxima first(indexes)扩展first(indexes)为符号来解决。 我试过''(...)和ev(..., nouns) ,但没有任何成功。 回答1 经过一些阅读和尝试后,我得出了以下解决方案,该解决方案使用apply函数来预评估sum参数: nsum(indexes, expr) := if indexes = [] then expr else nsum(rest(indexes), apply(sum, ['expr, indexes[1], 1, N])) $ UPD1: 不幸的是,上面的代码有问题

2021-09-23 09:43:33    分类:技术分享    symbolic-math   quote   maxima   computer-algebra-systems

如何将一个数字近似为小数位数?(How to approximate a number to a n number of decimal places?)

问题 几周前我开始使用maxima (实际上我只使用过几次)和 OS X 的wxMaxima界面。 我试图在网络上找到解决方案,但可能是因为我瞎了,也可能是因为我在 maxima 的官方文档中没有太多搜索经验,我还没有找到具体的解决方案。 如何将一个数字近似为n位小数? 例如,如果我使用float(22/7) ,它会给我这个巨大的数字3.142857142857143 ,但我只想将它近似到小数点后第三位3.143 。 回答1 fpprec控制 Maxima bigfloat 中有效数字的实际数量。 这仅适用于 bigfloats 而不适用于普通(固定精度,IEEE 754)浮点数。 另请参阅fpprintprec ,它控制打印的数字数量,它适用于 bigfloat 和普通浮点数。 所以你的另一个解决方案是: (%i1) fpprintprec : 4 $ (%i2) float (22/7); (%o2) 3.143 回答2 我还没有找到一种使用 float 来近似数字的方法,但我找到了一种使用 bfloat 来近似的方法。 来自官方文档: bfloat (expr) 将expr所有数字和数字函数转换为 bigfloat 数字。 结果bigfloat 中的有效位数由全局变量fpprec指定。 因此,我可以通过使用这样的东西或多或少地实现我想要的: bfloat(%e)

2021-09-19 15:56:42    分类:技术分享    math   maxima

Maxima:如何避免表达式前面出现负号(Maxima: How to avoid negative symbol in the front of an expression)

问题 这是我的测试代码: kill(all)$ assume(beta>0 and gamma>0)$ simpsum:true$ assume(beta<1 and gamma<=1)$ f2:1-sum((1-beta)^l*(1-gamma)^(l-1)*gamma,l,1,inf),ratsimp; 输出是: 等式前面实际上有一个负号。 等式是: -beta / ((beta-1) * gamma-beta) 但是你经常忽略负号,因为它太接近分数了。 我也不喜欢开头带有负号的等式。 无论如何,Maxima 是否可以避免方程前面的负号? 我想将示例方程转换为: 更新 - 使用 :lisp 时的错误 回答1 我不知道如何让 Maxima 将减号带入分数中。 但也许这会有所帮助:您可以告诉 wxMaxima 通过更改其 display 属性以不同的方式显示减号。 试试这个: :lisp (setf (get 'mminus 'wxxmlsym) '("<v>- </v>")) 默认情况下,字符串是“-”,即没有尾随空格。 当然,您可以根据自己的喜好制作字符串。

2021-09-14 23:49:45    分类:技术分享    math   expression   maxima

How can I solve exponential equation in Maxima CAS

I have function in Maxima CAS : f(t) := (2*exp(2*%i*%pi*t) - exp(4*%pi*t*%i))/4; here: t is a real number between 0 and 1 function should give a point on the boundary of main cardioid of Mandelbrot set How can I solve equation : eq1:c=f(t); (where c is a complex number) ? Solve doesn't work solve( eq1,t); result is empty list [] Result of this equation should give real number t ( internal angle or rotation number ) from complex point c EDIT: Thx to comment by @JosehDoggie I can draw initial equation using: load(draw)$ f(t):=(2*exp(%i*t) - exp(2*t*%i))/4; draw2d( key="main cardioid", nticks=200

2021-09-05 11:48:44    分类:问答    complex-numbers   exponential   maxima   equation-solving   mandelbrot

How to assign the output of solve in maxima to a variable?

I am using xmaxima to solve two simultaneous non-linear equations using the 'solve' command.The answer displayed is x=[ans1, ans2,..], y=[ans1,ans2,...], But it is'int getting stored onto the variable 'x' and 'y' . How do I assign the output to a variable so that I can use the output for further calculations. The xmaxima code is as below: A:0.500000000000000$ B:0.709506070053745$ C:0.242527534593605$ D:0.719012140107490$ E: 0.357164044380080$ F:-0.505315948652670$ G:0.181895650945204$ H: 0.300000000000000$ [x,y]=solve([x^2*(A*y^3+B*y-C)-D*x*y^2+E*y^3,A*x^2+(x/y^2)*(H*y+G)+F],[x,y]),numer

2021-09-05 08:28:56    分类:问答    maxima

Show input in Symbolic form without computation in Maxima

In Maxima when I enter for example: I can see my input in a "readable" way, in order to verify everything I have typed in is interpreted the way I want. I want to be able to at first see my input in symbolic form and after that the result of my computation. For example when I define x as 5 I want the same result as above and after that the simplified form. Is that possible? I use wxmaxima. Another simple example for illustration: When I enter 5*5 I want an output saying 5 5 and then a second output with 25.

2021-09-04 00:32:05    分类:问答    maxima

Force evaluate index expression before passing to sum()

I want to write an (somehow) enhanced sum function which takes a number of indices at once, but I cannot understand how to get it work. Here is what I currently have: (%i1) nsum(indexes, expr) := if indexes = [] then expr else nsum(rest(indexes), sum(expr, first(indexes),1, N)) $ (%i2) nsum([i,j], i+j), nouns; sum: index must be a symbol; found intosym(first(indexes)) #0: nsum(indexes=[k,j],expr=k+j) I think this could be fixed by forcing Maxima expand first(indexes) into a symbol before passing to sum function. I tried ''(...) and ev(..., nouns), but without any success.

2021-09-03 18:48:01    分类:问答    symbolic-math   quote   maxima   computer-algebra-systems

maxima tex 输出以显示 sin 和 cos 的括号(maxima tex output to show brackets for sin and cos)

问题 我使用 maxima 的 tex 输出并想改变它输出 sin(x) 的方式。 它目前这样做: tex(sin(x)); $$\sin x$$ 但我想在 x 周围加上括号,但并非总是如此; 例如,如果我使用这个: sin(x/2) already has \left( and \right) tex(sin(x/2)); \begin{equation} \sin \left({{x}\over{2}}\right) \end{equation} 这可能吗,也许使用 texput 函数? 回答1 好吧,如果您不反对放入一些 Lisp 代码: (%i1) :lisp (setf (get '%sin 'tex) nil) (%i1) :lisp (setf (get '%cos 'tex) nil) 这去掉了预定义的处理函数(将 sin 和 cos 视为前缀运算符)。 然后你得到: (%i1) tex (sin(x) + cos(y)); $$\cos \left(y\right)+\sin \left(x\right)$$ 回答2 如果您的上下文排除使用: lisp的替代方法可能是定义一个函数,如: psin(x):=sin(x); psintex:lambda([e],printf(false,"\\sin\\left(~a\\right)", tex1(e)))

2021-08-30 07:07:13    分类:技术分享    tex   brackets   maxima   trigonometry

如何让Maxima的输出更干净?(How to make the output of Maxima cleaner?)

问题 我想利用 Maxima 作为后端来解决我的 LaTeX 输入文件中使用的一些计算。 我做了以下步骤。 步骤1 下载并安装千里马。 第2步 创建一个名为cas.bat的批处理文件(例如),如下所示。 rem cas.bat echo off set PATH=%PATH%;"C:\Program Files (x86)\Maxima-5.31.2\bin" maxima --very-quiet -r %1 > solution.tex 将批处理保存在下面的输入文件所在的同一目录中。 这只是为了简单起见。 第 3 步 创建名为main.tex的输入文件(例如),如下所示。 % main.tex \documentclass[preview,border=12pt,12pt]{standalone} \usepackage{amsmath} \def\f(#1){(#1)^2-5*(#1)+6} \begin{document} \section{Problem} Evaluate $\f(x)$ for $x=\frac 1 2$. \section{Solution} \immediate\write18{cas "x: 1/2;tex(\f(x));"} \input{solution} \end{document} 第四步 用pdflatex -shell-escape

2021-08-12 16:23:52    分类:技术分享    maxima

How to create a plot with sliders in maxima?

In order to illustrate a Cauchy problem for first order ode with infinite family of solutions, I would plot the parametrized solution and having the possility of control the value the parameter through a slider. To be complete the Cauchy problem is y'=sqrt(|y|), y(0)=0, and the parametric solution is y_c(x):={0, if c=>x; (x-c)^2/4, if x=>c}. So I would get a plotting of y=y_c(x) with a slider to control the value of c. Thank you.

2021-08-12 08:17:36    分类:问答    plot   slider   maxima