به محفل ریاضی ایرانیان خوش آمدید! لطفا برای استفاده از تمامی امکانات عضو شوید
سایت پرسش و پاسخ ریاضی
+2 امتیاز
22,744 بازدید
در دبیرستان توسط rashooda (28 امتیاز)

دوستان سلام چجوری میشه با داشتن مختصات دو یا چند نقطه(نقاط سبزرنگ شکل) روی محیط یک دایره، مختصات نقطه مرکز دایره(نقطه قرمز رنگ) را بدست آورد؟

enter image description here

4 پاسخ

+1 امتیاز
توسط AmirHosein (19,620 امتیاز)
ویرایش شده توسط AmirHosein
 
بهترین پاسخ

معادلهٔ دایره به مرکز $(a,b)$ و شعاع $r$ را به یاد آورید. اکنون فرض کنید چند نقطه از روی دایره مانند $(x_i,y_i)$ دارید. آنها را در معادله $(x_i-a)^2+(y_i-b)^2=r^2$ جایگذاری کنید. سه مجهول دارید. با داشتن سه معادله کار تمام است. پس دست کم نیاز به سه نقطه دارید تا یک دایرهٔ یکتا را مشخص کنید.

فرض کنیم نمی‌دانید چگونه این دستگاه سه معادله‌-سه مجهول که خطی نیست را حل کنید. دو فرمول زیر را به راحتی با کمک پایه‌های گروبنر می‌توانید بدست آورید.

$$a=-(-{x_{{1}}}^{2}y_{{2}}+{x_{{1}}}^{2}y_{{3}}+{x_{{2}}}^{2}y_{{1 }}-{x_{{2}}}^{2}y_{{3}}-{x_{{3}}}^{2}y_{{1}}+{x_{{3}}}^{2}y_{{2}}-{y_{ {1}}}^{2}y_{{2}}+{y_{{1}}}^{2}y_{{3}}+y_{{1}}{y_{{2}}}^{2}-y_{{1}}{y_{ {3}}}^{2}-{y_{{2}}}^{2}y_{{3}}+{y_{{3}}}^{2}y_{{2}})/(2\,x_{{1}}y_{{2}} {-2\,x_{{1}}y_{{3}}-2\,x_{{2}}y_{{1}}+2\,x_{{2}}y_{{3}}+2\,x_{{3}}y_{{1 }}-2\,x_{{3}}y_{{2}}}) $$

$$b=-(x_1^2x_2-x_1^2x_3-x_1x_2^2+x_1x_3^2-x_1y_2^2+x_1y_3^2+x_3x_2^2-x_3^2x_2+y_1^2x_2-x_2y_3^2-y_1^2x_3+x_3y_2^2)/(2\,x_{{1}}y_{{2}} -2\,x_{{1}}y_{{3}}-2\,x_{{2}}y_{{1}}+2\,x_{{2}}y_{{3}}+2\,x_{{3}}y_{{1 }}-2\,x_{{3}}y_{{2}} )$$ سپس $r^2$ را شبیه یک متغیر در نظر بگیرید. با جایگذاری مقادیر $a$ و $b$ که از دو فرمول بالا بدست آمده‌اند در هر یک از سه معادله به دلخواه خودتان یک معادلهٔ سادهٔ $r^2=\ldots$ دارید.

تصویر محاسبات پایهٔ گروبنر با نرم‌افزار Maple را نیز برای افرادی که ممکن است علاقه‌داشته‌باشند در زیر قرار دادم. enter image description here

توسط Mostafa_jalali_mj (2 امتیاز)
ویرایش شده توسط admin
+1
سلام
رابطه b عینا کپی شده a هست
لطفا رابطه b رو اصلاح کنید
روشتون خیلی خوب بود و فرمول a رو تست کردم و جواب گرفتم.
ممنون میشم از طریق واتساپ‌یا تلگرام راهنمایی بفرمایید
توسط AmirHosein (19,620 امتیاز)
@Mostafa_jalali_mj بله صورت کسر مربوط به $a$ به اشتباه برای $b$ کپی شده‌بود.

از واتساپ استفاده نمی‌کنم، استفاده از تلگرام را نیز پس از اینکه دولت با آن به مشکل برخورده‌است کم کرده‌ام و به زودی کاملا قطع می‌کنم. به هر حال اگر پرسشی دارید در همین سایت قرار دهید، هر یک از دوستان که بتوانند و زمان داشته‌باشند کمک‌تان خواهند کرد.
توسط alizokaee (23 امتیاز)
–1
کاربری که سوال کرده احتمالا دبیرستانی است. فکر نمی کنید درک پاسخ شما یرای یک دبیرستانی سخت باشد؟
توسط AmirHosein (19,620 امتیاز)
@alizokaee
۱- فقط کاربری که پرسش را پرسیده‌است، این پست را نمی‌بینید.
۲- دیدن مطالبی که در سطح بالاتری هستند گاها می‌تواند کنجکاوی یا انگیزه‌ای ایجاد کند که بعدها سودمند خواهد بود.
۳- با توجه به تصویر قرار داده‌شده در متن پرسش ظاهرا کاربر پرسش‌کننده کار با نرم‌افزاری را می‌داند، کد اجرایی پاسخ داده‌شده نیز آورده‌شده‌است بنابراین در صورت داشتن دسترسی به نرم‌افزار Maple می‌تواند کد را اجرا کند.
۴- با دیدن راه‌حل‌های متفاوت و ایده‌های جدید خلاقیت فرد تمرین داده می‌شود.
اینها فقط ۴ دلیل بود که احتمالا خودتان می‌توانید دلیل‌های دیگری نیز پیدا کنید. در آخر ظاهرا @rashooda این پاسخ را تأیید کرده‌اند. می‌توانند پاسخ دیگری را در صورت تمایل انتخاب کنند، من نبوده‌ام که پاسخ خودم را به عنوان بهترین پاسخ انتخاب کرده‌باشم.
اگر مشکل خاصی در متنی که نوشته‌ام هست اشاره کنید.
+3 امتیاز
توسط
ویرایش شده توسط AmirHosein

سلام. برای مرکزیابی دایره با داشتن سه نقطه روی آن، دو خط با آن نقاط رسم کرده و عمود منصف‌های خطوط رسم شده را نیز رسم می‌کنیم. نقطه تقاطع دو عمود منصف نقطه مرکزی دایره است. با تشکر.

+2 امتیاز
توسط alizokaee (23 امتیاز)
ویرایش شده توسط alizokaee

فرض کنید مختصات سه نقطه معلوم عبارتند از: $(x_1, y_1)$، $(x_2, y_2)$ و $(x_3, y_3)$ میخواهیم مختصات مرکز $(x_c, y_c)$ و شعاع $r$ دایره گذرا از این سه نقطه را بیابیم. چون این سه نقطه روی یک دایره قرار گرفته اند با توجه به معادله دایره داریم:
$$(x_1 - x_c)^2 + (y_1 - y_c)^2 = r^2 (1)$$ $$(x_2 - x_c)^2 + (y_2 - y_c)^2 = r^2 (2)$$ $$(x_3 - x_c)^2 + (y_3 - y_c)^2 = r^2 (3)$$ از $(1)$ و $(2)$ نتیجه می گیریم: $$(x_1 - x_c)^2 + (y_1 - y_c)^2 = (x_2 - x_c)^2 + (y_2- y_c)^2 (4)$$ و از $(2)$ و $(3)$ نتیجه می گیریم: $$(x_2 - x_c)^2 + (y_2 - y_c)^2 = (x_3 - x_c)^2 + (y_3- y_c)^2 (5)$$ و از $(1)$ و $(3)$ نتیجه می گیریم: $$(x_1 - x_c)^2 + (y_1 - y_c)^2 = (x_3 - x_c)^2 + (y_3- y_c)^2 (6)$$ با بسط و ساده سازی معادلات $(4)$، $(5)$ و $(6)$ داریم: \begin{cases} 2(x_2-x_1)x_c+2(y_2-y_1)y_c= x_2^2-x_1^2+y_2^2-y_1^2\\ 2(x_3-x_2)x_c+2(y_3-y_2)y_c= x_3^2-x_2^2+y_3^2-y_2^2&&(7)\\ 2(x_3-x_1)x_c+2(y_3-y_1)y_c= x_3^2-x_1^2+y_3^2-y_1^2\end{cases}

حال متغیرهای زیر را تعریف میکنیم: $$a_1=2(x_2-x_1), b_1=2(y_2-y_1), c_1=x_2^2-x_1^2+y_2^2-y_1^2$$ $$a_2=2(x_3-x_2), b_2=2(y_3-y_2), c_2=x_3^2-x_2^2+y_3^2-y_2^2$$ $$a_3=2(x_3-x_1), b_3=2(y_3-y_1), c_3=x_3^2-x_1^2+y_3^2-y_1^2$$ با قرار دادن مقادیر فوق در $(7)$ داریم: \begin{cases}a_1 x_c+b_1 y_c=c_1\\ &&(8)\\ a_2 x_c+b_2 y_c=c_2\end{cases} \begin{cases}a_2 x_c+b_2 y_c=c_2\\ &&(9)\\ a_3 x_c+b_3 y_c=c_3\end{cases} \begin{cases}a_1 x_c+b_1 y_c=c_1\\ &&(10)\\ a_3 x_c+b_3 y_c=c_3\end{cases} $(8)$، $(9)$ و $(10)$ دستگاه های 2 معادله 2 مجهولی ساده هسند. با حل هر یک از این دستگاه ها مختصات مرکر دایره $(x_c,y_c)$ بدست می آید. مثلاً حل $(8)$ منجر می شود به: $$x_c= \frac{c_1 b_2 - c_2 b_1}{a_1 b_2 - a_2 b_1} (11)$$ $$y_c= \frac{c_2 a_1 - c_1 a_2}{a_1 b_2 - a_2 b_1} (12)$$ بدیهی است که معادله های $(11)$ و $(12)$ وقتی دارای جواب هستد که: $$a_1 b_2 - a_2 b_1\neq 0 (13)$$ اگر شرط $(13)$ برقرار نبود بدین معناست که هیچ دایره ای از این سه نقطه عبور نمیکند یعنی این نقاط روی یک خط راست قرار دارند.

با داشتن $(x_c, y_c)$ می توان با استفاده از یکی از معادلات $(1)$ تا $(3)$ مقدار $r$ بدست آورد. مثلاً: $$r= \sqrt{(x_1-x_c)^2+(y_1-y_c)^2} (14)$$ راه حل فوق را به یک کد تبدیل کرده ام که می توانید با استفاده از آن مختصات مرکز $(x_c, y_c)$ و شعاع دایره $r$ را بدست آورید (کد را به زبان برنامه نویسی خیام که خودم توسعه داده ام نوشته ام ولی کد بسیار واضح است و به راحتی به هر زبان برنامه نویسی دیگر قابل تبدیل است):

   cls();
   format("% .3Lf"); 

   var x1, x2, x3;
   var y1, y2, y3;
   var fp;

   var a1, b1, c1;
   var a2, b2, c2;
   var a3, b3, c3; 

   var xc, yc, r; 

   lprint("(x1, y1) = ("); 
   input("X1:", x1); print(x1, ", ");
   input("Y1:", y1); print(y1, ")");

   lprint("(x2, y2) = ("); 
   input("X2:", x2); print(x2, ", ");
   input("Y2:", y2); print(y2, ")");

   lprint("(x3, y3) = ("); 
   input("X3:", x3); print(x3, ", ");
   input("Y3:", y3); print(y3, ")");

   a1 = 2*(x2 - x1); 
   b1 = 2*(y2 - y1); 
   c1 = x2^2 - x1^2 + y2^2 - y1^2;

   a2 = 2*(x3 - x2);
   b2 = 2*(y3 - y2);
   c2 = x3^2 - x2^2 + y3^2 - y2^2;

   a3 = 2*(x3 - x1);
   b3 = 2*(y3 - y1);
   c3 = x3^2 - x1^2 + y3^2 - y1^2;  

   if((a1*b2 - a2*b1) != 0)
   { 
       xc = (c1*b2 - c2*b1)/(a1*b2 - a2*b1);
       yc = (c2*a1 - c1*a2)/(a1*b2 - a2*b1);
   }
   else
   {
        lprint(); 
        lprint("No Solution found!");
        end;
   } 

   r = sqrt((x1 - xc)^2 + (y1 - yc)^2); 

   lprint(); 
   lprint("(xc, yc) = (", xc, ", ", yc, ")");
   lprint("       r = ", r); 

این هم همان کد به زبان فرترن:

program c3p

implicit none

real*4 x1, y1, x2, y2, x3, y3

real*4 a1, b1, c1
real*4 a2, b2, c2
real*4 a3, b3, c3

real*4 xc, yc, r

print *, "A short program for computing center and radius"
print *, "of a circle passing through 3 points"
print *, "by Ali Zokaee"
print *, "-----------------------------------------------"

print *, "enter x1:"   
read *, x1
print*, "enter y1:"
read *, y1

print *, "enter x2:"
read *, x2
print *, "enter y2:"
read *, y2

print *, "enter x3:"
read *, x3
print *, "enter y3:"
read *, y3

a1 = 2.0*(x2 - x1) 
b1 = 2.0*(y2 - y1) 
c1 = x2**2.0 - x1**2.0 + y2**2.0 - y1**2.0

a2 = 2.0*(x3 - x2)
b2 = 2.0*(y3 - y2)
c2 = x3**2.0 - x2**2.0 + y3**2.0 - y2**2.0

a3 = 2.0*(x3 - x1)
b3 = 2.0*(y3 - y1)
c3 = x3**2.0 - x1**2.0 + y3**2.0 - y1**2.0 

print *, "-----------------------------------------------"

if((a1*b2 - a2*b1) .ne. 0.0) then
    xc = (c1*b2 - c2*b1)/(a1*b2 - a2*b1)
    yc = (c2*a1 - c1*a2)/(a1*b2 - a2*b1)
else
    print *, "No Solution could be found!"
    stop
endif

r = sqrt((x1 - xc)**2.0 + (y1 - yc)**2.0)

print *, "Center Point: (xc, yc) = (", xc, ", ", yc, ")"
print *, "Radius: r = ", r

stop
end

و این هم خروجی برنامه:

توضیحات تصویر

توسط AmirHosein (19,620 امتیاز)
@alizokaee اگر زبانی که اشاره کرده‌اید در دسترس عموم  (چه رایگان، چه نارایگان) قرار دارد پیوندی برای homepage صفحهٔ اصلیِ این نرم‌افزار قرار دهید و گر نه چیزی که فرد دیگری به آن دسترسی نداشته باشد چه سودی دارد که کد آن را قرار دهید؟
توسط alizokaee (23 امتیاز)
AmirHosein@ چون خودم نیاز به این موضوع داشتم و معمولا کارهایم را با زبان که اشاره شد انجام می دهم این کد را نوشتم ولی همانطور که عرض کردم تبدیل آن به یک زبان دیگر بسیار ساده است. اگر کسی نیاز داشت فلوچارت برنامه را مینویسم.
زیان فوق رو هم تا حالا جایی ارائه نکرده ام اگر علاقه داشتید برایتان ارسال میکنم.
توسط alizokaee (23 امتیاز)
+2
راه حل مساله را آوردم که به راحتی می توان آنرا تبدیل به کد کرد
توسط alizokaee (23 امتیاز)
کد را به زبان فرترن هم اضافه کردم
توسط AmirHosein (19,620 امتیاز)
@alizokaee اگر با من صحبت می‌کنید نام کاربری‌ام را با علامت اتسای بیاورید. در مورد زبان Fortan هم خیلی خوب.
+2 امتیاز
توسط sMs (721 امتیاز)

سلام. مختصات مرکز دایره ره به صورت $(A,B)$ در نظر بگیرید. خب با داشتن مختصات سه نقطه بر روی دایره به سادگی میتوان مختصات مرکز را به دست آورد. با توجه به این نکته که فاصله هر نقطه روی دایره از مرکز به یک فاصله مشخص(شعاع دایره) است. پس : $$ \sqrt{(A-x_1)^2+(B-y_1)^2}= \sqrt{(A-x_2)^2+(B-y_2)^2} $$ دو طرف تساوی را به توان ۲ میرسانیم و به راحتی A و B بر حسب یکدیگر به دست می‌آیند.فرض میکنیم نقاط $(2,-1)$ و $(0,1)$ روی دایره باشند. مختصات مرکز آن را $(A,B)$ می‌گیریم. داریم: $$(A-0)^2+(B-1)^2 = (A-2)^2+(B+1)^2$$ اگر اتحاد‌ها را باز کنیم، خواهیم داشت: $$A^2+B^2-2B+1=A^2-4A+4+B^2+2B+1$$ پس از ساده کرده : $$-4B+4A=4$$ $$4(A-B)=4$$ $$A-B=1$$ $$A=B+1$$ حال در محاسبه فاصله سومین نقطه از مبدا، به جای $A$ بنویسید $B+1 $ $$ \sqrt{((B+1)-x_3)^2+(B-y_3)^2}= \sqrt{((B+1)-x_1)^2+(B-y_1)^2} $$ یک معادله، یک مجهول. B را به دست آوردید A هم می‌شود $B+1 $


حمایت مالی

کانال تلگرام محفل ریاضی
امروز : تاریخ شمسی اینجا نمایش داده می‌شود
...