কর্নু সর্পিল লাগানো


33

Cornu পেঁচানো আলো প্রসারণ পথ সমাকলনের জন্য ফাইনম্যান এর পদ্ধতি ব্যবহার করে হিসাব করা যেতে পারে। আমরা নিম্নলিখিত বিযুক্তি ব্যবহার করে এই অবিচ্ছেদ্য আনুমানিক করব।

এই চিত্র হিসাবে যেমন একটি আয়না বিবেচনা করুন, Sআলোর উত্স Pকোথায় এবং আমরা যেখানে আলোক সংগ্রহ করি সেই বিন্দুটি। আমরা ধরে নিই যে আলোটি Sআয়নার প্রতিটি বিন্দুতে এবং তারপরে বিন্দুতে একটি সরল রশ্মিতে বাউন্স করে P। আমরা মধ্যে আয়না ভাগ Nঅংশ এই উদাহরণে 13, লেবেলযুক্ত, Aকরতে M, যাতে আলোর পথ দৈর্ঘ্য হল R=SN+NP, যেখানে SNথেকে দূরত্ব Sআয়না সেগমেন্ট N, এবং অনুরূপ P। ( দ্রষ্টব্য যে চিত্রটিতে পয়েন্ট Sএবং Pআয়নাটির দূরত্ব অনেক ছোট করা হয়েছে, ভিজ্যুয়াল উদ্দেশ্যে। ব্লকটি Qবরং অপ্রাসঙ্গিক, এবং আয়নার মাধ্যমে প্রতিবিম্বটি নিশ্চিত করার জন্য খাঁটিভাবে স্থাপন করা হয়েছে এবং সরাসরি আলো থেকে এড়াতে SহবেP)

প্রতিবিম্ব প্রতিবিম্বিত

একটি প্রদত্ত তরঙ্গ সংখ্যা জন্য phasor আলোর একটি রশ্মি হিসাবে গণনা করা যায় , যেখানে কাল্পনিক একক। এই সমস্ত ফেজারকে বাম মিরর অংশ থেকে ডানদিকে লেজ পর্যন্ত কর্টু সর্পিল দিকে নিয়ে যায়। 13 টি উপাদান এবং এর নীচে বর্ণিত মানগুলির জন্য:kexp(i k R)i

এখানে চিত্র বর্ণনা লিখুন

বৃহত Nঅর্থাত্ প্রচুর আয়না বিভাগের জন্য সর্পিলটি "সত্য" কর্নু সর্পিলের কাছে চলে আসে। এই মানচিত্রটি বিভিন্ন মান ব্যবহার করে দেখুন N:

এখানে চিত্র বর্ণনা লিখুন

চ্যালেঞ্জ

একটি প্রদত্ত জন্য Nদিন x(n)হতে এক্স এর -coordinate কেন্দ্র এন -th আয়না সেগমেন্ট ( n = 0,1,2,...,N):

x(n) := n/N-0.5

এন-তম আয়না বিভাগের SN(n)দূরত্ব হওয়া যাক S = (-1/2, 1000):

SN(n) := sqrt((x(n)-(-1/2))^2 + 1000^2) 

এবং একইভাবে

NP(n) := sqrt((x(n)-1/2)^2 + 1000^2) 

সুতরাং n -th আলোক রশ্মি দ্বারা ভ্রমণ মোট দূরত্ব

R(n) := SN(n) + NP(n) 

তারপরে আমরা n -th মিরর সেগমেন্ট হিসাবে আলোক রশ্মির ফ্যাসার (একটি জটিল সংখ্যা) সংজ্ঞায়িত করি

P(n) = exp(i * 1e6 * R(n)) 

আমরা এখন ক্রমসংখ্যার অঙ্কগুলি বিবেচনা করি (একটি অবিচ্ছেদ্যের সান্নিধ্য হিসাবে)

C(n) = P(0)+P(1)+...+P(n)

লক্ষ্যটি এখন পয়েন্টগুলির মাধ্যমে একটি অংশবিশেষ রৈখিক বক্ররেখা ষড়যন্ত্র করছে (C(0), C(1), ..., C(n)), যেখানে কল্পিত অংশটি C(n)এর আসল অংশের বিরুদ্ধে চক্রান্ত করা উচিত।

ইনপুট উপাদানের সংখ্যা হওয়া উচিত N, যা 100-একটি সর্বনিম্ন এবং অন্তত 1 মিলিয়ন উপাদানের একটি সর্বোচ্চ (আরও অবশ্যই অনুমতি হয়) আছে।

আউটপুট একটি চক্রান্ত বা অন্তত 400 × 400 পিক্সেল, বা ভেক্টর গ্রাফিক্স ব্যবহারের কোনো বিন্যাসে ইমেজ হওয়া উচিত। লাইনটির বর্ণ, অক্ষ স্কেল ইত্যাদি গুরুত্বহীন, যতক্ষণ না আকারটি দৃশ্যমান হয়।

যেহেতু এটি কোড-গল্ফ, তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

দয়া করে মনে রাখবেন যে এটি কোনও আসল কর্নু সর্পিল নয়, তবে এটির একটি অনুমান। প্রাথমিক পাথ ইন্টিগ্রালটি ফ্রেসেল অনুমান ব্যবহার করে প্রায় অনুমান করা হয়েছে, এবং আয়না দু'টিই অসীম দৈর্ঘ্যের নয় এবং অসীম সংখ্যক খণ্ডের সমন্বিত নয়, পাশাপাশি উল্লেখ করেছেন যে এটি পৃথক রশ্মির প্রশস্ততা দ্বারা স্বাভাবিক হয় না।


5
আমার nথেকে প্রাপ্ত মানগুলি ছিল 1তবে লুইস এবং ফ্লাওয়ারের সাথে একমত হয়ে, যারা পরিবর্তনের সময় একমাত্র উত্তরদাতা ছিলেন, আমি এটিকে এটি থেকে সংশোধন করেছিলাম 0, যা আয়না প্রতিসম করে এবং বাকী চ্যালেঞ্জের সাথে একমত হয় agreement দুঃক্ষিত।
এড্রিয়ান

উত্তর:


20

এমএটিএল , 29 26 25 বাইট

@ অ্যাড্রিয়ানকে 3 বাইট ছাড়ার জন্য ধন্যবাদ!

Q:qG/q1e3YytP+1e6j*ZeYsXG

ইনপুট সহ এখানে একটি উদাহরণ ... কারণ আজ এমএটিএল এর প্রথম জন্মদিন! (এবং ২০১ একটি লিপ বছর; সংশোধনের জন্য @ ম্যাড ফিজিসিস্টকে ধন্যবাদ)365 366

অথবা এটি এমএটিএল অনলাইনে চেষ্টা করে দেখুন ! (পরীক্ষামূলক সংকলক; পৃষ্ঠাটি কাজ না করে তা রিফ্রেশ করুন)।

এখানে চিত্র বর্ণনা লিখুন

ব্যাখ্যা

Q:q    % Input N implicitly. Push range [0 1 ... N] (row vector)
G/     % Divide by N, element-wise
q      % Subtract 1. This gives NP projected onto the x axis for each mirror element
1e3    % Push 1000. This is NP projected onto the y axis
Yy     % Hypotenuse function: computes distance NP
tP     % Duplicate, reverse. By symmetry, this is the distance SN
+      % Add. This is distance SNP for each mirror element (row vector)
1e6j   % Push 1e6*1i
*      % Multiply
Ze     % Exponential
Ys     % Cumulative sum
XG     % Plot in the complex plane

8
নিকটতম তোয়ালে ধরে এবং এতে ফেলে দেয় ...
ম্যাজিক অক্টোপাস ইউরান

10
শুভ জন্মদিন এমএটিএল!
সোয়েভার

1
2016 কি লিপ বছর নয়?
ম্যাড পদার্থবিদ

14

ম্যাটল্যাব, 88 84 81 79 বাইট

g=@(x)hypot(1e3,x);h=@(x)plot(cumsum(exp(1e6i*(g(x)+g(1-x)))));f=@(N)h(0:1/N:1)

ধন্যবাদ -৩ বাইটের জন্য লুইসমেন্দো, এবং -২ বাইটের জন্য @ অ্যাড্রিয়ান!

ফাংশন gদূরত্ব ফাংশন আমরা ব্যবহার SNএবং NP, এবং hহিসাব প্লাস চক্রান্তের বাকি আছে। fআমরা চাই প্রকৃত ফাংশন এবং এটি আমাদের প্রয়োজন ভেক্টর উত্পাদন করে।

এটি আউটপুট N=1111

এন = 1111 এর জন্য আউটপুট


12

জিওজেব্রা , 107 বাইট

1
1E6
InputBox[a]
Polyline[Sequence[Sum[Sequence[e^(i*b(((k/a)^2+b)^.5+((k/a-1)^2+b)^.5)),k,0,a],l],l,1,a]]

প্রতিটি লাইন পৃথকভাবে ইনপুট বারে প্রবেশ করানো হয়। ইনপুটটি একটি ইনপুট বাক্স থেকে নেওয়া হয়।

এখানে মৃত্যুদন্ড কার্যকর করার একটি জিআইএফ:

কর্নুর সর্পিল

কিভাবে এটা কাজ করে

প্রবেশ 1এবং 1E6পরোক্ষভাবে মান নির্ধারণ aএবং bযথাক্রমে। এর পরে, InputBox[a]কমান্ড একটি ইনপুট বাক্স তৈরি করে এবং এর সাথে যুক্ত করে a

ভেতরের Sequenceকমান্ডের মান পূর্ণসংখ্যা উপর iterates kথেকে 0থেকে aসমেত। প্রতিটি মানের জন্য k, প্রয়োজনীয় দূরত্বটি এক্সপ্রেশন ব্যবহার করে গণনা করা হয়((k/a)^2+b)^.5+((k/a-1)^2+b)^.5) । এটি তখন গুণিত হয় i*bযেখানে iকল্পিত ইউনিট হয় এবং ফলাফলটিতে eউত্থাপিত হয়। এটি জটিল সংখ্যার একটি তালিকা দেয়।

এরপর, বাইরের Sequenceসঞ্চালিত মান পূর্ণসংখ্যা উপর iterating দ্বারা cumlative সমষ্টি lথেকে 1থেকে aসমেত। প্রতিটি মূল্য জন্যl , তালিকার প্রথম lউপাদানগুলি Sumকমান্ড ব্যবহার করে সংক্ষিপ্ত করা হয় , আবার জটিল সংখ্যার একটি তালিকা তৈরি করে।

জিওজেব্রা জটিল সংখ্যাটিকে a + biবিন্দু হিসাবে বিবেচনা করে (a, b)। অতএব, Polylineকমান্ডটি ব্যবহার করে জটিল সংখ্যাগুলি প্লট করা যেতে পারে , যা সরল রেখাংশের সাথে জটিল সংখ্যা তালিকার সমস্ত পয়েন্টগুলিতে যোগ দেয়।


5

আর, 102 82 80 বাইট

সম্পাদনা করুন: দূরত্ব গণনার জন্য ফাংশনটি স্ক্র্যাপ করে ফেলেছে

সম্পাদনা 2: @ প্ল্যানাপাসের প্রায় অভিন্ন উত্তর লক্ষ্য করা গেছে (ওহ ভাল)

সম্পাদনা 3: সংরক্ষিত 2 বাইট এছাড়াও প্লানাপাসকে ধন্যবাদ

N=scan();x=1:N/N;plot(cumsum(exp((sqrt(x^2+1e6)+sqrt((x-1)^2+1e6))*1e6i)),t="l")

জন্য N=1000আমরা পাই:

এখানে চিত্র বর্ণনা লিখুন


প্রকৃতপক্ষে আপনি 80 বাইটের চেয়ে কম যেতে পারেন যেহেতু আপনার আর কোনও প্রথম বন্ধনী প্রয়োজন xনেই:N=scan();x=1:N/N;plot(cumsum(exp((sqrt(x^2+1e6)+sqrt((x-1)^2+1e6))*1e6i)),t="l")
প্ল্যানাপাস

4

আর, 86 83 81 বাইট

plot(cumsum(exp(1e6i*((1e6+(0:(N<-scan())/N)^2)^.5+(1e6+(0:N/N-1)^2)^.5))),t="l")

অতিরিক্ত 3 বাইটের জন্য @ জারকো ডাবডেলডামকে ধন্যবাদ।

এন = 1000 এর জন্য:

এন = 1e3


বাহ, 2 মিনিটের মধ্যে 2 টি উত্তর। এটি অদ্ভুত, আমি একই চেষ্টা করেছি এবং আমি এটি কাজ করতে পারি না, তবে এটি আমার পক্ষে ভাল কাজ করে: এস যাই হোক, ভাল কাজ!
জেএডি

এছাড়াও, স্ক্যান ব্যবহার করে plot(cumsum(exp(1e6i*(sqrt(1e6+(0:(N<-scan())/N)^2)+sqrt(1e6+(0:N/N-1)^2)))),t="l")কয়েকটি বাইট সংরক্ষণ করে
জেএডি

1

গণিত 89 89 বাইট (87 টি চর)

Graphics[Line[ReIm/@Tr/@Table[E^(I*10^6*Tr[√(10^6+(-{0,1}+j/#)^2)]),{i,0,#},{j,0,i}]]]&

ব্যবহার:

%@100

উৎপাদনের

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.