我写了一个Matlab类来处理dual numbers做automatic differentiation。对于几乎所有的情况,这工作得很好,新类是大多数函数中其他数值类的直接替换(字段'x'给出了函数的值,字段d给出了导数的值在该点的函数。)提升赋值运算符的左侧
>> x = mkdual([1 2 3]);
>> x.^2
ans =
Dual
Properties:
x: [1 4 9]
d: [2 4 6]
然而,当功能预先分配的输出阵列失败,并且通过索引到其分配到该阵列。例如,下面是在Matlab一个共同的模式:
>> y=zeros(2) // Pre-allocate for speed
y =
0 0
0 0
>> x = 1;
>> y(1,:)=x
y =
1 1
0 0
不幸的失败,我的课,因为它不能促进赋值运算符的LHS阵列的双数:
>> x=mkdual(1);
>> y(2,:)=x
??? The following error occurred converting from Dual to double:
Error using ==> double
Conversion to double from Dual is not possible.
任何人都可以提出一个修复或解决方法 - 最好是允许自动推广变量y
到Dual
?
这是一个整洁的想法,谢谢。 – 2012-03-08 23:36:00