24小时热门版块排行榜    

查看: 1074  |  回复: 8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

DRAGONZXD

新虫 (初入文坛)

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

求教Mathematica:

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

多谢!!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注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的回帖
查看全部 9 个回答

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的回帖
信息提示
请填处理意见