无法从函数\ U句柄转换为双精度消息

1视图(过去30天)
永乐德
永乐德 2021年4月8日
评论道: 永乐德2021年4月8日
大家好。我试图在matlab中计算二重积分。然而,我的程序给了我“从function_handle转换为double是不可能的”消息。请帮我修一下。我是初学者,不知道该怎么做。谢谢你!
清除所有;
clc;
格式长
信谊x
信谊y
syms ome1
syms ome2
信谊ome12
信谊z1
信谊z2
syms z12
一个= 1.85;%α
一个= 2.656;% r_0
D = 0.269;%数
M_Fe = 56;
M_B = 27个;
e = 2.71828;
h = 6.625 * 10 ^ (-34);
h_bar = h /(2 *π);
k_B = 1.3824 * 10 ^ (-23);
muy_Fe = M_Fe / (M_Fe + M_B);
muy_B = M_B / (M_Fe + M_B);
C_Fe=0.8;%蒂勒潘电车公司
C_B = 0.2;
k_eff = (1 + (5/3) * (muy_Fe ^ 2 + muy_B ^ 2)) * D * ^ 2;
k3 = (1-muy_Fe ^ 3 + muy_B ^ 3) * D * ^ 3;
k4 = (7/12 + (203/324) * (muy_Fe ^ 4 + muy_B ^ 4)) * D * ^ 4;
M_FeB = (M_Fe + M_B) / 2;
M = 2 * C_B * M_FeB + (C_Fe-C_B) * M_Fe;
omega_D = 2 *√(k_eff / M);
theta_D = h_bar * omega_D / k_B;
sigma_01 = (3 * h_bar * /(2 *π))* (2 * C_B * k3 + (C_Fe-C_B) * k3) / (2 * C_B * k_eff + (C_Fe-C_B) * k_eff);
sigma_02=(h_bar*a/(2*pi))*(1/(2*C_B*k_eff+(C_Fe-C_B)*k_eff);
sigma_03 = (3 * h_bar ^ 2 * ^ 2 /(4 *π))* (2 * C_B * k3 + (C_Fe-C_B) * k3) / (2 * C_Fe * k_eff + (C_Fe-C_B) * k_eff);
k0_eff = 0.25 * M * omega_D ^ 2;
p = 10;
达峰时间= 1000;
dT =最高温度/ p;
T = 0.000001;
C3 = 0(1、p);
Tem = (0: dT Tmax-dT):
对于n = 1:p
β= 1 / (k_B * T);
= (x = 1, x = 1, x = 1, x = 1, x = 1);
ome2=@(y)2.*sqrt(k_eff/M)。*abs(sin(a.*y./2));
ome12 = @ (x, y) 2。* sqrt (k_eff / M)。* abs(罪(. * (x + y) / 2));
z1 = exp(β。* h_bar。* ome1 (x));
z2 = exp(β。* h_bar。* ome2 (y));
z12 = exp(β。* h_bar。* (ome1 (x) + ome2 (y)));
有趣= @ (x, y) (ome1 (x) * ome2 (y)。* ome12 (x, y) / (ome1 (x) + ome2 (y) + ome12 (x, y))) *(1 +(6。* (ome1 (x) + ome2 (y))。/ (ome1 (x) + ome2 (y) -ome12 (x, y))) * ((z1 (ome1)。* z2 (ome2) 2。* z12 (ome1 ome2))。/ ((z1 (ome1) 1)。* (z2 (ome2) 1)。* (z12 (ome1 ome2) 1))));
Ymax = @(x) /a - x;
C3 = integral2(有趣,0 1 0,ymax)
T = T + dT;
waitbar (n / p)
结束

接受的答案

斯蒂芬。
斯蒂芬。 2021年4月8日
编辑:斯蒂芬。 2021年4月8日
您定义 ome1 ome2 ome12 作为有1或2个输入参数的函数,但在某些情况下,你不会用任何输入调用它们的函数句柄:
有趣= @ (x, y) (ome1 (x) * ome2 (y)。* ome12 (x, y) / (ome1 (x) + ome2 (y) + ome12 (x, y))) *...
(1 +(6。* (ome1 (x) + ome2 (y))。/ (ome1 (x) + ome2 (y) -ome12 (x, y))) *...
((z1(ome1)。*z2(ome2)-2.*z12(ome1,ome2))/((z1(ome1)-1)*...更多的在这里
%^^^^^……这里有更多
您需要使用适当的输入参数调用这些函数。

更多的答案(0)

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始打猎吧!