24小时热门版块排行榜    

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

DRAGONZXD

新虫 (初入文坛)

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

求教Mathematica:

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

多谢!!
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注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的回帖
查看全部 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的回帖
信息提示
请填处理意见