f = a w^(2 x) + b w^x + c
a1 = Coefficient[f, t, 2]
a2 = Coefficient[f, t, 1]
a3 = Coefficient[f, t, 0]
g = (#1 (t + #2/(2 #1))^2 + #3 - #2^2/(4 #1)) &[a1, a2, a3]
说明:t是人为指定,需要进行配方的变量
f是要进行配方的二次多项式
g是对f配方后的结果
Mathematica代码如下:co ={a, b, c, d, e, f, g, h, i, j, k}
expr = co.x^Range[10, 0, -1]
NSolve[D[expr, {x, 2}] == 0, x]
因为方程次数高于5,所以一般只有数值解。
第一句是给系数赋初值,对应x次数由高到低(一定要先赋值,否则没法计算)。
第二句是产生表达式,这里用了矢量的标量积来缩减表达式。
第三句是求导,求数值解。
作为例子,比如:
co = Range[11]
expr = co.x^Range[10, 0, -1]
NSolve[D[expr, {x, 2}] == 0, x]
写一个init.m文件,然后再在$BaseDirectory目录下的autoload文件夹中建立一个文件夹(名字随便,姑且叫haha),然后在test文件夹中建立一个名为Kernel的文件夹,把init.m文件放入kernel,最后在test文件夹中放入你需要加载的程序包(程序包的名字比如叫dr,里面有个同名函数也叫dr)。就可以自动载入程序包。其中init.m文件这样写:
BeginPackage["haha`"]
EngPacakge[]
DeclarePackage["haha`dr`",{"dr"}]
Null
其中花括号里的dr就是程序包中的函数名(可以不止一个)。
如果$BaseDirectory目录下的Kernel文件夹中的init.m文件能够在mma启动的时候自动加载,如果在里面写一些指令的话,那么开启mma的时候就能自动执行,比如把某个路径加入$Path,或者用Get函数自动加载存放在默认路径下的程序包。
如果在autoload文件夹下建立一个子目录A,然后在这个子目录中创建Kernel文件夹并且放入init.m文件,如果这个init.m中写入了A的路径和Get函数,那么就能自动加载程序包。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)