如何简化函数句柄?

11次浏览(过去30天)
阿maheshwari
阿maheshwari 2021年8月19日
Y =
Function_handle with value:
@ (s) (F (s) - q (s)) / P (s)
如你所见,我有三个函数F Q P Y是由这三个函数的代数运算构成的函数。有没有办法,用函数变量来表示Y的简化表达式?当我在命令窗口中输入Y时,我只得到如上所示的结果。
作为一个简化的例子:
F = @(s) s;
Q = @(s) s²;
P = @(s) s^3-3*s^2-1;
Y = @(s) (F(s) - Q(s))/P(s);
当我在命令窗口中输入Y时,看到的是:
Y =
Function_handle with value:
@ (s) (F (s) - q (s)) / P (s)
我希望看到的是:
Y = (s-s²)/(s^3-3*s^2-1)
2的评论

登录评论。

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2021年8月19日
你用了一个标签 象征性的 这意味着你可能有符号工具箱。如果是,那么
信谊年代
Ys = Y(s)
您可能希望简化()结果。
7评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年8月20日
下图中,eiY是需要注意的输出:它是ilaplace的符号形式,由根的符号展开为封闭公式。
之后的绘图是调查性的,试图找出fplot()显示不连续的原因。
根据X / YY的值,eiY的matlabFunction()版本生成的值的虚分量大约是1e-17。放大试图寻找可见的无限大或其他东西,没有帮助。但是取一些产生非零虚部的位置,并将其象征性地计算为50位,显示出纯规则输出和非常小的虚部的混合;虚部的振幅随着位数的增加而减小。
所以这里发生的事情是matlabFunction()版本遇到舍入错误(甚至符号版本也有)。根()是ilaplace的解,有一个共轭对,所以理论上正负虚数分量应该抵消,但在实践中,由于浮点四舍五入,它们不能。
在这个 特定的 在这种情况下,至少对于正t,你应该可以取实数。
格式长g
数字(50)
F = @(s) s;
Q = @(s) s.^2;
P = @(s) s.^3-3*s.^2-1;
Y = @(s) (F(s) - Q(s))./P(s);
信谊年代真正的
Ys = Y(s)
y =
iY = ilaplace(Ys)
iY =
N = @(expr,N) expr(N);
resolve_a_root = @(X6) Nth(solve(children(X6,1),children(X6,2),“maxdegree”4)、儿童(X6, 3));
resolve_a_sum = @(X5) mapSymType(X5,“根”, resolve_a_root);
@(X2,N) resolve_a_summand(subs(children(X2,1),children(X2,2),N));
map_symsum = @(X2) sum(arrayfun(resolve_nth_summand, repmat(X2,1,double(children(X2,4)-children(X2,3)+1)), children(X2,3):children(X2,4)));
expand_symsum = @(X1) mapSymType(X1,“symsum”, map_symsum);
eiY = simplify(expand_symsum(iY))
公式=
y = matlabFunction(eiY);
fplot (y)[10 1的军医,军医]);
Fplot (y, [4.257475e-4 4.25749e-4]);-1.001 ylim ([1]);标题(缩放fplot数值
fplot(eiY, [4.257475 -4 4.25749e-4]);-1.001 ylim ([1]);标题('放大fplot符号'
X = linspace(4.257475e- 4,4.25749e -4,1000);
YY = y(X);
次要情节(2,1,1);情节(X,真正的(YY));标题(“固定数值实值”
次要情节(2,1,2);情节(X,图像放大(YY));标题(“固定数值评估图像”
X5idx = find(imag(YY), 5);
X5 = X(X5idx)
X5 = 1×5
0.000425747501501501 0.000425747504504504 0.000425747513513513 0.000425747516516516 0.00042574751951952
Y5 = YY(X5idx)
日元=
-1.00085203903026 + 1.38777878078145e-17i -1.00085203903628 - 1.38777878078145e-17i -1.00085203906033 + 1.38777878078145e-17i -1.00085203906635 - 1.38777878078145e-17i
信谊t
subs(eiY, t, X5(:))
ans =
vpa (ans)
ans =

登录评论。

更多答案(0)

s manbetx 845


释放

R2020b

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!