att finna mottagarens position, del 2
En illustration av problemet att finna mottagarens position. I mitten av vart och en av de
tre sfärerna sitter en sändare. Vi vet att mottagaren befinner sig på ett avstånden r1 från
sändare ett, r2 från sändare två och r3 från sändare tre. De tre sfärerna har radie r1, r2
respektive r3. Det innebär att sändaren befinner sig någonstans där de tre sfärerna skär
varandra.
Formulera det ekvationssystem som behöver lösas för att hitta mottagarens
position. Antag att den k:te sändaren har mittpunkt i (xk, yk, zk) och befinner sig
på avståndet rk från mottagaren, k = 1, 2, 3. Kalla mottagarens koordinater för
p = (p1, p2, p3).
Hej, no är neste steg i uppgiften att skriva om ekvationssystemet i på formen f(p) = 0 och skriv en while-sats
som utför Netwons metod för problemet.
vi tillsammans med hjälp av er på pluggakuten, har hittat ekvationen för problemet som är
1)(x1-p1)^2+(y1-p2)^2+(z1-p3)^2=r1^2
2)(x2-p1)^2+(y2-p2)^2+(z2-p3)^2=r2^2
3)(x3-p1)^2+(y3-p2)^2+(z3-p3)^2=r3^2,
och vi ska derivera denna, och får derivatorna: dvs Jacobimatrisen Df(pk):
2(p1−x1)+2(p2−y1)+2(p3−z1)
2(p1−x2)+2(p2−y2)+2(p3−z2)
2(p1−x3)+2(p2−y3)+2(p3−z3)
därmed ska vi skriva en while sats som utför Newtons metod för problem:
min kod är
>> f = @(x) [x(1)*(1+x(2)^2)-1; x(2)*(1+x(1)^2)-2];
>> Df = @(x) [2(p1−x1)+2(p2−y1)+2(p3−z1);2(p1−x2)+2(p2−y2)+2(p3−z2); 2(p1−x3)+2(p2−y3)+2(p3−z3)];
>> p= [1; 1; 1]; gissar start värde på p
>> kmax = 10; tol=0.5e-8;
>> while k <=kmax
h = -Df(p) \ f(p);
p = p + h;
disp([p h])
if h < tol, break
end
end
och därmed undrar jag på vad är felet på min kod eftersom matlab ger att det är fel i koden, kan det vara att jag har deriverat fel, eller är det något fel med while satsen
mvh
suad
hej, igen
(x1-p1)^2+(y1-p2)^2+(z1-p3)^2=r1^2
>> f = @(x) [(x(1)-p(1))^2+(y(1)-p(2))^2+(z(1)-p(3))^2-r(1)^2;(x(2)-p(1))^2+(y(2)-p(2))^2+(z(2)-p(3))^2-r(2)^2, (x(3)-p(1)^2+(y(3)-p(2))^2+(z(3)-p(3))^2-r(3)^2 ];
>> Df = @(x) [2(p1−x1)+2(p2−y1)+2(p3−z1);2(p1−x2)+2(p2−y2)+2(p3−z2); 2(p1−x3)+2(p2−y3)+2(p3−z3)];
>> p= [1; 1; 1]; gissar start värde på p
>> kmax = 10; tol=0.5e-8;
>> while k <=kmax
h = -Df(p) \ f(p);
p = p + h;
disp([p h])
if h < tol, break
end
end
hej, jag har ordnat förste rad, det var fel skrevet
>> f = @(p) [(x(1)-p(1))^2+(y(1)-p(2))^2+(z(1)-p(3))^2-r(1)^2;(x(2)-p(1))^2+(y(2)-p(2))^2+(z(2)-p(3))^2-r(2)^2, (x(3)-p(1)^2+(y(3)-p(2))^2+(z(3)-p(3))^2-r(3)^2 ];
>> Df = @(p) [2(p1−x1)+2(p2−y1)+2(p3−z1);2(p1−x2)+2(p2−y2)+2(p3−z2); 2(p1−x3)+2(p2−y3)+2(p3−z3)];
>> p= [1; 1; 1]; gissar start värde på p
>> kmax = 10; tol=0.5e-8;
>> while k <=kmax
h = -Df(p) \ f(p);
p = p + h;
disp([p h])
if h < tol, break
end
end
hej, igen funktionen ska vara med avsende på p, jag har ordnat detta också
hej, jag har ordnat koden lite mer , men får förfarendet fel.
f = @(p) [(x(1)-p(1))^2+(y(1)-p(2))^2+(z(1)-p(3))^2-r(1)^2; (x(2)-p(1))^2+(y(2)-p(2))^2+(z(2)-p(3))^2-r(2)^2; (x(3)-p(1))^2+(y(3)-p(2))^2+(z(3)-p(3))^2-r(3)^2];
Df = @(p) [2*(p(1)-x(1))+2*(p(2)-y(1))+2*(p(3)-z(1));2*(p(1)-x(2))+2*(p(2)-y(2))+2*(p(3)-z(2)); 2*(p(1)-x(3))+2*(p(2)-y(3))+2*(p(3)-z(3))];
p= [1; 1; 1]; %%5 gissar start värde på p
kmax = 10; tol=0.5e-8;
while k <=kmax
h = -Df(p) \ f(p);
p = p + h;
disp([p h])
if h < tol, break
end
end
Suad, du har redan en tråd om den här uppgiften - fortsätt där! /moderator