用Mathematica程序实现配方

用Mathematica程序实现配方,第1张

t = w^x

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函数,那么就能自动加载程序包。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11797093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存