MATLAB集成了一个匿名函数

时间:2011-01-29 13:30:42

标签: function matlab

我想问一下如何在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 =解决(潜艇( 'Y =溶胶'),x)的 xf = @(y)y

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

1 个答案:

答案 0 :(得分:0)

0 你对fpz的定义没有任何意义;正如马辛已经说过的那样,你正试图整合一些不起作用的东西。对于使用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。

所以我认为你在匿名函数集成方面遇到的问题只是不太注意区分函数本身和函数的特定值。

您还有一些关于Symbolic Math Toolbox中“solve”和“int”函数的问题。您应该使用一小撮盐,因为我没有该工具箱,并且依赖于它的在线文档。

3 您正在将您在MATLAB中定义的函数名称提供给符号数学工具箱函数。我不认为这应该有用; “int”和“solve”期望显式代数表达式,而不是MATLAB函数。 (而且,你的函数都使用数值积分 - quad,quadl等 - 并且没有可能的方法,符号函数可以做任何有用的事情。)

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