एक जटिल शक्ति की गणना करें


10

रनडाउन

किसी भी इनपुट x और y को देखते हुए , एक जटिल ऑपरेशन करें, और एक संबंधित परिणाम प्रिंट करें।

आपका कार्यक्रम कैसे काम करना चाहिए

  1. प्रपत्र x = y में इनपुट x और y को देखते हुए , z i-z ढूंढें

  2. अगर z i-z का पूर्ण वास्तविक मूल्य पूर्ण काल्पनिक भाग से बड़ा है, तो वास्तविक भाग को प्रिंट करें; चारों ओर दूसरे रास्ते के लिए इसके विपरीत। यदि दोनों मान समान हैं, तो मानों में से एक को मुद्रित करें।

उदाहरण

x: 2
y: 0

इसलिए:

z = 2
z^(i-z) ~= 0.192309 + 0.159740i

चूँकि वास्तविक भाग का काल्पनिक भाग की तुलना में बड़ा पूर्ण मान होता है, इसलिए प्रोग्राम वापस आ जाता है

0.192309

और ज्यादा उदाहरण

z = 1+i >> 0.5
z = i >> 1
z = 0.5 >> 1.08787
z = -2+8i >> 2.22964E7
z = -10i >> 3.13112E7

10
प्रो-टिप: बोनस से छुटकारा!
स्टीवी ग्रिफिन


7
एक जटिल संख्या को एक जटिल शक्ति तक उठाना बंद है और उपयोग की जाने वाली शाखा कटौती पर निर्भर करता है। क्या आप इसे निर्दिष्ट कर सकते हैं? हालांकि मुझे लगता है कि हर कोई सिर्फ अंतर्निहित गणित संचालन का उपयोग कर रहा है और वे सभी शायद एक ही सम्मेलन का उपयोग करते हैं।
xnor

2
क्या "बड़ा" का अर्थ है अधिकतम मान लेने के बजाय सबसे बड़े निरपेक्ष मूल्य के साथ मूल्य को चुनना (जो कि अधिकांश ने मान लिया है)? -2+iउस ( z^(i-z)=3-4iइसलिए 3>-4बनाम abs(-4)>abs(3)) के लिए एक परीक्षण मामले का इस्तेमाल किया जा सकता है ।
जोनाथन एलन

5
"पूर्ण मान" स्पष्टीकरण / परिवर्तन ने अधिकांश उत्तरों को अमान्य कर दिया है।
xnor

जवाबों:


7

जेली , 8 11 बाइट्स

नियम बदलने के साथ जवाब अपडेट करने के लिए धन्यवाद जॉनथन एलन।

ı_*@µĊ,ḞAÞṪ

इसे ऑनलाइन आज़माएं!

ı_*@        z^(i-z)
    µ       new monadic link
     Ċ,Ḟ    pair real and imaginary parts
        AÞṪ sort by absolute value and take last value

इसे बनाएं ı_*@µĊ,ḞAÞṪऔर आपके पास एकमात्र वैध प्रविष्टि हो सकती है (पूर्ण शर्तों में अधिकतम मूल्य की आवश्यकता के लिए परिवर्तन को देखते हुए, जैसे कि, उदाहरण के लिए, बजाय -2+1jरिटर्न )। -4.03.0
जोनाथन एलन

6

पायथन 2, 45 बाइट्स

def f(z):z=z**(1j-z);print max(z.real,z.imag)

इसे ऑनलाइन आज़माएं - सभी परीक्षण मामले

प्रोग्रामिंग भाषाओं का उपयोग अक्सर jइसके बजाय किया जाता है i। यही हाल पायथन में है। इस बारे में अधिक जानकारी के लिए यह SO प्रश्न देखें ।


5

गणितज्ञ, 21 22 बाइट्स

संपादित करें: 3 btyes को बचाने के लिए JungHwan Min का धन्यवाद

Max@ReIm[#^(I-#)]&

शुद्ध फ़ंक्शन जो एक तर्क के रूप में एक जटिल संख्या की अपेक्षा करता है। यदि एक सटीक संख्या पास हो जाती है, तो एक सटीक संख्या वापस आ जाएगी (जैसे 1/2देता है Sqrt[2] Cos[Log[2]])। समस्या समाधान तब संपादित किया गया था जब मैंने अपना समाधान पोस्ट किया था यह निर्दिष्ट करने के लिए कि निरपेक्ष मूल्य का उपयोग किया जाना चाहिए। सबसे अच्छा मैं के लिए वह यह है कि साथ आने कर सकते हैं MaximalBy[ReIm[#^(I-#)],Abs][[1]]&या Last@MaximalBy[Abs]@ReIm[#^(I-#)]&, दोनों 34बाइट्स।


1
Maxसिर होने की जरूरत नहीं है। यह अधिकतम मान देता है कि इनपुट कितना भी गहरा क्यों न हो List(जैसे Max[1, {2, {3}}]रिटर्न 3)। इसके अलावा, प्रश्न केवल यह निर्दिष्ट करता है कि आप मूल्यों को प्रिंट करते हैं, इसलिए मुझे नहीं लगता कि आपको इसकी आवश्यकता होगी N: Max@ReIm[#^(I-#)]&काम करेगा।
जुंगवान मिन

3

ऑक्टेव , 29 बाइट्स

@(z)max(real(z^(i-z)./[1 i]))

यह एक अनाम फ़ंक्शन को परिभाषित करता है। यह MATLAB में भी काम करता है।

इसे ऑनलाइन आज़माएं!

व्याख्या

तत्व-वार विभाजन ( ./) z^(i-z)सरणी द्वारा संख्या [1 i]और वास्तविक भाग लेने से वास्तविक और काल्पनिक भागों के साथ एक सरणी देता है z^(i-z)


3

MATL , 10 बाइट्स

Jy-^&ZjhX>

इसे ऑनलाइन आज़माएं! या सभी परीक्षण मामलों को सत्यापित करें

व्याख्या

-2+8iउदाहरण के रूप में इनपुट पर विचार करें ।

J     % Push i (imaginary unit)
      % STACK: i
y     % Implicit input. Duplicate from below
      % STACK: -2+8i, i, -2+8i
-     % Subtract
      % STACK: -2+8i, 2-7i
^     % Power
      % STACK: 3168271.58+22296434.47i
&Zj   % Real and imaginary parts
      % STACK: 3168271.58, 22296434.47
h     % Concatenate
      % STACK: [3168271.58 22296434.47]
X>    % Maximum. Implicitly display
      % STACK: 22296434.47

2

टीआई-बेसिक, 40 , 32 , 31 29 बाइट्स

@Conor O'Brien को एक बाइट धन्यवाद दिया

Z^(i-Z→A                   #Perform operation, store as A, 8 bytes
:real(A)>imag(A            #Test if real part is greater than imaginary, 9 bytes
:Ansreal(A)+imag(Anot(Ans  #Determine output and print, 12 bytes

Zचर पर एक जटिल संख्या के रूप में इनपुट लेता है ।

TI-BASIC अपनी एन्कोडिंग का उपयोग करता है, आप इसे यहाँ पा सकते हैं ।



1

पर्ल 6 , 24 बाइट्स

{($_**(i-$_)).reals.max}

$_संभवतः जटिल तर्क है; $_ ** (i - $_)गणना करने के लिए अभिव्यक्ति है; .realsएक ऐसी Complexविधि है जो वास्तविक और काल्पनिक भागों की सूची लौटाती है; और अंत .maxमें दोनों में से बड़ा लौटाता है।


1

C (GCC), 93 79 + 4 ( -lm) = 97 83 बाइट्स

सहेजे गए 14 बाइट @ceilingcat की बदौलत!

float f(_Complex z){z=cpow(z,csqrt(-1)-z);return cimag(z)>creal(z)?cimag(z):z;}

हेडर complex.hको शामिल करना उस longer \ _ (_) _ / that से अधिक लंबा है

इसे ऑनलाइन आज़माएं!


क्यों +4 बाइट्स? मैं 3 ,, और -, गिनता हूं । lm
R

@Riker सामान्य संकलन है gcc file.c -o exeअंतरिक्ष,:, तो यह झंडा 4 बाइट कहते हैं -, l, और m। (कम से कम यह है कि मैं इसे कैसे देखता हूं जब इसे संकलित किया जाता है।)
betseg

@ceilingcat ओह नहीं जानता था कि यह संभव था। धन्यवाद!
betseg



1

टीआई-बेसिक, 19 16 बाइट्स

Ans^(i-Ans
max(real(Ans),imag(Ans

real(और imag(दो-बाइट टोकन हैं।

कार्यक्रम के नाम होने के साथ 5+3i:prgmNAME( 5+3iतर्कशील होने के नाते) चलाएं NAME


0

आर, 38 बाइट्स

pryr::f({z=z^(1i-z);max(Re(z),Im(z))})

अनाम फ़ंक्शन। एक (संभवतः) जटिल संख्या zलेता है, इसे निर्दिष्ट शक्ति पर ले जाता है, और फिर अल और कृषि भागों maxकी वापसी करता है ।ReIm


0

Axiom, 60 बाइट्स

f(z:Complex Float):Float==(y:=z^(%i-z);max(real(y),imag(y)))

परीक्षण कोड और परिणाम; मैं प्रश्न के अन्य उदाहरण के रूप में अनुसरण करता हूं ...

(28) -> [[k,f(k)] for k in [1+%i,%i,1,-2+8*%i,-10*%i]]
   (28)
   [[1.0 + %i,0.5], [%i,1.0], [1.0,1.0],
    [- 2.0 + 8.0 %i,22296434.4737098688 53],
    [- 10.0 %i,31311245.9804955291 66]]

0

सी # - 189 बाइट्स

double f(double x, double y){double r,t,m,c;r=Math.Sqrt(x*x+y*y);t=Math.Atan2(y,x);m=Math.Pow(r,-x)*Math.Exp(y*t-t);c=Math.Cos((1-y)*Math.Log(r)-t*x);return m*(2*c*c<1?Math.Sqrt(1-c*c):c);}

पठनीय:

double f(double x, double y){
double r, t, m, c;
r = Math.Sqrt(x * x + y * y);
t = Math.Atan2(y, x);
m = Math.Pow(r, -x) * Math.Exp(y * t - t);
c = Math.Cos((1 - y) * Math.Log(r) - t * x);
return m * (2 * c * c < 1 ? Math.Sqrt(1 - c * c) : c); }

स्पष्टीकरण: किसी भी कॉम्प्लेक्स पुस्तकालयों का उपयोग न करने का निर्णय लिया गया।

z=एक्स+मैंy=आरमैंटीzमैं-z=(आरमैंटी)(-एक्स+मैं(1-y))=आर-एक्सआरमैं(1-y)-एक्समैंटीटी(y-1)=आर-एक्सटी(y-1)मैं((1-y)ln(आर)-एक्सटी) (जैसा आरमैं=मैंln(आर))

इसके बराबर होने दें मैं कहाँ पे

=आर-एक्सटी(y-1)
=(1-y)ln(आर)-एक्सटी

फिर (zमैं-z)=क्योंकि तथा (zमैं-z)=पाप

अधिकतम निरपेक्ष मूल्य द्वारा निर्धारित किया जा सकता है क्योंकि तथा पाप शर्तें, इनमें समान होने के साथ 12 (इसलिए परीक्षण 2सी2<1)।

जैसा कि उल्लेख किया गया है, एक जटिल घातांक तक बढ़ाना एक विशेष शाखा कटौती (जैसे) चुनने पर निर्भर है z=1 हो सकता है मैंπ या 3मैंπ - इसे बढ़ाकर मैं का एक वास्तविक हिस्सा देता है -π या -3π क्रमशः), हालांकि, मैंने अभी के सम्मेलन का उपयोग किया है टी[0,2π) प्रश्न के अनुसार।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.