我定义了几个匿名函数,这些函数通常依赖于三个变量eta1, eta2, y
。 eta1
eta2
和y
eta1=@(y) ((i*alpha1*lambda_0)^(1/3))*y+eta01;
eta2=@(y) ((i*alpha2*lambda_0)^(1/3))*y+eta02;
所以我基本上为y
提供了值,然后我可以通过h1b(y=whatever)
绘制arrayfun
:
DW1=@(eta) blablabla
N3Y=@(y) i*alpha1*(DW1(eta1(y))*conj(U2(eta2(y)))+W1(eta1(y))...
*conj(DU2(eta2(y))));
h1b=@(y) -(1/(lambda_0*alphats))*(betats*N3Y(y));
vec=arrayfun(h1b,eta1(0:0.01:N));
plot(abs(vec),0:0.01:N)
我的问题:有没有办法根据eta1
而不是y
正式检索h1b,作为匿名函数?不评估y
,后来eta1,eta2
再评估h1b
,这就是我的工作。
答案 0 :(得分:0)
让我们澄清一下。所以你现在有:
syms y eta1 eta2;
eta1(y), eta2(y)
W1(eta1), DW1(eta1)
U2(eta2) DU2(eta2)
因此你也有:
N3Y(W1,DW1,U2,DW2)
或:
N3Y(eta1,eta2)
或:
N3Y(y)
因此,你有:
h1b(N3Y)
或:
h1b(eta1,eta2)
或:
h1b(y)
所以,h1b
完全取决于eta1
和eta2
,所以如果你想要操纵变态eval
和simplify
来电,为什么你不这样做?创建两个版本的函数,一个版本为y
,另一个版本为eta
?
您无需重写,y
版本只是eval
版本的eta
。