Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 匿名函数的MATLAB集成_Function_Matlab - Fatal编程技术网

Function 匿名函数的MATLAB集成

Function 匿名函数的MATLAB集成,function,matlab,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

我想问一下,我怎样才能在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) sol=int(fpz(z),z,0,x) y=解算(SUB('y=sol'),x) xf=@(y)y


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

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

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

下面的代码似乎就是您想要的,对我来说很好(在MATLAB R2008a中,碰巧是这样,但在其他版本中,这一切都不应该有所不同):

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

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

关于符号数学工具箱中的“solve”和“int”函数,您还有一些进一步的问题。你应该对下面的内容略知一二,因为我没有工具箱,我依赖于在线文档

3将在MATLAB中定义的函数名输入到符号数学工具箱函数。我认为这是行不通的;“int”和“solve”需要显式代数表达式,而不是MATLAB函数。(此外,你的函数都使用数值积分——quad,quadl,等等——符号函数不可能用它做任何有用的事情。)


最后:当你问这类问题时,与其说“它不起作用”,不如说它是如何起作用的。例如,您最近的评论更有用(“它给了我…”后面是您从MATLAB获得的实际输出)。

如果我错了,请纠正我,但在我看来,在您的fpz函数中,f1x(z)将是每个z的值。所以你不能整合一个值。它类似于调用例如quadl(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警告:无法找到显式解决方案。>在81的样本中,81行是:y=solve('y=sol',x)…有什么想法吗?@George,请不要编辑答案来回答-编辑你自己的问题或添加评论。您好,我做了“sol=int(fpz(z)。*z,0,x)”它工作了,但仍然无法得到正确的结果(4*tan^-1/pi)…你所说的(1)“工作”和(2)是什么意思“不能得到正确的结果”?我的意思是,如果你没有得到正确的结果,那么它就不起作用,不?你得到了什么结果?你好,我的意思是它给了我错误的结果。它给了我“sol=(63382530014114700748351602688*log(x^2+1))/7819506480444911937075543340009和“y=(exp((78195064804911937075543340009*y)/6338141147007451602688)-1^(1/2)-(exp((781950648044911937075543340009*y)/63382530014114700748351602688)-1^(1/2)所以,听起来你好像做了这样的事情:
f1x = @(x) 1 ./ (x.^2+1);
fpx = @(x) f1x(x) ./ quadl(f1x,0,1);
fpz = @(z) fpx(z) ./ quadl(fpx,0,1);