24小时热门版块排行榜    

查看: 1191  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 应该是93bebmhtak前后十一个字符比较关键 +20 Lanmanbaby 2026-08-09 33/1650 2026-08-12 11:26 by lantianda
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +5 Tide man 2026-08-11 5/250 2026-08-12 09:24 by kangban
[基金申请] 奇怪,两个人的filecode固定段从头到尾一模一样 +7 布布和一二 2026-08-10 10/500 2026-08-12 09:12 by 布布和一二
[基金申请] 综述论文作为代表作会不会影响评审专家的印象分? +11 yufeiwaner 2026-08-09 13/650 2026-08-12 08:17 by yufeiwaner
[基金申请] 是这周出结果还是下周出结果? +3 yuleib84 2026-08-11 3/150 2026-08-11 21:53 by jnhyjjm
[基金申请] 小木虫上这么多卖论文的,真有人买论文么?感觉没必要啊 +8 Tide man 2026-08-10 9/450 2026-08-11 20:39 by beefly
[基金申请] 有时候,自然基金真的不能太认真 (我的申报经验) +3 majunge000 2026-08-11 4/200 2026-08-11 20:13 by lch2012
[基金申请] 帮忙看看fileCode +7 wwncly 2026-08-10 13/650 2026-08-11 19:36 by 冰心玉壶晴
[基金申请] 分享一下我之前已中青C的计划书的filecode +3 布布和一二 2026-08-11 4/200 2026-08-11 15:20 by aasahr
[基金申请] 听说今天filecode变了 +26 布布和一二 2026-08-06 49/2450 2026-08-11 13:18 by WH3796
[基金申请] 基金中了 +15 laoda193707 2026-08-06 15/750 2026-08-11 00:11 by jiafei2190
[基金申请] 关于代码变化问题,想知道的进来 +17 且听虎啸 2026-08-07 24/1200 2026-08-10 18:35 by zhangduo2008
[基金申请] 关于Filecode分析方法 +3 majunge000 2026-08-10 3/150 2026-08-10 15:46 by lch2012
[基金申请] 国自然结果 +4 Vierhys 2026-08-10 8/400 2026-08-10 15:06 by Vierhys
[基金申请] 这样的filecode谁见过 +11 布布和一二 2026-08-08 22/1100 2026-08-10 11:10 by wmfsnow
[基金申请] filecode与中标关系的预测 +5 布布和一二 2026-08-07 5/250 2026-08-09 16:15 by 袁向阳007
[基金申请] fileCode有新解读? +10 Tide man 2026-08-08 18/900 2026-08-09 12:55 by 仁砚薪传
[基金申请] 关于filecode,很负责任的告诉大家 +6 爱看书的可乐 2026-08-08 7/350 2026-08-08 22:13 by a_niu
[基金申请] 关于豆爷回答的JTJC与%2F数量 +5 yang182083 2026-08-06 7/350 2026-08-08 18:29 by zhanghaozhu
[基金申请] 固定端突然变了,今天 +6 archvillain 2026-08-06 10/500 2026-08-07 16:03 by 医学老男孩
信息提示
请填处理意见