网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月12日漏签0天
mathematica吧 关注:19,846贴子:73,931
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 3回复贴,共1页
<<返回mathematica吧
>0< 加载中...

在Manipulate命令中如何使用先前定义的函数。

  • 只看楼主
  • 收藏

  • 回复
  • 矮穷挫中的战机
  • 模式匹配
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
想画一个图,最后在Manipulate命令这段卡住了,请各位大神赐教,代码如下
hxx[t_] := A0 Cos[\[Omega] t + \[Phi]0];
hxy[t_] := A0 Cos[\[Omega] t + \[Phi]0];; x0 = R Cos[\[Theta]]; y0 =
R Sin[\[Theta]]; \[Phi]0 = 0; (*参数*)
equs = {
D[x[t], {t, 2}] ==
1/2 D[hxx[t], {t, 2}] x0 + 1/2 D[hxy[t], {t, 2}] y0,
D[y[t], {t, 2}] ==
1/2 D[hxy[t], {t, 2}] x0 + 1/2 D[-hxx[t], {t, 2}] y0
}; (*微分方程*)
cond = {
x'[0] == 0, x[0] == x0, y'[0] == 0, y[0] == y0
}; (*初始条件*)
sol = Flatten[
DSolve[
{equs, cond},
{x[t], y[t]},
t]
] (*解微分方程*)
FullSimplify[
l = ComplexExpand[Abs[ComplexExpand[x[t] /. sol]]]^2 +
ComplexExpand[Abs[ComplexExpand[y[t] /. sol]]]^2
] (*考虑了复数情况的求模长*)
f = Normal[
FullSimplify[
Series[Sqrt[l], {A0, 0, 1}]
]
] (*展开至一阶近似*)
Manipulate[
PolarPlot[
f /. {R -> 1, A0 -> 0.1, \[Omega] -> 1}, {\[Theta], 0, 2 \[Pi]}
, PlotRange -> {{-1.2, 1.2}, {-1.2, 1.2}}
],
{t, 0, 4 \[Pi]}
]
最后一段命令中的f始终没办法把定义引入进去,请问该怎么办呢?


  • 矮穷挫中的战机
  • 模式匹配
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
第一段代码复制时出了点问题,不知道怎么多了个分号。在这里再复制一次
hxx[t_] := A0 Cos[\[Omega] t + \[Phi]0];
hxy[t_] := A0 Cos[\[Omega] t + \[Phi]0]; x0 = R Cos[\[Theta]]; y0 =
R Sin[\[Theta]]; \[Phi]0 = 0;(*参数*)equs = {D[x[t], {t, 2}] ==
1/2 D[hxx[t], {t, 2}] x0 + 1/2 D[hxy[t], {t, 2}] y0,
D[y[t], {t, 2}] ==
1/2 D[hxy[t], {t, 2}] x0 +
1/2 D[-hxx[t], {t, 2}] y0};(*微分方程*)cond = {x'[0] == 0, x[0] == x0,
y'[0] == 0, y[0] == y0};(*初始条件*)sol =
Flatten[DSolve[{equs, cond}, {x[t], y[t]}, t]] (*解微分方程*)
FullSimplify[
l = ComplexExpand[Abs[ComplexExpand[x[t] /. sol]]]^2 +
ComplexExpand[Abs[ComplexExpand[y[t] /. sol]]]^2] (*考虑了复数情况的求模长*)
f = Normal[FullSimplify[Series[Sqrt[l], {A0, 0, 1}]]] (*展开至一阶近似*)
Manipulate[
PolarPlot[
f /. {R -> 1, A0 -> 0.1, \[Omega] -> 1}, {\[Theta], 0, 2 \[Pi]},
PlotRange -> {{-1.2, 1.2}, {-1.2, 1.2}}], {t, 0, 4 \[Pi]}]


2025-08-12 09:55:16
广告
不感兴趣
开通SVIP免广告
  • guocong89
  • For循环
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Manipulate是一个非常复杂的东西, 对于不能理解的东西, 善于用Trace试试看
一个非常简单的例子
y = Sin[t x];
Manipulate[y, {t, 0, 1}] // Trace
看看结果就明白Manipulate背后做了多么复杂的操作
回头去看看文档, 无法解释的行为基本都会在Possible Issue里面提到
Manipulate only "notices" explicit visible parameters:
所以, 你需要定义一个关于t的函数来使用f
f2[t_] := Evaluate[f /. {R -> 1, A0 -> 0.1, \[Omega] -> 1}]
Manipulate[
PolarPlot[f2[t], {\[Theta], 0, 2 \[Pi]},
PlotRange -> {{-1.2, 1.2}, {-1.2, 1.2}}], {t, 0, 4 \[Pi]}]
这样子就可以了


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 3回复贴,共1页
<<返回mathematica吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示