really good. I used this developed a simple single-phase nonlinear reservoir simulator. One question: is this adiff based on Reverse AD (Rad) or Forward AD (Fad)? Based on its usage, looks Rad to me compared to Sacado or original Fad
To Jeffrey Steward:
The documentation says that adiff has restrictions on transpose. (See page 4 where it says that your example _won't_ work). However, you can get a quadratic form to work if you bracket things just right. Writing
f = x'*(A*x)
Doesn't seem to be able to handle a really simple function like this:
where A is a matrix. Try this
x = adiff([1,2]);
A = eye(2);
f = x'*A*x;
and there is an error in mtimes.m
Error using *
Inner matrix dimensions must agree.
To Edward: For simplicity, the package was coded to work solely on functions that take a column vector and return a scalar argument. I can't see reshape helping much because of that restriction. After you've got the derivative though, you can extract it from the adiff object as an ordinary matlab vector (using adiffget) and reshape that.
How hard would it be to have the function reshape supported? Currently it throws errors. I think because numel(a) = 1, where a is an adiff object.
I am just beginning to learn about auto differentiation and am pretty excited about something that seems to be a very powerful tool. Thanks for helping me get started.