我想使用Maxima来评估文档.将Maxima输出转换为TeX很容易:
(%i1) tex(5*x^2+sin(x)+c)$
$$\sin x+5\,x^2+c$$
Run Code Online (Sandbox Code Playgroud)
但是,它不适用于以前的输入行:
(%i2) 5*x^2+sin(x)+c;
2
(%o2) sin(x) + 5 x + c
(%i3) tex(%i2);
\begin{verbatim}
(%i2)sin(x)+5*x^2+c;
\end{verbatim}
(%o3) (%i2)
Run Code Online (Sandbox Code Playgroud)
经过大量的研究(包括这里很接近,但没有雪茄)我已经空了.任何见解?
我想在另一个函数中使用函数的导数.如何在Maxima中完成?
例如:
f(x) := 2*x^4;
g(x) := diff(f(x),x)-8;
Run Code Online (Sandbox Code Playgroud)
现在按预期g(x)收益8x^3-8,但是 g(0)给出错误,因为diff(f(0),0)没有意义.但那我该如何正确定义g呢?
有没有办法告诉maxima一个表达总是积极的?下面是一个示例代码段,它会导致maxima向表达式提出问题sin(a)*x:
declare([a,x,y],real); ca: cos(a) = (x / (sqrt(x*x + y*y))); a1: solve(ca,a)[1]; solve(a1,y);
我按照以下方式将列表转换为Maxima中的矩阵:
DataL : [ [1,2], [2,4], [3,6], [4,8] ];
DataM: apply('matrix,DataL);
Run Code Online (Sandbox Code Playgroud)
怎么用其他方式呢?如何将给定矩阵DataM转换为DataL列表?
我试图找到一种方法来获得使用Maxima(wxMaxima)的函数的最大值和最小值,但直到现在我还没有找到如何做到这一点.
你能告诉我你会怎么做?
例如,假设我有以下代码:
f(x) := (3*x)/(x^2 - 2*x + 4);
Run Code Online (Sandbox Code Playgroud)
然后我在-10,10范围内绘制此函数,并获得:

我知道最大值是3/2,最小值应该是-1/2.
我有以下最大值代码:
declare(p, real)$
declare(q, real)$
declare(m, real)$
is(-(4*p^2*q^2)/m^2-(4*p^4)/m^2 < 0);
Run Code Online (Sandbox Code Playgroud)
这评估为未知。我可以声明p,q和m是正实数?
我知道有很多地方可以问这个问题,但我想我会在这里试试.我已经看起来已经从Maxima的好人那里得到了尽可能多的帮助.
我用SBCL运行Maxima并且一直出错;
INFO: Binding stack guard page unprotected
Binding stack guard page temporarily disabled: proceed with caution
Maxima encountered a Lisp error:
Binding stack exhausted.
PROCEED WITH CAUTION.
Automatically continuing.
To enable the Lisp debugger set *debugger-hook* to nil.
INFO: Binding stack guard page reprotected
Run Code Online (Sandbox Code Playgroud)
我已经通过为动态空间大小和控制堆栈大小添加更大的值来修改对Maxima(其可执行文件)的调用,并且我已经查看了./.../sbcl-help以获取要添加到$的参数的任何想法maxima可执行文件中的MAXIMA_LISP_OPTIONS.
另外,我通常在运行它之前做这些(虽然我认为它们是不必要的,因为操作系统很聪明,也许最后一个需要摆弄);
sudo fstrim -v /
echo 3 | sudo tee /proc/sys/vm/drop_caches
echo 262144 | sudo tee /proc/sys/vm/max_map_count
Run Code Online (Sandbox Code Playgroud)
在完成Maxima工作的几次计算之后,我投入了几个
:lisp (sb-ext:gc :full t)
Run Code Online (Sandbox Code Playgroud)
希望避免这个错误.我不太了解lisp,当然也不了解垃圾收集的所有内容.
虽然我在Maxima工作中使用了memoization,但我的计算有点密集和递归.我的电脑用 …
我想用任意大小的矩阵进行一些计算.简单的例子 - 使用两个矩阵NxM和MxK,使用任意元素,并将产品元素视为总和.
但我无法找到一种方法来进行这种符号计算,而无需将矩阵大小指定为整数.
matrix()想要整数,makelist()想要整数.
有没有办法在maxima中做这样的事情?还是CAS?
假设我有一个表达式(实际上我的更复杂,成千上万的字符)
expr:a+b*c+b*c*d;
Run Code Online (Sandbox Code Playgroud)
我想用符号替换内部子表达式(有助于避免重新计算公共子表达式),k代替b*c:
subst(b*c=k,expr);
Run Code Online (Sandbox Code Playgroud)
回报
k+b*c*d+a
Run Code Online (Sandbox Code Playgroud)
如何让Maxima计算出"正确"的替代以便返回(除了obviuos简化,这里)
k+k*d+a
Run Code Online (Sandbox Code Playgroud)
?
for i:1 thru 3 step 1 do;
posix:arithsum(li*cos(ri(t))),1,i-1)+(li*cos(ri(t))/2);
posiy:arithsum(li*sin(ri(t))),1,i-1)+(li*sin(ri(t))/2);
Run Code Online (Sandbox Code Playgroud)
我想要做的是获得 6 个位置函数(3 x 和 3 y)。它应该给我如下值:
pos1x:l1*cos(r1(t))/2;
pos2x:l1*cos(r1(t))+l2*cos(r2(t))/2;
pos3x:l1*cos(r1(t))+l2*cos(r2(t))+l3*cos(r3(t))/2;
Run Code Online (Sandbox Code Playgroud)
那么,为什么我的代码不起作用?