به محفل ریاضی ایرانیان خوش آمدید! لطفا برای استفاده از تمامی امکانات عضو شوید
سایت پرسش و پاسخ ریاضی
Visanil
+3 امتیاز
631 بازدید
در دانشگاه توسط smanochehri (21 امتیاز)
ویرایش شده توسط AmirHosein

چگونه می‌توان نمودارِ ضابطهٔ ضمنیِ زیر را رسم کرد؟

$$\frac{(x^2+y^2-0.5)^3}{4}=4x^2y^3$$

لطفا نحوهٔ رسم را شرح دهید.

2 پاسخ

+2 امتیاز
توسط fardina (17,407 امتیاز)

رسم با استفاده از سایت wolframalpha

enter image description here

+2 امتیاز
توسط AmirHosein (19,676 امتیاز)
ویرایش شده توسط AmirHosein

روش‌های گوناگونی را می‌توانید پیش بگیرید. نخستین روشی که به ذهن من می‌رسد به عنوان یک پرسش از درس ریاضی عمومی با فرض اینکه مختصات قطبی را آشنا شده‌باشید بازنویسیِ برابری‌تان به شکل زیر است. که تنها از یک طرفین-وسطین و $x=r\cos\theta$ و $y=r\sin\theta$ استفاده کرده‌ایم.

$$(r^2+\frac{1}{2})^3=16r^5\cos^2\theta\sin^3\theta$$

اکنون با به توان رساندن و مرتب کردن برابری‌تان هم‌ارز با دستگاه زیر می‌شود.

$$r^6-(16\cos^2\theta\sin^3\theta)r^5-\frac{1}{2}r^4+\frac{1}{4}r^2-\frac{1}{8}=0,\;r>0,\;0\leq\theta < 2\pi$$

اکنون کار ساده‌است، یک عدد $n$ به اندازهٔ کافی بزرگ بردارید، بازهٔ $[0,2\pi)$ را به $n$ قسمت مساوی تقسیم و از هر قسمت یک نقطه بردارید، در برابریِ بالا جایگذاری کنید. یک چندجمله‌ای درجهٔ ۶ تک‌متغیره بر حسب $r$ دارید. آن را با هر روش دلخواهی حل کنید و پاسخ‌های حقیقی مثبت آن را بردارید. اگر چند تا پاسخ دارد، همه‌شان را بردارید و زوج‌های مرتب $(\theta,r)$ای که از این طریق بدست می‌آورید را در یک مجموعه قرار دهید. اکنون مجموعه‌نقاطتان را در صفحه بگذارید. با افزایش تعداد نقاط شکل حاصل به شکل کامل میل می‌کند. در پائین دستور یک تابع (الگوریتم) در نرم‌افزار Mathematica برای انجام این محاسبات و رسم نمودار برای $n$ نقطه که کاربر بدهد را نوشته‌ام.

PlotOurDiagram[n_] := (
  PointsListo = {};
  For[i = 1, i <= n, i++,
   theta = (i - 1)*2*Pi/n;
   rans = 
    ReplaceAll[
      NSolve[r^6 - (16*Cos[theta]^2*Sin[theta]^3)*r^5 - r^4/2 + 
           r^2/4 - 1/8 == 0 && r > 0, r, Reals][[1]]][r];
   AppendTo[PointsListo, {rans*Cos[theta], rans*Sin[theta]}];
   ];
  Return[ListLinePlot[PointsListo, PlotRange -> {{-3, 3}, {-1, 3}}, 
    PlotStyle -> Red]];
  )

برای اینکه غیر از رسم‌شدن، زمان انجام این محاسبه و رسم را هم متوجه شویم از دستور Timing مانند زیر استفاده کرده‌ام. $n$ را نیز ۱۰۰ داده‌ام. زمانی که از Timing استفاده می‌کنید، یک لیست دو عضوی می‌گیرید که عوض نخست یک عدد که مدت زمان را نشان می‌دهد است و عضو دوم خروجی تابعی که به Timing داده‌بودید.

ploto100 = Timing[PlotOurDiagram[100]]

زمان انجام این محاسبه بر روی رایانه‌ام تقریبا $0.17$ ثانیه است. شکل حاصل در زیر آورده‌شده‌است.

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

خیلی شکل خوبی نیست ولی باید توجه داشت که در این فرآیند چندین نکتهٔ آنالیز عددی (از حل عددی برابری چندجمله‌ای تا خود ترسیم و تقسیم‌بندی و دقت اعشاری محاسبات) وجود دارد که برای دقیق‌تر شدن شکل باید آنها را بررسی کرد. به هر حال با یک چشم‌پوشی بزرگ می‌توان آن را تقریبی از شکلی که آقای @fardina رسم‌کرده‌اند در نظر گرفت.

می‌توانید برای چک‌کردن از دستورِ حاضر و آمادهٔ نرم‌افزار Mathematica برای رسم مجموعه‌تراز که برای رسم مجموعهٔ $(x,y)$هایی که در یک برابری $f(x,y)=0$ صدق کنند تهیه شده استفاده کنید، این دستور ContourPlot است.

ContourPlot[(x^2 + y^2 - 1/2)^3 - 16*x^2*y^3 == 0, {x, -3, 3}, {y, -1,
   3}, PlotRange -> {{-3, 3}, {-1, 3}}, ContourStyle -> RGBColor[1, 0, 0]]

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

موتوری که آقای @fardina برای ترسیم استفاده کرده‌اند نیز موتور یکسانی است1.

دستور plot_real_curve از بستهٔ algcurves در نرم‌افزار Maple نیز شکل قلب‌گونه را می‌دهد. این دستور برای رسم خم‌ها در صفحه به کار می‌رود.

algcurves[plot_real_curve]((x^2+y^2-1/2)^3-16*x^2*y^3,x,y);

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


  1. سایت wolframalpha.com و نرم‌افزار Mathematica هر دو متعلق به شرکت هستند. ↩︎


حمایت مالی

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