24小时热门版块排行榜    

查看: 514  |  回复: 3

wocamuchong

铁虫 (小有名气)

[求助] 怎样更快地算这个几个积分常数? 已有1人参与

Hi,

我有以下这个函数
p[y_] = c4 + 2 Log[Sqrt[y + c2] c3 BesselJ[1/3, (y + c2)^(1.5) 2/3 c1 ]]
它的边界条件是p[1]=1, p[-1]=0, p''[1]=-50, p'''[-1]=0。

然后我要确定这几个积分常数,我用以下的代码
NSolve[{Evaluate[p[y] /. y -> 1] == 1,
  Evaluate[p[y] /. y -> -1] == 0,
  Evaluate[p''[y] /. y -> 1] == -50,
  Evaluate[p'''[y] /. y -> -1] == 0}, {c1, c2, c3, c4}]

但是算得十分慢。有没有更好的代码或者方法在mathematica里算这几个公式?或者matlab,maple可以算的更快?谢谢。
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xzczd

木虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
方程本身十分复杂,所含的特殊函数似乎没法化去。(你可以用FunctionExpand展一下看看。)我不认为这是换个软件就能解决的问题。如果知道4个参数的大概范围,那可以考虑FindRoot。当然多参数情况下的FindRoot效果不佳的情况也是很多的。总之这个问题从模型本身出发去分析较为现实。
小木虫Mathematica版块已毁(当然原本也不咋的),建议大家前往百度贴吧或Stackexchange。
2楼2015-03-16 22:26:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wocamuchong

铁虫 (小有名气)

引用回帖:
2楼: Originally posted by xzczd at 2015-03-16 22:26:08
方程本身十分复杂,所含的特殊函数似乎没法化去。(你可以用FunctionExpand展一下看看。)我不认为这是换个软件就能解决的问题。如果知道4个参数的大概范围,那可以考虑FindRoot。当然多参数情况下的FindRoot效果不 ...

谢谢你的回复。

我们再讨论一会儿。其实这个p的方程是

p'''' + p' p''' + (p'')^2=0

其实通过数值方法,我可以得到这个方程的数值解。你知道在mathematica里怎么做fitting吗?就是我现在有数值解了,也有函数表达式了,我这个函数表达式来fit数值解。

谢谢
3楼2015-03-16 23:45:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xzczd

木虫 (小有名气)

【答案】应助回帖

引用回帖:
3楼: Originally posted by wocamuchong at 2015-03-16 23:45:54
谢谢你的回复。

我们再讨论一会儿。其实这个p的方程是

p'''' + p' p''' + (p'')^2=0

其实通过数值方法,我可以得到这个方程的数值解。你知道在mathematica里怎么做fitting吗?就是我现在有数值解了,也有 ...

利用获得的数值解算出足够多的点后再用FindFit或者NonLinearModelFit尝试拟合即可。当然拟合效果怎么样是另一回事,如果是初值敏感的问题那就又得面对寻找合适初值的无尽烦恼了。
小木虫Mathematica版块已毁(当然原本也不咋的),建议大家前往百度贴吧或Stackexchange。
4楼2015-03-17 14:20:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wocamuchong 的主题更新
信息提示
请填处理意见