solve nonlinear equations with integration where the upper limit is variable
14 views (last 30 days)
I need to solve a group of nonlinear equations with integration where the upper limit is variable. The format is shown as below:
f(x,t) is a nonlinear equation without an explicit integraton form. f(x,t) is:
where a1-a6 is known. a6 is more than 800 so it makes f(x,t) have no explicit integraton form.
x(1), x(2), ...x(N) and Z(1), Z(2), ...Z(N) are known double values. The upper limit of the integration, d, is a non-negative variable vector and also the one I need to calculate from the equations. I need to find the smallest ||d|| which satisfies these equations, and || || means any norm of vection d. I plan to use fsolve to solve these equations but I encounter problems in writing the right form of these equations into matlab function handle. My idea is to build the single integration function by int and use for loop to get a N*N matrix M where the element is one single integration. Then I can sum the rows of this N*N matrix and add Z into it. By converting the final function to function handle (matlabFunction) and I can use fsolve. My current diffculty lies in writing the corrrect form of the single integration function. Can anyone give me a hint or tell me is there better idea to solve these equations?
Here is what i arrived
x=[-L:interval:L-interval]; %make a x vector between 0 and 10 with 1 as interval
X=zeros(N);% xi-xj matrix
fun=@(dw,xx) integral(@(t)-(a(1)+a(2).*exp(-t./a(3))).*(1-(xx).^2./(a(4)+a(5)*t).^2).^a(6),0, dw, 'ArrayValued',false);
d = sym('d',[1 N]);
D=repmat(d,N,1);% make int upper limit matrix
M = sym('M',[N N]);