Probleem met een cirkel

Het forum voor overige vragen betreffende wiskunde uit het hoger onderwijs.
Plaats reactie
RudyL90
Nieuw lid
Nieuw lid
Berichten: 15
Lid geworden op: 30 dec 2010, 15:05

Probleem met een cirkel

Bericht door RudyL90 » 14 feb 2014, 19:19

Ik heb een opdracht waarin ik het profiel van een (2D) druppel moet beschrijven.
De druppel ontstaat uit een reservoir op de y-as, van 0 tot de hoogte h en vormt een perfecte cirkelboog.
De helling die de druppel met de x-as maakt moet kleiner zijn dan 90 graden.

Met andere woorden:
Vind de functie voor een cirkel die door het punt y = h gaat en op de x-as een hoek theta heeft, met als voorwaarde theta < pi/2 (dus moet ook gelden: R > h).

Mijn aanpak:
Ik ga uit van de formule:
(y+a)^2 + (x+a)^2 = R^2
Hierin is dan de oorsprong van de cirkel (-a,-b)

Oplossen voor y geeft:
y = sqrt( R^2 - (x+a)^2 ) - b

De voorwaarde y(x=0) = h geeft dan b = sqrt(R^2 - a^2) - h

Nu moet de onbekende a nog gevonden worden.
Dit doe ik door een cirkel te tekenen en het contactpunt met de x-as met het centrum van de cirkel te verbinden. Een lijn vanuit het centrum van de cirkel naar de cirkelrand staat loodrecht op de cirkelrand. De lijn maakt onder de x-as een hoek alpha. Hieruit volgt direct dat theta = pi/2 - alpha.
Je hebt nu dus een rechthoekige driehoek met hoek alpha waarvan de schuine zijde (R) en de overstaande rechthoek zijde (b) bekend zijn.
Nu weet je dat sin(alpha) = b/R, ofwel sin(alpha) = (sqrt(R^2 - a^2) - h)/R.
Hieruit is a eenvoudig op te lossen, je vindt:
a = sqrt(R^2 - R^2*cos(theta)^2-2*R*h*cos(theta)-h^2) = sqrt(R^2*sin(theta)^2-2*R*h*cos(theta)-h^2).

Dit model heb ik in het programma 'MATLAB' gegooid om te kijken of ik het probleem opgelost had.
Het resultaat is helaas onzin. Er is dus blijkbaar iets dat ik over het hoofd zie. Of ik pak het gewoon verkeerd aan, of er is een voorwaarde in het model waaraan nog niet voldaan is of iets dergelijks?

Ik ben benieuwd wat jullie van mijn aanpak vinden.

PS: zie foto's voor mijn afleiding

Afbeelding
Afbeelding

arie
Moderator
Moderator
Berichten: 3916
Lid geworden op: 09 mei 2008, 09:19

Re: Probleem met een cirkel

Bericht door arie » 15 feb 2014, 09:40

Check om te beginnen eerst even deze punten:

[1] Als ik naar je plaatje kijk geldt dat voor middelpunt M=(mx, my) mx>0 (dus a<0) en my<0 (dus b>0). Volgens mij heb jij a>0 genomen (voor het eindantwoord maakt dat overigens niet uit omdat je met kwadraten werkt)

[2] Werk je in Matlab met alle hoeken in radialen?

[3] Je stelt: ... dus moet ook gelden: R > h ...
maar dit moet sterker:
Teken in je plaatje ook de straal van middelpunt M naar het punt (0, h).
Dan onstaat een rechthoekige driehoek met rechthoekszijden (h + b) en -a en schuine zijde R.
Dan moet
R > h + b
ofwel
R > h + R cos(theta)
ofwel
R(1-cos(theta)) > h

Rekenvoorbeeld waar ik op uitkom: neem
h = 2
R = 5
theta = pi/3
dan is
a = -2.1794...
b = 2.5
M = (2.1794... , 2.5)

Voor R=5 en theta = pi/3 moet h < 2.5 zijn.

Lost dit al wat op?


PS: weet je zeker dat in de vraag niet bedoeld wordt dat h de grootste hoogte is van de druppel en dus middelpunt M op de negatieve y-as ligt?

RudyL90
Nieuw lid
Nieuw lid
Berichten: 15
Lid geworden op: 30 dec 2010, 15:05

Re: Probleem met een cirkel

Bericht door RudyL90 » 15 feb 2014, 18:57

Hallo Arie,

Bedankt voor je reactie!

[1] Het lijkt me dat dit vanwege het kwadraat geen probleem vormt.

[2] Nee, ik gebruik de functies cosd en sind, met graden werken vind ik wat makkelijker

[3] Je hebt helemaal gelijk, dan zou ik daar in het script rekening mee moeten houden.

Ik weet zeker dat h gewoon een punt op de cirkelboog is, het centrum van de cirkel hoeft dus niet op de negatieve y-as te liggen.
Maar je ziet dus verder geen problemen in mijn aanpak?

RudyL90
Nieuw lid
Nieuw lid
Berichten: 15
Lid geworden op: 30 dec 2010, 15:05

Re: Probleem met een cirkel

Bericht door RudyL90 » 15 feb 2014, 19:21

Op een ander forum vroeg iemand om een plaatje ter verduidelijking van het probleem. Zie hieronder:

Afbeelding

Hierin behoren alle theta's even groot te zijn (in het plaatje niet helemaal het geval).

arie
Moderator
Moderator
Berichten: 3916
Lid geworden op: 09 mei 2008, 09:19

Re: Probleem met een cirkel

Bericht door arie » 15 feb 2014, 20:55

Volgens mij kloppen je berekeningen verder, ik kwam uit op:





waarbij het middelpunt van de cirkel = M = (-a, -b)

RudyL90
Nieuw lid
Nieuw lid
Berichten: 15
Lid geworden op: 30 dec 2010, 15:05

Re: Probleem met een cirkel

Bericht door RudyL90 » 16 feb 2014, 14:26

Op het minteken voor de a na precies hetzelfde wat ik gevonden heb. Dit geeft niet het profiel dat je zou verwachten. Ik zie helaas nog steeds niet wat er fout gaat. Zie hier beneden de m-file. Als je er zin en tijd voor hebt zou ik het erg waarderen als je er even naar kijkt. :P

clc; close all; clear all;

theta = 80;
h = 1;
R = 2;
x = 0:0.01:2;
voorwaarde = h/(1-cos(theta))
y = sqrt(R^2-(x+sqrt(R^2*sin(theta)^2-2*R*h*cos(theta)-h^2)).^2)+h-sqrt(R^2*cosd(theta)^2+2*R*h*cos(theta)+h^2);
% y = sqrt(R^2-(x-sqrt(R^2*sin(theta)^2-2*R*h*cos(theta)-h^2)).^2)+h-sqrt(R^2-(R^2*sin(theta)^2-2*h*R*cos(theta)-h^2));
plot(x,y)
axis square

arie
Moderator
Moderator
Berichten: 3916
Lid geworden op: 09 mei 2008, 09:19

Re: Probleem met een cirkel

Bericht door arie » 16 feb 2014, 20:06

- je gebruikt sind en cosd niet overal terwijl dat wel zou moeten
- je definieert alleen positieve y, niet de negatieve (= de onderkant van de cirkel)
- het domein van de cirkel loopt van Mx - R t/m Mx + R, waarbij het middelpunt van
de cirkel = M = (Mx, My)

Hier wat alternatieve code voor je probleem:

Code: Selecteer alles

clc; close all; clear all;

% probleem parameters:
theta = 60;
h = 2;
R = 5;

% bereken constanten a en b:
a = -sqrt(R^2*sind(theta)^2 - 2*h*R*cosd(theta) - h^2);
b = sqrt(R^2 - a^2) - h;

% teken cirkel:
Mx = -a;
My = -b;
alpha = 0 : 0.01 : 2*pi;
x = R * cos(alpha) + Mx;
y = R * sin(alpha) + My;
plot(x, y);
axis square;
xlim([-10 10]);
ylim([-10 10]);
grid on;

% teken assenstelsel
hold on;
line([-10,10],[0,0]);
line([0,0],[-10,10]);

% bereken raaklijn in (xl, 0) in de vorm y = p*x + q
p=tand(-theta);
xl = sqrt(R^2 - b^2) - a;
q = -p*xl;
% teken de raaklijn (in rood):
plot([(10-q)/p,(-10-q)/p],[10,-10],'Color',[1 0 0]);


RudyL90
Nieuw lid
Nieuw lid
Berichten: 15
Lid geworden op: 30 dec 2010, 15:05

Re: Probleem met een cirkel

Bericht door RudyL90 » 17 feb 2014, 08:54

Super! Dit script doet precies wat ik wil!
Dat ik er niet op kwam om de cirkel simpelweg om het middelpunt heen te tekenen...
Hartstikke bedankt voor al je hulp! :)

Plaats reactie