4 svar
39 visningar
Moni1 721
Postad: 14 jun 2020 15:28 Redigerad: 14 jun 2020 16:34

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

Moni1 721
Postad: 14 jun 2020 15:35

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 

Moni1 721
Postad: 14 jun 2020 15:40

>> 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å

Moni1 721
Postad: 14 jun 2020 15:53

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

Smaragdalena 80504 – Avstängd
Postad: 14 jun 2020 16:21

Suad, du har redan en tråd om den här uppgiften - fortsätt där! /moderator

Tråden är låst för fler inlägg

Close