公告:网站程序已升级到1.8.3,修复了提问时可能报错的问题,请清除浏览器缓存
2019-11-10

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

+1 投票
696 浏览

代码如下

kp = 4000; vm = 311; w = 314*Pi; k = 1; ki = 1;
DSolve[{y''[x] + (kp*vm*Cos[w*x - y[x]] -2/3 kp*k*vm*Cos[w*x] Cos[y[x]]) y'[x] -ki*vm*Sin[w*x - y[x]] - 2/3 ki*k*vm*Cos[w*x] Sin[y[x]] -kp*vm*w*Cos[w*x-y[x]] == 0, y[0] == 0, y'[0] == 100*Pi}, y[x], x];

MMA计算完了没有给结果

在SE社区得到些改进答案后,为了简化问题,我把表达式改成了:

y''[x] + kp*vm*Cos[w*x - y[x]]* y'[x] - ki*vm*Sin[w*x - y[x]] - 
  kp*vm*w*Cos[w*x - y[x]] == 0

显然解为y[x]=wx,但是MMA给的结果是:

kp = 2;
vm = 311;
w = 314*Pi;
k = 0;
ki = 100;
nsol = NDSolveValue[{y''[x] + kp*vm*Cos[w*x - y[x]]* y'[x] - 
       ki*vm*Sin[w*x - y[x]] - kp*vm*w*Cos[w*x - y[x]] == 0, 
     y[0] == 0, y'[0] == 100*Pi}, y, {x, 0, 0.1}, 
    MaxSteps -> Infinity]; // AbsoluteTiming
Plot[Mod[nsol[x], 2 Pi], {x, 0, 0.1}]

enter image description here

这明显是个错误的答案,为什么?

 

 

我发现了我的错误在于设置错了W的值,修改后为 w=100Pi

结果如

image

现在对了

接下来要解原始方程了、

分类:方程 | 用户: 细羊羊 (21 分)
修改于 用户:细羊羊
对 我改了下 正在跑

1个回答

+1 投票
 
已采纳
  1. 能给出SE的你的问题的连接吗?
  2. 试了一下,可以计算啊               
kp = 4000; vm = 311; w = 314*Pi; k = 1; ki = 1;
ysol = NDSolve[{y''[
      x] + (kp*vm*Cos[w*x - y[x]] - 
        2/3 kp*k*vm*Cos[w*x] Cos[y[x]]) y'[x] - 
     ki*vm*Sin[w*x - y[x]] - 2/3 ki*k*vm*Cos[w*x] Sin[y[x]] - 
     kp*vm*w*Cos[w*x - y[x]] == 0, y[0] == 0, y'[0] == 100*Pi}, 
  y[x], {x, 0, 10}]

用户: pfg (476 分)
采纳于 用户:细羊羊
而且跑了一下 跟你结果不一样
NDSolve::mxst: 在点 x == 0.0029853874341676935` 处达到了最大步数 10000. >>
我会出现这样的报错 跟你一样的代码
还有一种方法
kp = 2;
vm = 311;
w = 100*Pi;
k = 1;
ki = 100;
nsol = NDSolveValue[{y''[
        x] + (kp*vm*Cos[w*x - y[x]] -
          2/3 kp*k*vm*Cos[w*x] Cos[y[x]]) y'[x] -
       ki*vm*Sin[w*x - y[x]] - 2/3 ki*k*vm*Cos[w*x] Sin[y[x]] -
       kp*vm*w*Cos[w*x - y[x]] == 0, y[0] == 0, y'[0] == 100*Pi},
    y, {x, 0, 0.1}, MaxSteps -> Infinity]; // AbsoluteTiming
Plot[Mod[nsol[x], 2 Pi], {x, 0, 0.1}]
感觉准确些
不清楚了,难道是由于版本的问题? 我的是10.4.1 mac版
可能是版本的问题
...