পেডেন্টস কোসিন


29

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

cos(x) = 1 / 0! - x^2 / 2! + x^4 / 4! - x^6 / 6! + ... + (-1)^k x^(2k) / (2k)! + ...

যাইহোক, আমার বস খুব পিক। তিনি টেলর সিরিজের কতগুলি শর্ত গণনা করতে পারেন তা নির্দিষ্ট করে বলতে সক্ষম হতে চান। আপনি এই ফাংশন লিখতে আমাকে সাহায্য করতে পারেন?

তোমার কাজ

xথেকে একটি ভাসমান পয়েন্টের মান দেওয়া 0হয়েছে 2 piএবং এর nচেয়ে ধনাত্মক পূর্ণসংখ্যার চেয়ে উপরে দেওয়া টেলর সিরিজের 100প্রথম nশর্তগুলির যোগফল গণনা করুন cos(x)

এটি , তাই সংক্ষিপ্ততম কোড জিততে পারে। ইনপুট এবং আউটপুট মানক যে কোনও উপায়ে নেওয়া যেতে পারে। স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।

নোট

  • ইনপুট যেকোন যুক্তিসঙ্গত আকারে নেওয়া যেতে পারে, যতক্ষণ না এর মধ্যে xএবং এর মধ্যে স্পষ্ট বিভাজন থাকে n
  • ইনপুট এবং আউটপুটটি ভাসমান-পয়েন্টের মান হওয়া উচিত, কিছু স্ট্যান্ডার্ড রাউন্ডিং রুল সহ একক-নির্ভুলতা আইইইই ফ্লোটিং পয়েন্ট সংখ্যা ব্যবহার করে সূত্র গণনা করার মতো কমপক্ষে নির্ভুল।
  • যদি ভাষাটি ব্যবহারের জন্য অর্থবোধ করে, সঠিক যুক্তিযুক্ত পরিমাণ ব্যবহার করে গণনা করা যেতে পারে তবে ইনপুট এবং আউটপুট এখনও দশমিক আকারে থাকবে।

উদাহরণ

 x  |  n | Output
----+----+--------------
0.0 |  1 | 1.0
0.5 |  1 | 1.0
0.5 |  2 | 0.875
0.5 |  4 | 0.87758246...
0.5 |  9 | 0.87758256...
2.0 |  2 | -1.0
2.0 |  5 | -0.4158730...

1
আমি ধরে নিচ্ছি যে nএটিও এর চেয়েও বড় 0?
গ্যামারকর্পস

8
আমি বলব যে তারা প্রযুক্তিগতভাবে প্যাডেন্ট মানে যা তা নয়, তবে এটি খুব মেটা হবে।
পাইরুলেজ

8
যদি আপনার বস চান আপনি কোনও ভাল বা কমপক্ষে পাঠযোগ্য ফাংশন লিখতে চান তবে আপনি ভুল জায়গায় আছেন।
রোমান গ্রাফ

2
একজন সত্যিকারের খুঁতখুঁতে মনিব একটু আরও দক্ষ (এবং নির্ভুল) টেলর ধারাবাহিকের তুলনায় ব্যবহার ক্যালকুলেট কোসাইন চায় ...
প্রধানমন্ত্রী 2Ring

6
@ পিএম 2 রিং এটি পিক নয়, যুক্তিযুক্ত হবে। টেলর সিরিজটি সত্যই ক্রুডেস্ট বিকল্প।
ব্যবহারকারী 1997744

উত্তর:


64

অপারেশন ফ্ল্যাশপয়েন্ট স্ক্রিপ্টিং ভাষা, 165 157 বাইট

F={x=_this select 0;n=_this select 1;i=0;r=0;while{i<n*2}do{r=r+x^i/(i call{c=_this;j=c-1;while{j>0}do{c=c*j;j=j-1};if(c<1)then{c=1};c})*(-1)^(i/2);i=i+2};r}

সাথে কল করুন:

hint format["%1\n%2\n%3\n%4\n%5\n%6\n%7",
    [0.0, 1] call f,
    [0.5, 1] call f,
    [0.5, 2] call f,
    [0.5, 4] call f,
    [0.5, 9] call f,
    [2.0, 2] call f,
    [2.0, 5] call f]

আউটপুট:

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

ইনপুট এবং আউটপুটটি ভাসমান-পয়েন্টের মান হওয়া উচিত, কিছু স্ট্যান্ডার্ড রাউন্ডিং রুল সহ একক-নির্ভুলতা আইইইই ফ্লোটিং পয়েন্ট সংখ্যা ব্যবহার করে সূত্র গণনা করার মতো কমপক্ষে নির্ভুল।

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

উদাহরণস্বরূপ, a=1.00001;b=1.000011;hint format["%1\n%2\n%3", a, b, a==b]এটি আউটপুট দেবে:

1.00001
1.00001
false

সুতরাং পরিষ্কারভাবে সংখ্যার প্রকৃত নির্ভুলতা মুদ্রিত নির্ভুলতার চেয়ে বেশি।



16
@orlp কেন নয়?
স্টেডিবক্স

3
@ অরલ્પ আমি মনে করি যে আরও উপযুক্ত প্রশ্ন জিজ্ঞাসা করা হ'ল: অপারেশন ফ্ল্যাশপয়েন্ট স্ক্রিপ্টিং ভাষা কেন আর্নল্ডসির রূপ নয় ?
সিলিংক্যাট

2
হুমমম ... আপনি প্রদত্ত কম্পাসের দিকের [এক্স] প্রদত্ত কয়েকটি রাউন্ডের শুটিং করে ইনপুটটি প্রবেশ করছেন? 😍 অপারেশন ফ্ল্যাশপয়েন্ট!
মরমেগিল

14
@ মরমেগিল ভাল, সাধারণত না, তবে কোডের এই টুকরো দিয়ে এটি করা যেতে পারে: dir=-1;num=1;player addEventHandler ["fired", {_dir=getdir (nearestObject [_this select 0, _this select 4]);if (dir < 0) then {dir = _dir} else {if (abs(dir - _dir) < 5) then {num = num + 1} else {hint format["%1", [dir*(pi/180), num] call F];dir=-1;num=1}}}]- কিছু দিকের দিকে গুলি করা কাউন্টারকে বাড়িয়ে দেয় এবং তারপরে অন্য কোনও দিকে শ্যুটিং করে পূর্ব দিক এবং সেই দিকের শটগুলির সংখ্যা সহ কোসাইন ফাংশনকে ডাকে।
স্টেডিবক্স

13

05 এ বি 1 ই , 14 11 বাইট

FIn(NmN·!/O

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

ব্যাখ্যা

F                # for N in [0 ... n] do
 In              # push (x^2)
   (             # negate
    Nm           # raise to the Nth power
      N·!        # push (2*N)!
         /       # divide
          O      # sum

@ জেমসহোল্ডারনেস: হ্যাঁ, তখন থেকেই ভাষাটি বেশ বড় বড় ব্যবস্থার মধ্য দিয়ে গেছে। একটি অদ্ভুত বাগটি দেখে মনে হয়েছে যে এটি ক্ষতিগ্রস্থ হয়েছে ²তবে এটি পরিবর্তে প্রতিস্থাপন করা যেতে পারে I
Emigna

10

এমএটিএল , 14 বাইট

U_iqE:2ep/YpsQ

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

উদাহরণ সহ ব্যাখ্যা

সমস্ত সংখ্যার দ্বিগুণ নির্ভুলতা রয়েছে (এটি ডিফল্ট)।

ইনপুট বিবেচনা করুন x = 2.0, n = 5

U_     % Implicitly input x. Square and negate
       % STACK: -4
iqE    % Input n. Subtract 1, multiply by 2
       % STACK: -4, 8
:      % Range
       % STACK: -4, [1 2 3 4 5 6 7 8]
2e     % Reshape into a 2-row matrix
       % STACK: -4, [1 3 5 7;
       %             2 4 6 8]
p      % Product of each column
       % STACK: -4, [2 12 30 56]
/      % Divide, element-wise
       % STACK: [-2 -0.333333333333333 -0.133333333333333 -0.0714285714285714]
Yp     % Cumulative product of array
       % STACK: [-2 0.666666666666667 -0.0888888888888889 0.00634920634920635]
s      % Sum of array
       % STACK: -1.41587301587302
Q      % Add 1. Implicitly display
       % STACK: -0.41587301587302

10

গণিত, 49 41 39 31 বাইট

Sum[(-#^2)^k/(2k)!,{k,0,#2-1}]&

পুরানো, আরও "মজাদার" সংস্করণ: (39 বাইট)

Normal@Series[Cos@k,{k,0,2#2-2}]/.k->#&

@ পাভেলকে 10 বাইট সংরক্ষণ এবং 8 গ্রেগ মার্টিনকে ধন্যবাদ!


9
ম্যাথামেটিকার Seriesসামর্থ্য সত্যই দুর্দান্ত এবং মজাদার হলেও , এটি বাই-হাতে বাস্তবায়নটি Sum[(-#^2)^k/(2k)!,{k,0,#2-1}]&এখানে সংক্ষিপ্ত out
গ্রেগ মার্টিন

9

জেলি , 12 11 বাইট

ḶḤµ⁹*÷!_2/S

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

কিভাবে?

ḶḤµ⁹*÷!_2/S - Main link: n, x           e.g. 5, 2.0
Ḷ           - lowered range(n)              [0,1,2,3,4]
 Ḥ          - double (vectorises)           [0,2,4,6,8]
  µ         - monadic chain separation (call that i)
   ⁹        - link's right argument         2.0
    *       - exponentiate(i) (vectorises)  [1.0,4.0,16.0,64.0,256.0]
      !     - factorial(i) (vectorises)     [1,  2,  24,  720, 40320]
     ÷      - divide (vectorises)           [1.0,2.0,0.6666666666666666,0.08888888888888889,0.006349206349206349]
        2/  - pairwise reduce by:
       _    -     subtraction               [-1.0,0.5777777777777777,0.006349206349206349]
         S  - sum                           -0.41587301587301617

8

জেলি, 22 বাইট

-*ð×ø⁹*⁸²ð÷ø⁸Ḥ!
⁸R’Ç€S

এটি একটি সম্পূর্ণ প্রোগ্রাম যা প্রথম তর্ক হিসাবে এন এবং দ্বিতীয় হিসাবে এক্স নেয় x

ব্যাখ্যা:

              Creates a function to compute each term in the series. 
Its argument we will call k, eg k=3 computes 3rd term. Take x=2 for example.
-*           Computes (-1)^k. Eg -1
ð×ø        Multiplies by the quantity of
⁹             x.  
*             to the power of
⁸             k
²             ...squared. Eg -1 × (2³)² 
ð÷ø        divides by the quantity of
⁸              k
Ḥ             doubled
!               ...factorial. Eg -1 × (2³)²/(6!).


                Main link, first argument n and second argument n. Eg n=4, x=2.
⁸R            Creates range(n). Eg [1,2,3,4]
’                Decrements each element. Eg [0,1,2,3]
Ç€            Maps the above function over each element. Eg [1,-2,0.666,-0.0889]
S               Sum all all of the elements.  Eg -0.422.

7
পিপিসিজিতে আপনাকে স্বাগতম!
মার্টিন এন্ডার

6

পাইথন, 54 বাইট

f=lambda x,n,t=1,p=1:n and t+f(x,n-1,-t*x*x/p/-~p,p+2)

পাইথন 2 ব্যবহার করে, এক্সটি একটি পূর্ণসংখ্যা হিসাবে নয়, ভাসা হিসাবে পাস করার বিষয়ে নিশ্চিত হন, তবে আমার বোধগম্য যে আপনি পাইথন 3 ব্যবহার করছেন তা বিবেচ্য নয়।


5

টিআই-বেসিক, 41 40 বাইট

Prompt X,N
sum(seq((-(X+1E-49)2)^Q/((2Q)!),Q,0,N-1
1E-49 কোণে যুক্ত করা হয়েছে কারণ টিআই-বেসিক 0 ^ 0 এর জন্য একটি ত্রুটি ছুড়ে ফেলেছে, এটি ত্রুটি সৃষ্টি না করার পক্ষে যথেষ্ট বড়, এবং উত্তরটি পরিবর্তন করার পক্ষে এটি যথেষ্ট বড় নয়।


4

সি, 96 বাইট

পুনরাবৃত্ত লাইভ

f(n){return n?n*f(n-1):1;}float c(n,x)float x;{return n?c(n-1,x)+pow(-1,n)*pow(x,2*n)/f(2*n):1;}

বিশদ

f(n) // factorial(n)
{
    return n ?   // n != 0 ?
        n*f(n-1) // n! = n * (n-1)!
    : 1;         // 0! = 1
}

float c(n,x)float x; // cos(x) with n+1 terms
{
    return n ?        // n != 0 ?
        c(n-1, x)     // cos(x) (n-1)th term
        + pow(-1, n)  // + (-1)^n
        * pow(x, 2*n) // * x^(2n)
        / f(2 * n)    // / (2n)!
    : 1;              // cos(x) at n=0
}

প্রগ্রেসিভ রিকার্সিভ, 133 বাইট লাইভ

#define F float
#define c(x,n) 1+g(1,n,x,1,1,1)
F g(F i,F n,F x,F s,F p,F f){s=-s;p*=x*x;f*=i;return i<n?g(i+1,n,x,s,p,f)+s/2*p/f:0;}

বিশদ

#define F float // shorthand float

#define c(x,n) 1+g(1,n,x,1,1,1) // macro function

F g(F i,F n,F x,F s,F p,F f)
{
    s = -s;   // (-1)^n = (-1) * (-1)^(n-1)
    p *= x*x; // x^(2n) =  x^2 * x^(2(n-1))
    f *= i;   //    2n! =    2 * (1*2*..*n)

    return i < n ?       // i = 0 .. n-1
        g(i+1,n,x,s,p,f) // next term
        + s / 2 * p / f  // s*p/2f = s/2*p/f
        : 0;             // don't compute nth term
}

96 বি সংস্করণ c(0.5, 80)=> নাএন , উপচে f(80)=0
পড়ার

@ l4m2 রিকার্সিভ ফাংশনগুলি এখানে গল্ফিংয়ের উদ্দেশ্যে রয়েছে তবে কলটি সংখ্যাটি কল-স্ট্যাকের সীমা ছাড়িয়ে যাওয়ার কারণে তারা সহজেই উপচে পড়তে পারে এবং উচ্চতর সীমাতেও এটি সম্পদের অপচয় নয়, উপরের সমাধানের চেষ্টা করার জন্য ছোট সংখ্যা
খালেদ.কে

1
সমস্যাটি সরাসরি বলুন n<100যাতে আপনি কমপক্ষে পরিসীমাটিতে না যান। ওভারফ্লো স্ট্যাক নয়
l4m2

যদি সমস্যাটি বলে n<100এবং আপনি O(2^n)সমাধানটি ব্যবহার করেন তবে আমার ধারণা এটি ঠিক আছে, যতক্ষণ না শেষ পর্যন্ত ফলাফলটি পুনরুদ্ধার করে
l4m2

1
এফওয়াইআই, এনএএন ফলাফল পুনরাবৃত্তির সাথে কিছুই করতে পারে নি - এটি ফ্যাক্টরিয়াল গণনার একটি উপচে পড়েছে যা পূর্ণসংখ্যা ব্যবহার করে যখন এটি ভাসমান ব্যবহার করা উচিত (198! কখনই কোনও ইনট্রে ফিট হবে না)।
জেমস হোল্ডারেন্স

4

জাভাস্ক্রিপ্ট (ES6), 46 বাইট

f=
x=>g=(n,t=1,p=0)=>n&&t+g(--n,-t*x*x/++p/++p,p)
<div oninput=o.textContent=f(x.value)(n.value)><input id=x><input type=number min=1 value=1 id=n><pre id=o>1

তরকারিযুক্ত ইনপুট নেয় (x) (এন)।


কেন এটি একটি স্নিপেট না?
অর্জুন

4

সি, 71 বাইট

হর্ণার স্কিম ব্যবহার করে

float f(n,x)float x;{float y;for(n+=n;n;)y=1-(y*x*x/n--)/n--;return y;}

অবরুদ্ধ সংস্করণ:

float f(n,x) float x;
{
  float y = 0.0;
  for(n = 2*n; n>0; n -= 2)
  {
    y = 1-y*x*x/n/(n-1);
  }
  return y;
}

কোন প্লাটফর্মে এই কাজ করে?
anatolyg

4

আর, 70 64 বাইট

function(x,n)sum(sapply(1:n-1,function(y)(-x^2)^y/gamma(2*y+1)))

(-x ^ 2) ^ y ট্রিক দিয়ে পিজ্জা প্যান্ট 184 এর উত্তরে 6 বাইট সংরক্ষণ করা হয়েছে

65 বাইট:

function(x,n)Reduce(function(a,b)a+(-x^2)^b/gamma(2*b+1),1:n-1,0)

এটি প্রায় নিষ্পাপ বাস্তবায়ন কিন্তু একটি সামান্য বিট গল্ফড; একটি বেনাম ফাংশন প্রদান করে যা নির্দিষ্ট এন এর সাথে টেলর সিরিজটি গণনা করে

  • একটি হ্রাস ব্যবহার করতে আরও একটি বাইট লাগে init0 হিসাবে সেট করতে হয়
  • gamma(n+1)পরিবর্তে ব্যবহার করেfactorial(n)
  • 1:n-1 সমতুল্য 0:(n-1)

3

ওকে , 38 বাইট

এই কাজ করে কিন্তু লাগে 39 বাইট কারণ এক 'হিসেবে লেখা যেতে হয়েছে /:(অন্তত kmac 2016.06.28 মধ্যে এটা আছে) পরিবর্তে।

{+/(y#1 -1)*{(*/y#x)%*/1+!y}.'x,'2*!y}

ব্যাখ্যা:

মাঝের বিট দিয়ে শুরু করা যাক। (*/y#x)এটি এক্সপেনশনেশন, এটি সমান x^y*/1+!yহবে y!, বা yঘটনাগত। %বিভাজন। সুতরাং মাঝখানে ফাংশন হয় middle(x,y) = (x^y)/(y!)

এখন ডানদিকে বিট, যা উপরে ফাংশন প্রয়োগ করা হয়। 2*!yহয় {0, 2, 4, ..., 2*(y-1)}x,'prepends xযে তালিকায় প্রতিটি আইটেম, এটা পরিণত {(x, 0), (x, 2), (x, 4), ..., (x, 2*(y-1))}.'তারপর প্রযোজ্য middle(সংখ্যার যে যুগল থেকে mapমূলত)।

অবশেষে, (y#1 -1)*ফলাফলটিকে 1 বা -1 (বিকল্প) দ্বারা গুণিত +/করে যোগফলটি গ্রহণ করে।


3

হাস্কেল, 71 বাইট

f x n=sum$map(\i->(-1)^i*x^(2*i)/fromIntegral(product[1..2*i]))[0..n-1]

এটি একটি খুব বিরক্তিকর উত্তর যা ডিকাইফার করা খুব কঠিন নয়। fromIntegralসত্যিই কামড়ায়, যদিও। ( /অপারেটরটিকে হাস্কেলতে একই সংখ্যার ধরণের অপারেন্ডগুলি প্রয়োজন এবং সংখ্যার ধরণের মধ্যে জোর দেওয়া কোনও শব্দযুক্ত ফাংশন ছাড়াই অনুমোদিত নয়।)


1
একটি তালিকা বোধগম্যতা আপনাকে কয়েকটি কামড় বাঁচাতে পারে:f x n=sum[(-1)^i*x^(2*i)/fromIntegral(product[1..2*i])|i<-[0..n-1]]
জুলিয়ান ওল্ফ

1
বিশেষত পিপিসিজি এবং হাস্কেল গল্ফিংয়ে আপনাকে স্বাগতম!
লাইকনি

3

জেলি , 12 বাইট

²N*Ḷ}©÷®Ḥ!¤S

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

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

²N*Ḷ}©÷®Ḥ!¤S  Main link. Left argument: x. Right argument: n

²             Square; yield x².
 N            Negate; yield -x².
     ©         Call the link to the left and copy the result to the register.
   Ḷ}          Call unlength on the right argument, yielding [0, 1, ..., n-1].
  *           Yield [1, -x², ..., (-x²)**(n-1)].
          ¤   Combine the three links to the left into a niladic chain.
       ®        Yield the value in the register, [0, 1, ..., n-1].
        Ḥ       Unhalve; yield [0, 2, ..., 2n-2].
         !      Factorial; yield [0!, 2!, ..., (2n-2)!].
      ÷         Division; yield [1/0!, -x²/2!, ..., (-x²)**(n-1)/(2n-2)!].
           S  Take the sum.


3

হাস্কেল , 61 বাইট

x#n=sum[(-1*x^2)^i/fromIntegral(product[1..2*i])|i<-[0..n-1]]

এটি অন্য হাস্কেলের সমাধানের থেকে পৃথক উত্তরের ওয়ারেন্ট দেওয়ার পক্ষে যথেষ্ট আলাদা বলে মনে হয়েছিল। বাস্তবায়নটি বেশ স্ব-ব্যাখ্যামূলক হওয়া উচিত — কোসাইনটি সংখ্যার সাথে সংখ্যার সংখ্যাটি x#nকোথায় xএবং nএটি আংশিক যোগফলের ক্রম হিসাবে নেওয়া উচিত।


আপনি সরিয়ে বেশ কিছু বাইট সংরক্ষণ করতে পারবেন fromIntegralএবং ব্যবহার **স্থানে ^যেমন এই
বি মেহতা

x#n=sum[(-x*x)**i/product[1..2*i]|i<-[0..n-1]]আরও 3 বাইট সঞ্চয়
লিন


3

জে, 26 24 বাইট

+/@:(!@]%~^*_1^2%~])2*i.

-২ বাইটস @ কোলকে ধন্যবাদ

আমি মূলত যোগ এবং বিয়োগের মধ্যে বিকল্প হিসাবে একটি চক্রীয় জেরুন্ড ব্যবহার করার পরিকল্পনা করেছি, তবে এটি কাজ করতে পারিনি।

ব্যাখ্যা:

                    2*i.     | Integers from 0 to 2(n-1)
    (              )         | Dyadic train:
            _1^-:@]          | -1 to the power of the left argument
          ^*                 | Times left arg to the power of right arg
     !@]%~                   | Divided by the factorial of the right arg
+/@:                         | Sum

1
24 বাইট: +/@:(!@]%~^*_1^2%~])2*i.একটি চক্রাকার জরিমানা তদন্ত করবে: এটি সম্ভবত ব্যর্থ হয়েছে যেহেতু জে /ডান থেকে বামের মূল্যায়ন করে যাতে আপনার ব্যবহারের প্রয়োজন হয় |.(অথবা সম্ভবত আপনি এটির জন্য অ্যাকাউন্ট করেছেন এবং এখনও অসুবিধা হয়েছে)।
কোলে


2

প্রতীক ম্যাথ টুলবক্স, 57 বাইট সহ ম্যাটল্যাব

@(x,n)eval(subs(taylor(sym('cos(x)'),'Order',2*n),'x',x))

এই যে সঙ্গে একটি বেনামী ফাংশন লাগে সংজ্ঞায়িত doubleইনপুট x, nএবং যেমন ফলাফলের আউটপুট double

উদাহরণ (R2015b তে পরীক্ষা করা):

>> @(x,n)eval(subs(taylor(sym('cos(x)'),'Order',2*n),'x',x))
ans = 
    @(x,n)eval(subs(taylor(sym('cos(x)'),'Order',2*n),'x',x))
>> f = ans; format long; f(0,1), f(0.5,1), f(0.5,2), f(0.5,4), f(0.5,9), f(2,2), f(2,5)
ans =
     1
ans =
     1
ans =
   0.875000000000000
ans =
   0.877582465277778
ans =
   0.877582561890373
ans =
    -1
ans =
  -0.415873015873016

2

জাভাস্ক্রিপ্ট ES7 60 বাইট

x=>a=n=>--n?(-1)**n*x**(2*n)/(f=m=>m?m*f(m-1):1)(2*n)+a(n):1


x=>a=n=>                                                         // Curry-d function, it basically returns another function
        --n?                                              :1  // subtract one from n. If n - 1 is 0, return 1
            (-1)**n*                                             // This generates the sign of the number
                    x**(2*n)/                                    // This creates the part before the division, basicaly x^2n
                             (f=m=>m?m*f(m-1):1)(2*n)            // This creates a recursive factorial function and calls it with 2n
                                                     +a(n)    // Recursively call the function. This adds the elements of the taylor series together

এটি ব্যবহার করতে:

F12 টিপুন, ফাংশনটি টাইপ করুন এবং তারপরে করুন

c(x)(n)

2

সি 144 130 বাইট

F(m){int u=1;while(m)u*=m--;return u;}float f(float x,n){float s;for(int i=1;i<n;i++)s+=pow(-1,i)*pow(x,2*i)/(F(2*i));return 1+s;}

অবরুদ্ধ সংস্করণ:

//Function to calculate factorial
int F(int m)
{
  int u=1;

  while(m>1)
   u*=m--; 

  return u;
}

//actual function called in main function   
float f(float x, int n)
{

  float s=0.0;

  for(int i=1;i<=n-1;i++)
     s+=pow(-1,i)*pow(x,2*i)/(F(2*i)); 

  return 1+s;
 }

কিছু বাইট সংরক্ষণ করার জন্য কেভিন ধন্যবাদ!


ফাংশন সংজ্ঞাগুলি ম্যাসেজ করে আপনি কয়েকটি বাইট সংরক্ষণ করতে পারেন:F(m){...}f(x,n)float x;{...}
কেভিন

যেহেতু তোমার দর্শন লগ করা * 1 == U, আপনি লুপের প্রথম ফাংশনে করতে পারেন পারেন while(m)u*=m--বা u=m;while(--m)u*=m(একই দৈর্ঘ্য)
কেভিন

i<=n-1হিসাবে একইi<n
কেভিন

@ কেভিন ধন্যবাদ, আপনি একেবারে ঠিক বলেছেন, কিছুক্ষণের মধ্যে গল্ফ লাগেনি। :)
আবেল টম



2

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

ü┘·.ⁿYeò≥Vîû

এটি চালান এবং এটি ডিবাগ করুন

আনপ্যাকড, নিরবচ্ছিন্ন এবং মন্তব্য করা হয়েছে, এটি দেখতে এটির মতো দেখাচ্ছে।

            Input is `x n`
Z           Push a zero underneath the top.  The stack is now `x 0 n` 
D           Run the rest of the program n times.
  xJNi|*    (-x*x)^i where i is the iteration index
  iH|F/     divide that by factorial(2i)
  +         add to the running total so far
            final result is implicitly printed

এটি চালান



1

পিএইচপি, 76 বাইট

for($f=1;$i<$argv[2]*2;$f*=++$i)$i&1?:$s+=(-1)**$k++*$argv[1]**$i/$f;echo$s;

কমান্ড লাইন আর্গুমেন্ট গ্রহণ করে Xএবং Nথেকে; সাথে চালানো -r

লুপ $iথেকে 0থেকে N*2-1, হোল্ড fac($i)মধ্যে $f; যদি $iসম হয় তবে যোগফলটি যোগ করুন $s। মুদ্রণের যোগফল


আমি আশা করি আমার জটিল সংখ্যা ছিল ( M_Iকাল্পনিক ইউনিট সহ);
আমি কেবল $fwith M_I*++$iবাইট দিয়ে গুন করব এবং সংরক্ষণ করব।

ম্যাথামেটিকা ​​সেটা করতে পারে। তবে ম্যাথামেটিকাকে করতে হবে না।

আমি এবং এর পরিবর্তে দুটি বাইট সংরক্ষণ করতে পারি ; তবে কোসাইন ফাংশন তৈরি করতে কোসাইন বিল্টিন ব্যবহার করা কিছুটা বিশ্রী মনে হবে।cos(M_PI*$i/2)$i&1?:(-1)**$k++


1

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

g(a,n)==eval(taylor(cos(x)),a).(2*n)

অসীম তৈরি করুন (যার অর্থ সীমাবদ্ধ তবে পিসির পর্যাপ্ত মেমরি থাকলে 2 * n উপাদানের তালিকা তৈরি করতে বলতে পারেন) কোষের জন্য টেলর সিরিজের আংশিক অঙ্কের তালিকা (এক্স) 'এ' তে গণনা করুন, "এভাল ( টেলর (কোসাইন্ (x) এর), ক) "; "। (2 * n)" এ তালিকার 2 * n উপাদান পায়। পরীক্ষার কেস:

(47) -> g(0,1)
   (47)  1
                                                 Type: Expression Integer
(48) -> g(0.5,1)
   (48)  1.0
                                                   Type: Expression Float
(49) -> g(0.5,2)
   (49)  0.875
                                                   Type: Expression Float
(50) -> g(0.5,4)
   (50)  0.8775824652 7777777778
                                                   Type: Expression Float
(51) -> g(0.5,9)
   (51)  0.8775825618 9037271611
                                                   Type: Expression Float
(52) -> g(2.0,5)
   (52)  - 0.4158730158 7301587302
                                                   Type: Expression Float
(53) -> g(2.0,800)
   (53)  - 0.4161468365 471423870

1

জে , 17 বাইট

4 :'2&o.T.(+:y)x'

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

একটি অন্তর্নির্মিত ব্যবহার করে , যা আমি ধরে নিলাম ঠিক আছে।

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


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