I have an ellipse. In the ellipse I have a point that spreading hot. I know the hot spreading equation and I need to find the hot point.

To solve this I did the following steps:

1. Define an ellipse

a=2; b=3;

y1=b*(1-x^2/a^2)^0.5;

2. putting an hot point

x0=1.3; y0=1.5;

3. Find the distance of the surface from the hot point

d1=((x-x0)^2+(y1-y0)^2)^0.5;

4. Define of hot spreading equation

HotSpreading1=1/(d1^2);

5. Find the line of the hot point. This line should be the vertical to the tangent in the maximum of HotSpreading1

• Find the maximum of HotSpreading1 by differentiate the hot spreading equation and find when it equal to zero.

HotSpreadingDiff=diff (HotSpreading1);

Xmax=fzero(HotSpreadingDiff1,[-a+0.001 a-0.001]);

• Find y of Xmax by putting it in the ellipse equation

Ymax=y1 (Xmax);

• Find the slope of the line which tangential to the line we are looking for by differentiate the ellipse equation and putting Xmax

m= (diff(y1));

m1=m(Xmax);

• Find the slope of the line by doing the opposite to the slope we find

mline=-1/m1;

• Find the line by position all the component in straight line equation

line=mline*(x-Xmax)+Ymax;

6. Going on the line finding the hot spreading equation of each point and compare the equation to the equation of the real hot point. when we got to the minimum of the difference between the two curves we find the interval of the hot point.

This steps works in some hot point but doesn't works in other as well. I assume something is wrong in the idea, but I can't find what. I be glad is someone have a clue how to solve the problem.

I am adding the matlab code if some one want to run and see.

clear all

clf

%Define an ellipse

%Parameters for the ellipse

a=2; b=3;

%Drowing half ellipse

syms x y

y1=b*(1-x^2/a^2)^0.5;

yinline=inline(y1)

ezplot(y1)

hold on

%putting an hot point

x0=1.3; y0=1.5;

plot(x0,y0,'r*')

%The distance from the hot point

d=((x-x0)^2+(y-y0)^2)^0.5;

HotSpreading=1/(d^2);

ezcontour(HotSpreading);

%Hot spreading on surface

d1=((x-x0)^2+(y1-y0)^2)^0.5;

HotSpreading1=1/(d1^2);

HotSpreading2=inline(HotSpreading1);

ezplot (HotSpreading1); axis([-5 5 -1 5])

%Find the line of the hot point.

%This line should be the vertical to the tangent in the maximum of HotSpreading1

%Find the maximum of HotSpreading1

HotSpreadingDiff=diff (HotSpreading1);

HotSpreadingDiff1=inline(HotSpreadingDiff);

%Xmax=fsolve(HotSpreadingDiff1,2,foptions)

Xmax=fzero(HotSpreadingDiff1,[-a+0.001 a-0.001]);

%Number of iteration

NumIter=10;

Ymax=yinline(Xmax);

m=inline(diff(y1));

m1=m(Xmax);

%If the slope is zero we are working on the line x0=0

if m1==0

plot([0 0],[b 0])

%Iteration on the point of line to find x0 y0

XIteration=zeros(1,NumIter-1);

YIteration=0:b/(NumIter-1):b

else

mline=-1/m1;

line=mline*(x-Xmax)+Ymax;

line=inline(line);

ezplot(line,[-2.5 2.5])

%Iteration on the point of line to find x0 y0

XIteration=-a:2*(a)/(NumIter-1):a;

YIteration=line(XIteration);

end

%The hot spreading of real x0 y0

figure; hold on

ezplot (HotSpreading1);

pause

%Preparation of point on Hot Spreading to comparison

XHot=-a:0.01:a;

YRealHot=HotSpreading2(XHot);

%The comparison process

for LoopIndex=1:length(XIteration);

%Creating of the equation to comparision

d12=((x-XIteration(LoopIndex))^2+(y1-YIteration(LoopIndex))^2)^0.5;

HotSpreading12=1/(d12^2);

HotSpreading22=inline(HotSpreading12);

%ploting the graph

ezplot (HotSpreading12); axis([-a-.5 a+.5 -0.5 8])

%The comparision

YDiff=HotSpreading22(XHot);

Difference=(YDiff-YRealHot).^2;

SumDifference(LoopIndex)=sum(Difference);

pause

end

%Find the Xrange of the hot point. check if the cruve is between the two

[MinDiff,MinIndex]=min(SumDifference);

%Definition of the interval of X0

%If the min of the differance is in the first XIteration then the interval

%is between the two first XIteration

if MinIndex==1

%If x0=0 the line will be x=0 and that why we want in such cases to get

%y and not x.

if m1==0

y0

YIteration(1)

YIteration(2)

else

x0

XIteration(1)

XIteration(2)

end

elseif MinIndex==length(SumDifference)

%If x0=0 the line will be x=0 and that why we want in such cases to get

%y and not x.

if m1==0

y0

YIteration(length(SumDifference)-1)

YIteration(length(SumDifference))

else

x0

XIteration(length(SumDifference)-1)

XIteration(length(SumDifference))

end

%We need to find if the value is between the min and the previous or

%between the min and the next.

elseif SumDifference(MinIndex-1)<SumDifference(MinIndex+1)

%The value is between the min and the previous

if m1==0

y0

YIteration(MinIndex-1)

YIteration(MinIndex)

else

x0

XIteration(MinIndex-1)

XIteration(MinIndex)

end

else

%The value is between the min and the next

if m1==0

y0

YIteration(MinIndex)

YIteration(MinIndex+1)

else

x0

XIteration(MinIndex)

XIteration(MinIndex+1)

end

end