আনুমানিক ডটি নম্বর


17

ডটি সংখ্যা কোসাইন ফাংশন নির্দিষ্ট বিন্দু, অথবা সমীকরণ সমাধান কোসাইন্ (x) এর = এক্স1

আপনার কাজটি এমন কোড তৈরি করা হবে যা এই ধ্রুবকটির প্রায় সমান হয়। আপনার কোডটি এমন কোনও ফাংশন উপস্থাপন করা উচিত যা কোনও পূর্ণসংখ্যাকে ইনপুট হিসাবে গ্রহণ করে এবং একটি আসল সংখ্যা আউটপুট করে। ইনপুট বাড়ার সাথে সাথে আপনার ফাংশনের সীমাটি ডটি নম্বর হওয়া উচিত be

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

এটি একটি প্রশ্ন তাই উত্তরগুলি বাইটে স্কোর করা হবে, কম বাইট আরও ভাল।

পরামর্শ

ধ্রুবক গণনা করার একটি উপায় হ'ল যে কোনও নম্বর নেওয়া এবং বারবার এতে কোসাইন প্রয়োগ করা। অ্যাপ্লিকেশন সংখ্যা অনন্ত দিকে ঝোঁক হিসাবে ফলাফল কোসাইন স্থির বিন্দু দিকে ঝোঁক।

এখানে সংখ্যার মোটামুটি সঠিক অনুমান দেওয়া হচ্ছে is

0.739085133215161

1: এখানে আমরা রেডিয়ানগুলিতে কোসাইন নেব


সুতরাং, আমরা যদি পাইথন ব্যবহার করি, আমাদের অবশ্যই নিজের ধরণের প্রয়োগ করতে হবে বা আমদানি করতে হবে Decimal?
মিঃ এক্সকোডার

আমাদের জমাটি কতটা সঠিক হতে হবে?
মিঃ এক্সকোডার

চুরি করতে জেলি টিউটোরিয়ালে যায় ÆẠȷ¡এটি অবৈধ izes ব্র্যাচল্যাগ চেষ্টা করে; ওহ না ব্র্যাচল্যাগ এমনকি ভাসমান কাজও করে না।
এরিক আউটগল্ফার

1
আমি মনে করি "নির্বিচারে নির্ভুল" প্রয়োজনীয়তাটি কিছুটা কঠোর। কেন একবারে একটি উত্তর বৈধ বিবেচনা করবেন না x=cos(x)?
kamoroso94

2
আমি এটি হাস্কেল, এপিএল এবং কিছু লিস্পের স্বাদে দেখতে চাই।
সি

উত্তর:


7

এমএটিএল , 34 30 19 বাইট

সানচাইসেসকে 11 বাইট বন্ধ !

48i:"'cos('wh41hGY$

আউটপুটে শেষ দশমিক পরিসংখ্যান বন্ধ হতে পারে। যাইহোক, বাম থেকে শুরু হওয়া সঠিক পরিসংখ্যানগুলির সংখ্যা ইনপুট দিয়ে বৃদ্ধি পায় এবং ফলাফলটি প্রকৃত ধ্রুবকে রূপান্তরিত করে।

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

ইনপুট এন এর জন্য এবং x = 1 থেকে শুরু করে , এটি ফাংশনটি প্রয়োগ করে

              এক্স ↦ কোস ( এক্স )

সঙ্গে এন ডাক আসবে পরিবর্তনশীল স্পষ্টতা গাণিতিক এন বার।

48         % Push 48, which is ASCII for '1': initial value for x as a string
i:"        % Do n times, where n is the input
  'cos('   %   Push this string
  w        %   Swap. Moves current string x onto the top of the stack
  h        %   Concatenate
  41       %   Push 41, which is ASCII for ')'
  h        %   Concatenate. This gives the string 'cos(x)', where x is the
           %   current number
  GY$      %   Evaluate with variable-prevision arithmetic using n digits
           %   The result is a string, which represents the new x
           % End (implicit). Display (implicit). The stack contains the last x

কেন এটি কেবল এন ডিজিটের নির্ভুলতার জন্য n বার প্রয়োগ করা যায় না? এটি অত্যধিক জটিল বলে মনে হচ্ছে।
সানচিইস

1
এই অবিশ্বাস্য. আমি এটি এপিএলে দেখতে চাই।
সি


4

জিএনইউ বিসি-এল, 30

স্কোরটিতে -lপতাকাটির জন্য +1 অন্তর্ভুক্ত bc

for(a=1;a/A-b/A;b=c(a))a=b
a

চূড়ান্ত নিউলাইনটি তাৎপর্যপূর্ণ এবং প্রয়োজনীয়।

এটি অনলাইনে চেষ্টা করুন

-l 2 টি কাজ করে:

  • c()কোস (এক্স) সহ "গণিত" লাইব্রেরি সক্ষম করুন
  • নির্ভুলতা (স্কেল) 20 দশমিক স্থানে সেট করে ( bcনির্বিচারে নির্ভুলতার গণনা রয়েছে)

যথার্থ প্রয়োজনীয়তার বিষয়ে আমি সত্যিই পরিষ্কার নই। যেমনটি হয়, এই প্রোগ্রামটি 20 দশমিক স্থানে গণনা করে। যদি কোনও আলাদা নির্ভুলতা scale=n;প্রয়োজন হয় তবে প্রোগ্রামের শুরুতে decোকানো দরকার যেখানে nদশমিক জায়গার সংখ্যা। আমার স্কোর এ যুক্ত করা উচিত কিনা আমি জানি না।

আরও মনে রাখবেন যে কয়েকটি সংখ্যক দশমিক স্থানের জন্য (যেমন 21, তবে 20 নয়), গণনাটি শেষ অঙ্কটিতে সমাধানের উভয় দিককে দোলায়। সুতরাং বর্তমান এবং পূর্ববর্তী পুনরাবৃত্তির তুলনা করে, আমি Aশেষ অঙ্কটি মুছতে উভয় পক্ষকে 10 ( ) দ্বারা বিভক্ত করি ।


4

গণিত, 22 বাইট

Nest[Cos@#&,0,9#]~N~#&

ইনপুট

[100]

আউটপুট

0.73908513321516064165531208767387340401341175890075746496568063577328 \ 46548835475945993761069317665318



3

কে: 6 বাইট

  _cos/1
0.7390851

f/fএটি নির্দিষ্ট স্থানে পৌঁছা পর্যন্ত প্রযোজ্য ।


এটি কে এর কোন সংস্করণ? _আমি জানি বেশিরভাগ সংস্করণে মেঝে। k4 এবং ওকে আপনার সাথে 5 বাইট পেতে পারেনcos/1
আঁকিবুঁকি

K3। বিল্ট-ইনগুলি সেখানে আন্ডারস্কোর দিয়ে শুরু হয়।
স্পর্শকাতর

1
মজাদার! আমি বন্যে কে 3 দেখিনি। এটিকে লেবেল দেওয়ার মতো হতে পারে যেমন এই ফোরামে একাধিক সংস্করণ ব্যবহৃত হয়েছে :)
স্ক্রল

2

আর (+ আরএমপিএফআর), 55 বাইট

function(n,b=Rmpfr::mpfr(1,n)){for(i in 1:n)b=cos(b);b}

ডেনিস এখন টিএমওতে Rmpfr যোগ করেছে তাই এটি কাজ করবে; কিছু পরীক্ষার কেস যুক্ত হয়েছে।

ব্যাখ্যা:

কোড আমি থেকে লিখেছেন লাগে এই প্রতিদ্বন্দ্বিতা নির্ণয় করা cos nথেকে শুরু বার 1কিন্তু প্রথম আমি স্পষ্টতা আমি মান একটি বস্তু তৈরি করে হতে চান নির্দিষ্ট bশ্রেণীর mpfrমান 1এবং স্পষ্টতা n, n>=2, তাই আমরা আরো স্পষ্টতা পেতে হিসাবে আমরা বরাবর যেতে।

এটি অনলাইন চেষ্টা করুন!


3
আবার চেষ্টা কর. :) ভবিষ্যতে, টিআইও থেকে কোনও কিছু অনুপস্থিত থাকলে, টক.টরিটোনলাইন.নেমে কোনও বার্তা ফেলতে দ্বিধা করবেন না ।
ডেনিস

@ ডেনিস আপনাকে ধন্যবাদ! ভবিষ্যতে আমি তা মাথায় রাখব!
জিউসেপে


2

ডিজাইমা / এপিএল , 55 বাইট

⎕←⊃{⍵,⍨-/P,((P÷⍨×)/¨(2×⍳N)⍴¨⊃⍵)÷!2L×⍳N}⍣{⍵≢∪⍵}P10L*N←⎕

10N1NN

টিআইওর ডিজাইমা / এপিএল হিসাবে কোনও টিআইও লিঙ্ক বিগিনজারদের সমর্থন করার জন্য আপডেট করা হয়নি।

আই / ও উদাহরণ:

1
9L

10
7390851332L

100
7390851332151606416553120876738734040134117589007574649656806357732846548835475945993761069317665318L

200
73908513321516064165531208767387340401341175890075746496568063577328465488354759459937610693176653184980124664398716302771490369130842031578044057462077868852490389153928943884509523480133563127677224L


1

পাইথ , 57 54 বাইট

u_.tG1lX$globals()$"neg"$__import__("decimal").Decimal

এটি আরও সংক্ষিপ্ত হবে যদি আমাদের দশমিকের অনুমানের প্রয়োজন হয় না, তবে এটি এটিই।

সম্পাদনা 1: -3 বাইট কারণ আমাদের যাইহোক একটি সংখ্যা প্রয়োজন, সুতরাং আমরা আমাদের প্রারম্ভিক মান হিসাবে দৈর্ঘ্যের Xফেরত অনুলিপিটি ব্যবহার করতে পারি globals(), এটি এটিকে প্রান্তে স্থানান্তর করতে এবং একটি $এবং কিছু সাদা স্থান সরিয়ে ফেলতে পারি ।

এটি অনলাইন চেষ্টা করুন!


1

এপিএল (ডায়ালগ ইউনিকোড) , 9 বাইট

2○⍣=1

এটি অনলাইন চেষ্টা করুন!

( নোট: দ্য Tio একটি অতিরিক্ত আছে ⎕←।। এই Tio একটি "স্বতন্ত্র" APL অনুবাদক উপরে দেখানো সঠিক অভিব্যক্তি ব্যবহার করেন দ্বারা প্রয়োজন বোধ করা হয় বাইট দেওয়া গণনা উপরে প্রকাশের জন্য কি Tio হিসাব না সঙ্গে এক জন্য ⎕← )

পৃথকীকরণ / ব্যাখ্যা:

2○⍣=1
            Apply repeatedly the function...
2           ...cosine of x (in radians), such that...
    1        ...the initial value of x is 1, and...
   =         ...if cos x is NOT equal to x, then re-evaluate, substituting cos x for x...
             ...until they ARE equal.

প্রথমবার ফাংশন কোস এক্স (2 ○ x) মূল্যায়ন করা হয়, এক্স = 1 দিয়ে তারা সমান হবে না। কোস 1 হ'ল 0.5403 ..., সুতরাং পুনরায় মূল্যায়ন করুন, 1 কে 0.5403 দিয়ে প্রতিস্থাপন করুন ... এবং (2 repeat x) = x অবধি প্রক্রিয়াটি পুনরাবৃত্তি করুন যা x = 0.73908 এর জন্য ঘটে ...

এটি তৈরি করার সময়, আমি "মুদ্রণের যথার্থতা" এর জন্য ডিফল্ট মান ব্যবহার করেছি, যা LPP using ব্যবহার করে এপিএলে সেট করা যেতে পারে; ডায়ালগ এপিএল অনুমতি দেয় এমন PPP এর সর্বাধিক মান 34 টি সংখ্যা।

এছাড়াও, এই প্রয়োগের জন্য ডিফল্ট নির্ভুলতা হ'ল -৪-বিট ভাসমান; কেউ এফআর ← 1287 সেট করে 128-বিট ফ্লোট ব্যবহার করতে পারে। টিআইও গণনা 64৪-বিট ফ্লোট সহ সম্পন্ন হয়।

কম্পিউটার ভাষার কোনও বাস্তবায়ন প্রকৃতপক্ষে নির্বিচারে নির্ভুলতা দিতে পারে না; তবে, একটি তাত্ত্বিক APL কোড যে হয়নি নির্বিচারে স্পষ্টতা বাস্তবায়ন হবে ঠিক একই


এটি 5 বাইট।
আদম

আপনি চ্যাটে যেমন উল্লেখ করেছেন, এটি একটি NARS2000 সমাধান হওয়া উচিত, এটি ডায়ালগে অবৈধ। তারপরে, এটিকে যথাযথ এন্ট্রি করার জন্য, আপনাকে সেট করা উচিত ⎕CT←0এবং সম্ভবত ইনপুট বরাদ্দ করা উচিত ⎕FPC
ডিজাইমা

এটি নির্বিচারে নির্ভুলতা সমর্থন করে না, যা Your output should be capable of being arbitrarily precise, floats and doubles are not sufficient for this challenge.
অনুমানের


0

পার্ল 5, 41 বাইট

use bignum;sub f{$_[0]?cos(f($_[0]-1)):0}

নির্বিচারে নির্ভুলতার জন্য বিগনাম প্রয়োজন। এমন একটি ফাংশন সংজ্ঞা দেয় যা পুনরাবৃত্তভাবে 0 এন বারে কোসাইন প্রয়োগ করে।

টিআইও তেমন কোনও লিঙ্ক নেই বলে মনে হচ্ছে না :(


0

গণিত 44 বাইট

FindRoot[Cos@x-x,{x,0},WorkingPrecision->#]&

FindRoot নিউটনের পদ্ধতিটি ডিফল্টরূপে ব্যবহার করে।


0

পাইথন 2, 86 বাইট

import math as m,decimal as d
def f(x,n):return f(d.Decimal(m.cos(x)),n-1)if n else x

টিপটি সরবরাহ করে নতুন সংস্করণ।

পাইথন 2, 105 বাইট

import math as m,decimal as d
def f(x,n):return d.Decimal(f(x+(m.cos(x)-x)/(m.sin(x)+1),n-1))if n else x

মান গণনা করতে নিউটনের পদ্ধতি এবং পুনরাবৃত্ত ফাংশন ব্যবহার করে । xএটি প্রাথমিক মান এবং nপুনরাবৃত্তি সীমা।


পাইথনের বিল্টিন ফ্লোট টাইপের মধ্যে অনির্দিষ্টকালের নির্ভুলতা থাকে, সুতরাং আপনার ফাংশনটি আসলে অ্যাসিম্পটিক নয়।
অ্যাডহক গার্ফ হান্টার

ধন্যবাদ, জানা ভাল। স্থির আমার ধারণা, খুব বেশি সংক্ষিপ্ত আর নয় :)
সিডবি

প্রশ্নে প্রদত্ত টিপটি সম্ভবত নিউটনের পদ্ধতির চেয়ে ছোট হবে।
অ্যাডহক গার্ফ হান্টার

আবারও ধন্যবাদ, মনে হচ্ছে আমি অভিনব গণিতে খুব দূরে ছিলাম।
সিডবি

আপনার ফাংশনটিতে nপ্রয়োজন অনুযায়ী 1 টি যুক্তি নেওয়া উচিত , সুতরাং আপনার ডিফল্ট হওয়া দরকার x=0। এছাড়াও এই ফাংশনটি নির্বিচারে-সুনির্দিষ্ট নয়, যেহেতু math.cosস্থির যথার্থতা।
সার্কুলোজ স্পুটাম

0

অ্যাক্সিয়াম, 174 বাইট

f(n:PI):Complex Float==(n>10^4=>%i;m:=digits(n+10);e:=10^(-n-7);a:=0;repeat(b:=a+(cos(a)-a)/(sin(a)+1.);if a~=0 and a-b<e then break;a:=b);a:=floor(b*10^n)/10.^n;digits(m);a)

ungolfed এবং মন্তব্য

-- Input: n:PI numero di cifre
-- Output la soluzione x a cos(x)=x con n cifre significative dopo la virgola
-- Usa il metodo di Newton a_0:=a  a_(n+1)=a_n-f(a_n)/f'(a_n)
fo(n:PI):Complex Float==
  n>10^4=>%i
  m:=digits(n+10)
  e:=10^(-n-7)
  a:=0     -- Punto iniziale
  repeat
     b:=a+(cos(a)-a)/(sin(a)+1.)
     if a~=0 and a-b<e then break
     a:=b
  a:=floor(b*10^n)/10.^n
  digits(m)
  a

ফলাফল:

(3) -> for i in 1..10 repeat output[i,f(i)]
   [1.0,0.7]
   [2.0,0.73]
   [3.0,0.739]
   [4.0,0.739]
   [5.0,0.73908]
   [6.0,0.739085]
   [7.0,0.7390851]
   [8.0,0.73908513]
   [9.0,0.739085133]
   [10.0,0.7390851332]
                                                               Type: Void
           Time: 0.12 (IN) + 0.10 (EV) + 0.12 (OT) + 0.02 (GC) = 0.35 sec
(4) -> f 300
   (4)
  0.7390851332 1516064165 5312087673 8734040134 1175890075 7464965680 635773284
  6 5488354759 4599376106 9317665318 4980124664 3987163027 7149036913 084203157
  8 0440574620 7786885249 0389153928 9438845095 2348013356 3127677223 158095635
  3 7765724512 0437341993 6433512538 4097800343 4064670047 9402143478 080271801
  8 8377113613 8204206631
                                                      Type: Complex Float
                                   Time: 0.03 (IN) + 0.07 (OT) = 0.10 sec

আমি নিউটন পদ্ধতিটি ব্যবহার করব কারণ এটি 'পুনরাবৃত্ত কোস (এক্স) পদ্ধতির চেয়ে' দ্রুত হবে

 800   92x
1000  153x
2000  379x

যেখানে প্রথম কলামে অঙ্কের সংখ্যা রয়েছে এবং দ্বিতীয় কলামে এখানে পুনরাবৃত্ত কোস (এক্স) পদ্ধতি ব্যবহারের চেয়ে নিউটন পদ্ধতিটি কতটা দ্রুত। সুপ্রভাত


0

স্ট্যাক্স , 5 বাইট

╘ñ[EΩ

এটি চালান এবং এটি ডিবাগ করুন ব্যাখ্যা:

1       Push 1 to the stack, this will be our initial variable
 {      Begin block
  |7    Cosine
    }N  Repeat block a number of times specified by the input

1
এটি নির্বিচারে নির্ভুলতা সমর্থন করে না, যা Your output should be capable of being arbitrarily precise, floats and doubles are not sufficient for this challenge.
অনুমানের

0

জাভাস্ক্রিপ্ট (নোড.জেএস) , 84 বাইট

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):I-Z>>2n?(I=Z,F(B)):I)(B=I=10n**n)

এটি অনলাইন চেষ্টা করুন!

মোটামুটি n-1অঙ্কের নির্ভুলতা রয়েছে । বিগআইন্ট ব্যবহৃত হয় এবং cos(x)এর টেলর সম্প্রসারণ ব্যবহার করে গণনা করা হয়। I-Z>>2nঅংশ শুধুমাত্র (4 বাইটের একটি খরচ এবং কিছু স্পষ্টতা সঙ্গে) সব সময় প্রবেশ করুন লুপিং প্রতিরোধ করতে ব্যবহৃত হয়। যদিও স্বেচ্ছাসেবী নির্ভুলতার জন্য তাত্ত্বিক প্রযোজ্য, বাস্তব সীমা n<63স্ট্যাক ওভারফ্লো কারণে।

সংক্ষিপ্ত (82 বাইট), স্ট্যাক ওভারফ্লো সম্পর্কে কোনও উদ্বেগ নয়, তবে খুব কম নির্ভুলতা

n=>"0."+eval("for(I=B=10n**n;n--;I=Z)for(Z=J=B,c=0n;J;)Z+=(J=J*-I*I/++c/++c/B/B)")

অনেক খাটো (80 বাইট), স্ট্যাক ওভারফ্লো ( n<172) অবধি বৃহত্তর পরিসীমা , তবে 82-বাইটের মতো একই নির্ভুলতা।

n=>"0."+(F=(J,Z=c=0n)=>J?F(J*-I*I/++c/++c/B/B,Z+J):n--?(I=Z,F(B)):I)(B=I=10n**n)

যদি নির্বিচারে যথার্থতা মূল বিন্দু না হয় তবে 25 বাইট:

F=n=>n?Math.cos(F(n-1)):1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.