【问题标题】:MATLAB integration of an anonymous function匿名函数的 MATLAB 集成
【发布时间】:2011-01-29 13:30:42
【问题描述】:

我想问如何在 MATLAB 中编写此代码。

我想将fp(z)z(0,x) 集成。我试过这个:

fpz=@(z) f1x(z) ./ quadl(f1x(z),0,1);

sol=int(fpz,0,x)  --> i also tried sol=quadl(fpz,0,x)
y=solve('y=sol',x)

xf=@ (y) y ;   -->this is the function i want

f1x=@ (x) 1 ./(x.^2+1)fpx = @(x) f1x(x) ./ quadl(f1x,0,1); 的位置

但它不起作用。


您好,感谢您的帮助。 问题是我想要一个分析解决方案,但我找不到。 我希望 f1x 给我 " 1/x^2+1" , fpx "4/pi*(1+x^2) 和 fpz "4ArcTan(x)/pi",而不是给我 "f1x=@ 1. /(x^2+1)".. 使用您发送给我的代码,仍然是同样的问题。 我设法进入了这个:

f1x=@ (x) 1 ./(x.^2+1) fpx = @(x) f1x(x) ./ quadl(f1x,0,1) f2z=@ (z) 1 ./(z.^2+1); fpz=@(z) fpx(z) ./ quadl(f2z,0,1) 溶胶=int(fpz(z),z,0,x) y=solve(subs('y=sol'),x) xf=@ (y) y

“sol”和“y=”给了我解析的答案,但这是错误的,因为我假设 f1x 和 fpx,fpz 不会返回解析表达式。

【问题讨论】:

  • 如果我错了,请纠正我,但正如我所见,在你的 fpz 函数中,f1x(z) 将是每个 z 的值。所以你不能整合一个价值。就像打电话一样四边形(2,0,1)。 quadl 将失败,因为它无法整合数字 2。
  • 您好,我只想将 fpz 与 z(o,x) 集成。我也尝试过:f2z=@ (z) 1 ./(z.^2+1); fpz=@(z) f2z ./ quadl(f2z,0,1); sol=int(fpz,0,x)
  • 到目前为止我已经这样做了:f2z=@ (z) 1 ./(z.^2+1); fpz=@(z) f2z(z) ./ quadl(f2z,0,1); sol=int('fpz','z',0,'x') y=solve('y=sol',x) xf=@ (y) y ;它给了我 --->>>sol = fpz*x 警告:找不到显式解决方案。 > Insolve at 81 In sampling2 at 81 y = [ empty sym ] ,,81 line is :y=solve('y=sol',x) ..有什么想法吗?

标签: function matlab


【解决方案1】:

0 你对 fpz 的定义没有任何意义;正如 Marcin 已经说过的那样,您正在尝试集成不是功能的东西。对于您使用 f2z 的替代版本,这应该不是问题。我认为原始问题中的代码应该只有 f1x 而不是 f1x(z) 在第一行。

1您的 f2z 修订版有一个不同的问题:现在在 fpz 中您实际上并没有为函数提供参数。

以下代码似乎是您想到的那种东西,并且对我来说工作正常(在 MATLAB R2008a 中,碰巧,但在其他版本中应该没有什么不同):

f1x = @(x) 1 ./ (x.^2+1);
fpx = @(x) f1x(x) ./ quadl(f1x,0,1);
fpz = @(z) fpx(z) ./ quadl(fpx,0,1);

现在评估 fpz(3),例如,旋转大约半秒(在我的旧笔记本电脑上)并返回 0.1273。

所以我认为您在集成匿名函数时遇到的问题只是没有足够仔细地区分函数本身和函数的特定值。

您对符号数学工具箱中的“solve”和“int”函数还有一些问题。您应该对以下内容持保留态度,因为我没有那个工具箱,并且我依赖于它的在线文档。

3 您将在 MATLAB 中定义的函数的名称提供给 Symbolic Math Toolbox 函数。我认为这不应该起作用。 "int" 和 "solve" 需要明确的代数表达式,而不是 MATLAB 函数。 (此外,您的函数都使用数值积分——quad、quadl 等。符号函数不可能用它做任何有用的事情。)

最后:当您提出此类问题时,如果您说如何它不起作用而不是“它不起作用”,这会很有帮助。例如,您最近的评论更有用(“它给了我……”,然后是您从 MATLAB 获得的实际输出)。

【讨论】:

  • @George,请不要编辑答案来回复 - 编辑您自己的问题或添加评论。
  • 你好,我做了 "sol=int(fpz(z).*z,0,x)" 并且它有效,但仍然无法得到正确的结果 (4*tan^-1 /pi)..
  • 你所说的(1)“它有效”和(2)“不能得到正确的结果”是什么意思?我的意思是,如果你没有得到正确的结果,那么它不起作用,不是吗?你得到什么结果?
  • 你好,我的意思是它给了我错误的结果。它给了我 "sol= (633825300114114700748351602688*log(x^2 + 1))/781950648044911937075543340009 和 "y= (exp((7819506480434075)43491) /633825300114114700748351602688) - 1)^(1/2) -(exp((781950648044911937075543340009*y)/633825300114114700748351602688) - 1)^(1/2)
  • 所以,听起来好像你做了这样的事情:
猜你喜欢
  • 2016-05-08
  • 1970-01-01
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多