| 查看: 1071 | 回复: 8 | ||
[求助]
Mathematica求助 泰勒展开和求导 已有1人参与
|
|
求教Mathematica: 多元函数展开后(Series[]),比如x展开到m次,y展开到n次,怎么只保留m+n<4的项? 多谢!! |
» 猜你喜欢
拟解决的关键科学问题还要不要写
已经有8人回复
存款400万可以在学校里躺平吗
已经有26人回复
最失望的一年
已经有7人回复
推荐一本书
已经有16人回复
国自然申请面上模板最新2026版出了吗?
已经有20人回复
26申博
已经有3人回复
请教限项目规定
已经有3人回复
基金委咋了?2026年的指南还没有出来?
已经有10人回复
基金申报
已经有6人回复
疑惑?
已经有5人回复
» 本主题相关价值贴推荐,对您同样有帮助:
一个关于 quadgk 函数求积分的问题
已经有7人回复
Matlab 7.0 基础教程 清华大学
已经有29人回复
如何求解下列方程:xlnx=a(x-b)
已经有14人回复
[求助]用Mathematica软件进行taylor展开
已经有3人回复
walk1997
金虫 (著名写手)
- 应助: 1 (幼儿园)
- 金币: 4676.2
- 红花: 22
- 帖子: 1066
- 在线: 798.1小时
- 虫号: 416039
- 注册: 2007-06-29
- 性别: GG
- 专业: 粒子物理学和场论
2楼2015-04-23 06:46:30
3楼2015-04-27 17:45:06
walk1997
金虫 (著名写手)
- 应助: 1 (幼儿园)
- 金币: 4676.2
- 红花: 22
- 帖子: 1066
- 在线: 798.1小时
- 虫号: 416039
- 注册: 2007-06-29
- 性别: GG
- 专业: 粒子物理学和场论
|
对这种多项式处理不是很熟 另外对模式的理解个人还不是很深入 只能用比较笨的方式 下面的代码是比较笨的方法解决你这个问题 例子是7个变量泰勒展开,只取总的次数小于5的项。 个人感觉mathematic应该有更简单的方式只需要构造单个的rule 挑选出所需的项,不过我没找到这样的函数,只好用字符的方式和多个rule来实现这种笨挑选。 f[x__] := Sin[Total[x]]; x = {a, b, c, d1, d2, d3, d4}; n = 5; test = f[x] jihe = Delete[Subsets[x], 1]; rule = Map[((Times @@ Table[#[]^ToExpression[("n" <> ToString <> "_." ], {i, 1, Length[#]}]) /; Evaluate[ Total[Table[ ToExpression[("n" <> ToString)], {i, 1, Length[#]}]] >= n]) -> 0 &, jihe] Do[ test = ExpandAll[Normal[Series[test, {x[], 0, n - 1}]]]; test = test /. rule; , {i, 1, Length[x]}] test |
4楼2015-05-05 22:05:30
walk1997
金虫 (著名写手)
- 应助: 1 (幼儿园)
- 金币: 4676.2
- 红花: 22
- 帖子: 1066
- 在线: 798.1小时
- 虫号: 416039
- 注册: 2007-06-29
- 性别: GG
- 专业: 粒子物理学和场论
|
上面包含了i] 出错 改成k f[x__] := Sin[Total[x]]; x = {a, b, c, d1, d2, d3, d4}; n = 5; test = f[x] jihe = Delete[Subsets[x], 1]; rule = Map[((Times @@ Table[#[[k]]^ToExpression[("n" <> ToString[k] <> "_." ], {k, 1, Length[#]}]) /; Evaluate[ Total[Table[ ToExpression[("n" <> ToString[k])], {k, 1, Length[#]}]] >= n]) -> 0 &, jihe] Do[ test = ExpandAll[Normal[Series[test, {x[[k]], 0, n - 1}]]]; test = test /. rule; , {k, 1, Length[x]}] test |
5楼2015-05-05 22:07:11
walk1997
金虫 (著名写手)
- 应助: 1 (幼儿园)
- 金币: 4676.2
- 红花: 22
- 帖子: 1066
- 在线: 798.1小时
- 虫号: 416039
- 注册: 2007-06-29
- 性别: GG
- 专业: 粒子物理学和场论
晕 粘贴还有问题 把" 也改了吧f[x__] := Sin[Total[x]]; x = {a, b, c, d1, d2, d3, d4}; n = 5; test = f[x] jihe = Delete[Subsets[x], 1]; rule = Map[((Times @@ Table[#[[k]]^ToExpression["n" <> ToString[k] <> "_."], {k, 1, Length[#]}]) /; Evaluate[ Total[Table[ ToExpression[("n" <> ToString[k])], {k, 1, Length[#]}]] >= n]) -> 0 &, jihe] Do[ test = ExpandAll[Normal[Series[test, {x[[k]], 0, n - 1}]]]; test = test /. rule; , {k, 1, Length[x]}] test |
6楼2015-05-05 22:09:37
walk1997
金虫 (著名写手)
- 应助: 1 (幼儿园)
- 金币: 4676.2
- 红花: 22
- 帖子: 1066
- 在线: 798.1小时
- 虫号: 416039
- 注册: 2007-06-29
- 性别: GG
- 专业: 粒子物理学和场论
|
运行结果 a - a^3/6 + b - (a^2 b)/2 - (a b^2)/2 - b^3/6 + c - (a^2 c)/2 - a b c - (b^2 c)/2 - (a c^2)/2 - (b c^2)/2 - c^3/6 + d1 - (a^2 d1)/2 - a b d1 - (b^2 d1)/2 - a c d1 - b c d1 - (c^2 d1)/2 - (a d1^2)/2 - ( b d1^2)/2 - (c d1^2)/2 - d1^3/6 + d2 - (a^2 d2)/2 - a b d2 - ( b^2 d2)/2 - a c d2 - b c d2 - (c^2 d2)/2 - a d1 d2 - b d1 d2 - c d1 d2 - (d1^2 d2)/2 - (a d2^2)/2 - (b d2^2)/2 - (c d2^2)/2 - ( d1 d2^2)/2 - d2^3/6 + d3 - (a^2 d3)/2 - a b d3 - (b^2 d3)/2 - a c d3 - b c d3 - (c^2 d3)/2 - a d1 d3 - b d1 d3 - c d1 d3 - ( d1^2 d3)/2 - a d2 d3 - b d2 d3 - c d2 d3 - d1 d2 d3 - (d2^2 d3)/2 - ( a d3^2)/2 - (b d3^2)/2 - (c d3^2)/2 - (d1 d3^2)/2 - ( d2 d3^2)/2 - d3^3/6 + d4 - (a^2 d4)/2 - a b d4 - (b^2 d4)/2 - a c d4 - b c d4 - (c^2 d4)/2 - a d1 d4 - b d1 d4 - c d1 d4 - ( d1^2 d4)/2 - a d2 d4 - b d2 d4 - c d2 d4 - d1 d2 d4 - (d2^2 d4)/2 - a d3 d4 - b d3 d4 - c d3 d4 - d1 d3 d4 - d2 d3 d4 - (d3^2 d4)/2 - ( a d4^2)/2 - (b d4^2)/2 - (c d4^2)/2 - (d1 d4^2)/2 - (d2 d4^2)/2 - ( d3 d4^2)/2 - d4^3/6 没好好看 应该是没问题 |
7楼2015-05-05 22:10:28
gsview
木虫 (小有名气)
- 应助: 4 (幼儿园)
- 金币: 2446.9
- 红花: 3
- 帖子: 146
- 在线: 233.8小时
- 虫号: 443276
- 注册: 2007-10-27
- 性别: GG
- 专业: 核物理
【答案】应助回帖
★ ★ ★ ★ ★
DRAGONZXD: 金币+5, ★★★很有帮助 2015-06-02 21:41:18
DRAGONZXD: 金币+5, ★★★很有帮助 2015-06-02 21:41:18
|
看了walk1997的程序觉得那个rule还是太复杂。 其实楼主的要求就是想把各变量的幂次能合起来,其实很简单,只需要在你想要合起来的变量都给一个参数就可以了。 例如 f[x__] := Sin[Total[x]]; x = {a, b, c}; x1=x*h 这样你把f[x1]对x在0点展开的时候h的幂次就所有变量的幂次的和。 而且你还可以进一步复杂,例如a和b的幂次之和不能大于n,b和c的幂次之和不能大于m,总幂次又要小于L,那你就相应的把这些都给一个一样的参数就可以了,那x1={a*h1*h,b*h1*h2*h,c*h2*h}, 这样筛选的rule就可以很简单的是 rule={h1^j1_/;(j1>n)->0,h2^j2_/;(j2>m)->0,h^j_/;(j>=L)->0} 稍微改一下walk的程序就是 f[x__] := Sin[Total[x]]; x0 = {a, b, c, d, e}; x = x0*h; n = 5; test = f[x]; rule = {h^n_ /; (n > 4) -> 0}; Do[test = ExpandAll[Normal[Series[test, {x0[[k]], 0, n - 1}]]]; test = test /. rule; , {k, 1, Length[x]}] test = test /. {h -> 1}; |
8楼2015-05-10 15:07:47
walk1997
金虫 (著名写手)
- 应助: 1 (幼儿园)
- 金币: 4676.2
- 红花: 22
- 帖子: 1066
- 在线: 798.1小时
- 虫号: 416039
- 注册: 2007-06-29
- 性别: GG
- 专业: 粒子物理学和场论
9楼2015-05-10 17:28:55













回复此楼
], {i,