24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 1108  |  回复: 8

DRAGONZXD

新虫 (初入文坛)

[求助] Mathematica求助 泰勒展开和求导 已有1人参与

求教Mathematica:

多元函数展开后(Series[]),比如x展开到m次,y展开到n次,怎么只保留m+n<4的项?

多谢!!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

f[x_, y_] := Sin[x + y];
test = Normal[Series[f[x, y], {x, 0, 4}, {y, 0, 4}]];
test = test // Expand
test = test /. {x^n1_.*y^n2_. /; (n1 + n2 >= 4) -> 0}
2楼2015-04-23 06:46:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

DRAGONZXD

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by walk1997 at 2015-04-23 06:46:30
f := Sin;
test = Normal[Series];
test = test // Expand
test = test /. {x^n1_.*y^n2_. /; (n1 + n2 >= 4) -> 0}

多谢啊!
如果自变量特别多,比如Sin[a+b+c+d+....],那么多项式就有很多种组合,怎么舍去任意组合的高次的项呢?(不是手动的找有哪些组合)
谢谢!
3楼2015-04-27 17:45:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

对这种多项式处理不是很熟  另外对模式的理解个人还不是很深入 只能用比较笨的方式
下面的代码是比较笨的方法解决你这个问题

例子是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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

上面包含了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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

晕  粘贴还有问题 把" 也改了吧
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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

运行结果
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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gsview

木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★
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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

引用回帖:
8楼: Originally posted by gsview at 2015-05-10 15:07:47
看了walk1997的程序觉得那个rule还是太复杂。
其实楼主的要求就是想把各变量的幂次能合起来,其实很简单,只需要在你想要合起来的变量都给一个参数就可以了。
例如
f := Sin;
x = {a, b, c};
x1=x*h
这样你把 ...

good idea! 3x
你引入了一个很巧妙的参数
我的办法太直接,太笨.

你的处理可以看成是2个rule的叠加
1:  x-> h*x
2: h^n_/n>4 ->0
9楼2015-05-10 17:28:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 DRAGONZXD 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿上海海洋大学083200食品学硕,求调剂,接受其他专业083200 +3 what张 2026-04-04 4/200 2026-04-04 09:50 by rzh123456
[考研] 292求调剂 +4 2022080213 2026-04-04 4/200 2026-04-04 09:14 by barlinike
[考研] 283分求调剂 +6 小聂爱学习 2026-04-03 6/300 2026-04-03 20:46 by zhq0425
[考研] 工科341分调剂 +3 洛多罗 2026-04-03 3/150 2026-04-03 14:20 by 1753564080
[考研] 材料专硕 调剂 +11 CXN123456 2026-04-03 11/550 2026-04-03 14:09 by 1753564080
[考研] 08工科275分求调剂 +14 AaAa7420 2026-03-31 14/700 2026-04-03 11:13 by cocolv
[考研] 302求调剂一志愿华中师范大学 +7 小江小江江江 2026-04-02 7/350 2026-04-02 21:48 by macy2011
[考研] 调剂 +3 好好读书。 2026-04-01 6/300 2026-04-02 15:49 by liumengping
[考研] 0832食品科学与工程学硕282调剂 +4 鱼在水中游a 2026-04-02 7/350 2026-04-02 14:12 by baoball
[考研] 一志愿346上海大学生物学 +3 上海大学346调剂 2026-04-01 3/150 2026-04-02 08:36 by w虫虫123
[考研] 一志愿北交大材料工程,总分358 +4 cs0106 2026-04-01 4/200 2026-04-02 07:42 by 尚水阁主
[考研] 086000生物与医药298调剂求助 +4 元元青青 2026-03-31 6/300 2026-04-01 11:13 by syh9288
[考研] 材料科学与工程求调剂 +13 深V宿舍吧 2026-03-29 13/650 2026-03-31 19:50 by Dyhoer
[考研] 080500-315分复试调剂 +9 上岸3821 2026-03-31 9/450 2026-03-31 17:29 by 唐沐儿
[考研] 材料工程专硕求调剂 +10 hyl3153942 2026-03-29 10/500 2026-03-31 16:31 by hypershenger
[考研] 英一数一总分334求调剂 +4 陈阳坤 2026-03-31 4/200 2026-03-31 14:22 by 记事本2026
[考研] 323分 食品与营养调剂 +3 嘿ooo 2026-03-31 3/150 2026-03-31 09:38 by longlotian
[考研] 材料专硕 085600求调剂 +7 BBQ233 2026-03-30 7/350 2026-03-30 17:44 by oooqiao
[考研] 348求调剂 +6 小懒虫不懒了 2026-03-28 6/300 2026-03-30 10:29 by Evan_Liu
[考研] 305求调剂 +8 RuiFairyrui 2026-03-28 8/400 2026-03-29 08:22 by fmesaito
信息提示
请填处理意见