分配会导致空值

16个视图(30天)
小子
小子 2023年5月15日
评论道: 小子2023年7月6日在48
我构造一些函数根据w。但如果我分配一些价值w(双)类型的nonnegativ y df_v返回一个空值[]。
func = parabolicCylinderD (x (w), y));
df = diff(函数)
f_v = func (w);
df_v = df (w);
2的评论
小子
小子 2023年5月15日
函数定义如下
函数(日元)= ypsilon1 (z)
日元= exp (-0.25 * * z) * hypergeom (0.5 * 0.25 + 0.5, 0.5 * * z);
结束
函数(Y2) = ypsilon2 (z)
Y2 = z * exp (-0.25 * * z) * hypergeom (0.5 * 0.75 + 1.5, 0.5 * * z);
结束
函数[你]= Ufunction (z)
ζ= 0.5 + 0.25 *;
U = 1 / (sqrt (pi) * 2 ^(ζ))* (cos(π*ζ)*γ(0.5ζ)* ypsilon1 (a, z) -√(2) * sin(π*ζ)*γ(1-zeta) * ypsilon2 (a, z));
结束
函数[D] = parabolicCylinderD (v, z)
b = v - 0.5;
D = Ufunction (b, z);
结束

登录置评。

答案(2)

鸡向量
鸡向量 2023年5月15日
编辑:鸡向量 2023年5月15日
这个函数 包含一个函数 whittakerM 这是不明确的,不能导出。
问题源于这两个表达式中 df :
diff (whittakerM (E - m ^ 2./2.0。^ + 1.0. 2./2.0 / 4.0, 1.0. / 4.0 k), E)
diff (whittakerM (E - m ^ 2./2.0。^ + 1.0. 2./2.0 / 4.0, 1.0. / 4.0 k), E)
当你用值代替 E , k , diff 执行操作变得数值但只有一个 因此,返回一个空值:
diff ([1 - 2])
ans = 1
diff (1)
ans = []
一般会有两种选择:要么你得到密切的形式 whittakerM 所以你可以执行的分析推导,或者你选择数值方法。
在你的情况下你不能做这些,因为你可以看到从上面的表达式的值,你的变量 E 也是学位的导数计算( 差异(f, n) 计算第n个导数)。
这意味着你的函数被定义为非负整数,它不是连续的,因此 没有导数的数学意义
7评论
小子
小子 2023年7月6日在48
@chicken向量 你知道我的意思。你有一个想法来解决吗

登录置评。


沃尔特·罗伯森
沃尔特·罗伯森 2023年5月15日
基本的问题是,有两个重要函数命名的差异。
主要的差异()函数计算(2:结束)- x (1: end-1)数值的差异。
特殊情况的差异()的第一个参数是象征性的或symfun然后你不是得到象征性的导数(微积分)。
代码工作纯粹的数值,所以diff()是数值的差异。
注意,数字差异() 做一个数值导数的估计:你需要梯度()。
1评论
小子
小子 2023年5月24日
alsowith梯度()有同样的错误

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!