我正在使用maxima软件来帮助我简化公式.通常情况下,我可以轻松地管理subst,ratsubst,factor,ratsimp,......但是仍然有很少的公式我觉得难以简化我想要的方式.
假设a> b和c> d,我想用这样的方式简化以#开头的分数:
-(a - b)/(d - c) -> ( a - b )/( c - d)
Run Code Online (Sandbox Code Playgroud)
但我不知道怎么做.似乎maxima简化算法将尝试以自己的方式对变量进行排序.
我创建了自己的最大值函数来尝试简化这些无用的减号.
no_minus(fraction):=
block([simp:true,
numerat:expand(-ratnumer(fraction)),
denominat:expand(-ratdenom(fraction))],
block([simp:false],
numerat/denominat));
-a/(b-x);
no_minus(-a/(b-x));
no_minus(-a*b*c/(b-x*b*f-f));
Run Code Online (Sandbox Code Playgroud)
我原以为no_minus(-a /(bx))会返回/(xb),但事实并非如此.
我想介绍一个新的中缀运算符来表示两个表达式大致相等.例如,如果x大约等于y.我想注意一下
x =~ y
infix("=~").
如何配置简化器以便在输入时
2*x+3 =~ u+v;
(%-3)/2;
输出是
x =~ (u+v-3)/2
为了说明具有无限解系列的一阶颂歌的柯西问题,我将绘制参数化解并可以通过滑块控制参数值。
完整的柯西问题为 y'=sqrt(|y|), y(0)=0,参数解为 y_c(x):={0, if c=>x; (xc)^2/4,如果 x=>c}。
所以我会用滑块来绘制 y=y_c(x) 来控制 c 的值。
谢谢。
我正在 Maxima 中编写代码,并且有三个图。我可以毫无困难地单独绘制这些,但我不知道如何将它们全部放在一个图上,而不用在一个 for 循环中进行,如果不深入太多细节,这对我的代码来说会很困难。
for i:1 step 1 while i<=n-1 do(figgdown[i]:plot2d(
[discrete,[xx[i], -xx[i]],[p[i],p[i]]]));
for i:1 step 1 while i<=n-1 do(figgup[i]:plot2d(
[discrete,[xx[i], -xx[i]],[q[i], q[i]]]));
for i:1 step 1 while i<=n-1 do(figgmiddle[i]:plot2d(
[discrete,[xx[i], -xx[i]],[pq[i], pq[i]]]));
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以做类似 Mathematica 中的 Show 功能的操作,其中图形一起显示?最好的,本
log2(x) := log(x) / log(2);
log2(8), float;
Run Code Online (Sandbox Code Playgroud)
但这并没有给出 3,而是得到log(8)/log(2)。
我正在调用该函数mnewton(0=expr, alpha, %pi/4)来获取一个相当复杂的方程的根expr。
%(i1) mnewton(0=expr, alpha, %pi/4)
%(o1) [alpha=0.678193754078621]
Run Code Online (Sandbox Code Playgroud)
我需要对这个结果应用另一个函数(例如sin),然后想要绘制它。仅链接功能不起作用:
%(i2) sin(mnewton(0=expr, alpha, %pi/4)[1])
%(o2) sin(alpha=0.678193754078621)
Run Code Online (Sandbox Code Playgroud)
这是因为表达式alpha=0.678193754078621不是数字。我如何转换alpha=0.678193754078621为 just 0.678193754078621?
我不能只是复制数值并手动添加它,因为我想绘制它,并且expr每个 y 都有不同的根。
我想制作一个小的“库”供将来的maxima脚本使用,但是我不确定如何继续(我使用wxMaxima)。千里马的文档覆盖save(),load()和loadFile()功能,但不提供的例子。因此,我不确定我是否使用正确/最佳方法。我当前基于此帖子的解决方案将我的库以* .lisp格式存储。
举一个简单的例子,假设我的库定义了cosSin(x)函数。我打开一个新会话并将此函数定义为
(%i0) cosSin(x) := cos(x) * sin(x);
Run Code Online (Sandbox Code Playgroud)
然后,将其保存到/tmp/目录中的Lisp文件中。
(%i1) save("/tmp/lib.lisp");
Run Code Online (Sandbox Code Playgroud)
然后,我打开一个新的maxima实例并加载该库
(%i0) loadfile("/tmp/lib.lisp");
Run Code Online (Sandbox Code Playgroud)
将cosSin(x)现在定义可以称得上
(%i1) cosSin(%pi/4)
(%o1) 1/2
Run Code Online (Sandbox Code Playgroud)
但是,我注意到maxima附带的大量库都是* .mac格式的:该/usr/share/maxima/5.37.2/share/目录包含428 * .mac文件和516 * .lisp文件。这是更好的格式吗?我将如何生成此类文件?
更一般而言,库的保存和加载方式有哪些不同?推荐的方法是什么?
假设我有以下功能:
f(x) := if x<=0 then 0 else if x<=1 then 1 else -1;
Run Code Online (Sandbox Code Playgroud)
或任何其他分段定义的函数。
函数定义似乎有效:
(%i9) f(-11);
f(1/2);
f(2);
(%o7) 0
(%o8) 1
(%o9) -1
Run Code Online (Sandbox Code Playgroud)
然而,这里不评估集成。有可能以某种方式获得 Maxima 中的积分值吗?如果没有的话,是否可以用最大数值来完成?
我想简化 log(8)/log(2)
我知道
log(8)/log(2) = log(2^3)/log(2) = 3*log(2)/log(2) = 3
Run Code Online (Sandbox Code Playgroud)
这在 Maxima 中是可能的,但对我不起作用:
Maxima 5.41.0 http://maxima.sourceforge.net
using Lisp GNU Common Lisp (GCL) GCL 2.6.12
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) log(8)/log(2);
log(8)
(%o1) ------
log(2)
(%i2) logexpand;
(%o2) true
(%i3) log(2^3)/log(2);
(%o3) log(8)
------
log(2)
(%i4) logexpand;
(%o4) true
Run Code Online (Sandbox Code Playgroud)
我用:
round(float(log(8)/log(2));
Run Code Online (Sandbox Code Playgroud)
但我认为这不是最好的解决方案(我使用整数)
问题:
我有一个有理函数:f(x) = P(x)/Q(x)。\n例如:
f(x) = (5x + 3)/(1-x^2)\nRun Code Online (Sandbox Code Playgroud)\n\n因为 f(x) 是生成函数,所以可以写为:
\n\nf(x) = a0 + a1*x + a2*x\xc2\xb2 + ... + a_n*x^n + ... = P(x)/Q(x)\nRun Code Online (Sandbox Code Playgroud)\n\n如何使用 sympy 求生成函数的第f(x)n 项(即a_n)?
如果 Sympy 中没有这样的实现,我也很想知道这是否在其他包中实现,例如 Maxima。
\n\n我很感激任何帮助。
\n