将变量声明为最大值的正实数?
Declare a variable to be a positive real number in maxima?
我有以下最大值代码:
declare(p, real)$
declare(q, real)$
declare(m, real)$
is(-(4*p^2*q^2)/m^2-(4*p^4)/m^2 < 0);
这评估为未知。我可以声明 p,q
和 m
是 正数 实数吗?
问题的简答
将@Michael O. 的评论变成答案的形式:
assume
函数可以用来设置变量的谓词,特别是告诉maxima一个数是正数(这对于用integrate
计算一些积分也很有用)
assume(p>0,q>0,m>0);
is(-(4*p^2*q^2)/m^2-(4*p^4)/m^2 < 0);
更多用于管理谓词的函数
可以使用 facts
函数显示谓词列表,并使用 forget
函数删除谓词列表
kill(all); /*Clears many things, including facts*/
assume(a>0,b>0,c>0)$ /*Learn facts*/
facts();
forget(b>0)$ /*Forget one fact*/
facts();
forget(facts())$ /*Forget all known facts*/
facts();
assume
与 integrate
函数的用法示例
一些数学结果取决于例如一些参数的符号。特别是一些积分的情况。
(%i0) print("Without predicates: Maxima prompts the user")$
kill(all)$
L : sqrt(1 - 1/(R^2))$
facts();
integrate(x,x,0,L);
print("With predicates: Maxima does not need to prompt the user because it already knows the answer")$
kill(all)$
assume(R>0)$
L : sqrt(1 - 1/(R^2))$
facts();
integrate(x,x,0,L);
Without predicates: Maxima prompts the user
(%o0) []
Is "R" positive or negative? positive;
(%o1) (R^2-1)/(2*R^2)
With predicates: Maxima does not need to prompt the user because it already knows the answer
(%o2) [R>0]
(%o3) (R^2-1)/(2*R^2)
我有以下最大值代码:
declare(p, real)$
declare(q, real)$
declare(m, real)$
is(-(4*p^2*q^2)/m^2-(4*p^4)/m^2 < 0);
这评估为未知。我可以声明 p,q
和 m
是 正数 实数吗?
问题的简答
将@Michael O. 的评论变成答案的形式:
assume
函数可以用来设置变量的谓词,特别是告诉maxima一个数是正数(这对于用integrate
计算一些积分也很有用)
assume(p>0,q>0,m>0);
is(-(4*p^2*q^2)/m^2-(4*p^4)/m^2 < 0);
更多用于管理谓词的函数
可以使用 facts
函数显示谓词列表,并使用 forget
函数删除谓词列表
kill(all); /*Clears many things, including facts*/
assume(a>0,b>0,c>0)$ /*Learn facts*/
facts();
forget(b>0)$ /*Forget one fact*/
facts();
forget(facts())$ /*Forget all known facts*/
facts();
assume
与 integrate
函数的用法示例
一些数学结果取决于例如一些参数的符号。特别是一些积分的情况。
(%i0) print("Without predicates: Maxima prompts the user")$
kill(all)$
L : sqrt(1 - 1/(R^2))$
facts();
integrate(x,x,0,L);
print("With predicates: Maxima does not need to prompt the user because it already knows the answer")$
kill(all)$
assume(R>0)$
L : sqrt(1 - 1/(R^2))$
facts();
integrate(x,x,0,L);
Without predicates: Maxima prompts the user
(%o0) []
Is "R" positive or negative? positive;
(%o1) (R^2-1)/(2*R^2)
With predicates: Maxima does not need to prompt the user because it already knows the answer
(%o2) [R>0]
(%o3) (R^2-1)/(2*R^2)