জ্যাকবীয় ম্যাট্রিক্স নির্মাণ করুন


10

অজানাগুলির ভেক্টর নিন এখানে চিত্র বর্ণনা লিখুনএবং কিছু জেনেরিক ডিফারেন্টেবল ফাংশন প্রয়োগ করুন এখানে চিত্র বর্ণনা লিখুনJacobian তারপর একটি ম্যাট্রিক্স দেওয়া হয় এখানে চিত্র বর্ণনা লিখুনযেমন যে:

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

উদাহরণস্বরূপ, ধরুন m=3এবং n=2। তারপরে (0-ভিত্তিক সূচক ব্যবহার করে)

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

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

জ্যাকবীয়ান fতখন

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

এই চ্যালেঞ্জের লক্ষ্য হ'ল এই জ্যাকবিয়ান ম্যাট্রিক্স মুদ্রণ করা।

ইনপুট

তোমার প্রোগ্রাম / ফাংশন ইনপুট দুই ধনাত্মক পূর্ণসংখ্যা হিসাবে গ্রহণ করা উচিত mএবং nযার মধ্যে উপাদান সংখ্যা প্রতিনিধিত্ব fএবংu যথাক্রমে। ইনপুটটি যে কোনও উত্স থেকে পছন্দসই (stdio, ফাংশন প্যারামিটার ইত্যাদি) থেকে আসতে পারে। আপনি যে আদেশটি পেয়েছেন তাতে আপনি আদেশটি নির্ধারণ করতে পারেন এবং এটি অবশ্যই আপনার উত্তরের কোনও ইনপুটের জন্য সামঞ্জস্যপূর্ণ হতে হবে (দয়া করে আপনার উত্তরে উল্লেখ করুন)।

আউটপুট

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

  1. তালিকাগুলির একটি তালিকা যেখানে বাইরের তালিকার প্রতিটি এন্ট্রি জ্যাকবীয়ের একটি সারির সাথে মিলে যায় এবং অভ্যন্তরীণ তালিকার প্রতিটি তালিকা জ্যাকবীয়ের একটি কলামের সাথে মিলে যায়।
  2. একটি স্ট্রিং বা পাঠ্য আউটপুট যেখানে প্রতিটি লাইনটি জ্যাকবীয়ানের একটি সারি এবং প্রতিটি লাইনে বিভাজক পৃথক এন্ট্রি জ্যাকোবিয়ানের একটি কলামের সাথে মিলে যায়।
  3. ম্যাট্রিক্সের কিছু গ্রাফিকাল / ভিজ্যুয়াল উপস্থাপনা। উদাহরণ: ম্যাথমেটিকা MatrixFormকমান্ডটি ব্যবহার করার সময় যা দেখায়
  4. কিছু অন্যান্য ঘন ম্যাট্রিক্স অবজেক্ট যেখানে প্রতিটি এন্ট্রি ইতিমধ্যে মেমরিতে সঞ্চিত এবং জিজ্ঞাসা করা যেতে পারে (যেমন আপনি কোনও জেনারেটর অবজেক্ট ব্যবহার করতে পারবেন না)। উদাহরণটি হ'ল ম্যাথামেটিকা ​​কীভাবে অভ্যন্তরীণভাবে কোনও ম্যাট্রিক্স অবজেক্টকে উপস্থাপন করে

উদাহরণ প্রবেশের ফর্ম্যাটগুলি:

  1. ফর্মটির একটি স্ট্রিং d f_i/d u_j, কোথায় iএবং jপূর্ণসংখ্যাগুলি। উদা: d f_1/d u_2। নোট মধ্যে এই যে স্থানগুলি dএবং f_1বাx_2 চ্ছিক। অতিরিক্তভাবে, আন্ডারস্কোরগুলিও optionচ্ছিক।
  2. ফর্মের একটি স্ট্রিং d f_i(u_1,...,u_n)/d u_jবা d f_i(u)/d u_j। এটি হ'ল ফাংশন উপাদানটির ইনপুট প্যারামিটারগুলি f_ialচ্ছিক এবং এটি স্পষ্টভাবে বানান বা কমপ্যাক্ট আকারে রেখে দেওয়া যেতে পারে।
  3. একটি ফর্ম্যাট গ্রাফিকাল আউটপুট। প্রাক্তন: আপনি যখন প্রকাশের মূল্যায়ন করেন তখন গণিতিকা কী প্রিন্ট করেD[f_1[u_,u_2,...,u_n],u_1]

আপনি কি জন্য শুরু সূচক চয়ন করতে পারেন uএবং fহয় (আপনার উত্তর উল্লেখ করুন)। আউটপুটটি কোনও সিঙ্ক পছন্দসই (স্টিডিও, রিটার্ন মান, আউটপুট প্যারামিটার ইত্যাদি) হতে পারে।

পরীক্ষার মামলা

নিম্নলিখিত পরীক্ষার মামলাগুলি কনভেনশনটি ব্যবহার করে m,n। সূচকগুলি 0-ভিত্তিক দেখানো হয়।

1,1
[[d f0/d u0]]

2,1
[[d f0/d u0],
 [d f1/d u0]]

2 2
[[d f0/d u0, d f0/d u1],
 [d f1/d u0, d f1/d u1]]

1,2
[[d f0/d u0, d f0/d u1]]

3,3
[[d f0/d u0, d f0/d u1, d f0/d u2],
 [d f1/d u0, d f1/d u1, d f1/d u2],
 [d f2/d u0, d f2/d u1, d f2/d u2]]

স্কোরিং

এটি কোড গল্ফ; বাইটস মধ্যে সংক্ষিপ্ত কোড। স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ। আপনার পছন্দসই কোনও বিল্ট-ইন ব্যবহার করার অনুমতি রয়েছে।

উত্তর:


4

পাইথন, 63 বাইট

lambda m,n:["df%d/du%%d "%i*n%tuple(range(n))for i in range(m)]

জন্য m=3,n=2, আউটপুট

['df0/du0 df0/du1 ', 'df1/du0 df1/du1 ', 'df2/du0 df2/du1 ']

স্ট্রিং বিন্যাসটি আরও স্পষ্টর চেয়ে 1 বাইট কম sh

lambda m,n:[["df%d/du"%i+`j`for j in range(n)]for i in range(m)]

3

আর, 93 78 বাইট

function(M,N){v=vector();for(i in 1:N){v=cbind(v,paste0("df",1:M,"/du",i))};v}

নম্বরটি 1-ভিত্তিক।

-15 বাইটস @ অ্যালেক্সা ধন্যবাদ। রিম্যাকস!


1
ফাংশনটির নামটি মুছে ফেলে আপনি কয়েকটি বাইট সংরক্ষণ করতে পারেন f=, এটি এখানে প্রচলিত অনুশীলন হিসাবে। আর একটি ফাংশনে মূল্যায়ন করা শেষ জিনিসটিও ফেরত দেয়, যাতে আপনি কেবল vপরিবর্তে ব্যবহার করতে পারেন return(v)
অ্যালেক্স এ।

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

@AlexA। খুব আকর্ষণীয় মন্তব্য, অনেক অনেক ধন্যবাদ!
ফ্রেডেরিক

আমার আনন্দ. :)
অ্যালেক্স এ।

3

ম্যাক্সিমা, 68 বাইট

এটা খুব খারাপ আমি ম্যাক্সিমাকে জানি না যেমন আমি আমার প্রিয় সি এবং মতলবকে জানি। তবে আমি তবুও চেষ্টা করব।

f(m,n):=(x:makelist(x[i],i,m),g:makelist(g[i](x),i,n),jacobian(g,x))

বেশিরভাগ ঝরঝরে গণিত উপস্থাপনার জন্য টেক্স এক্সকে ম্যাক্সিমা দোভাষী হিসাবে ব্যবহার করে উদাহরণ সেশন:

টেক্সম্যাক্সে ম্যাক্সিমা অধিবেশন

ম্যাক্সিমায়ার তালিকাগুলি করার জন্য আরও ভাল উপায়গুলি থাকতে পারে (আমি বিশেষত তালিকা চিহ্নিতকারীগুলি ছাড়াই ফাংশনগুলি উপস্থিত করতে চাই, []) তবে আমি ভাষাটি যথেষ্টভাবে জানি না।


1

রুবি, 53 বাইট

f0-ইনডেক্সড, u1-ইনডেক্সেড। এটি অনলাইন চেষ্টা করুন!

->m,n{m.times{|i|p (1..n).map{|j|"d f#{i}/d u#{j}"}}}

প্রতিটি সারি নীচে দেখানো হিসাবে অ্যারে উপস্থাপনা হিসাবে একটি লাইন দখল করে। যদি এটি অনুমানের অনুবর্তী না হয় তবে দয়া করে আমাকে জানান এবং আমি এটি ঠিক করব fix

["d f0/d u1", "d f0/d u2", "d f0/d u3"]
["d f1/d u1", "d f1/d u2", "d f1/d u3"]


0

জেলি, 18 বাইট

ps⁴’“ df“/du”ż$€€G

চেষ্টা কর!

প্রদত্ত (মি, এন) = (3, 2) , প্রিন্টস (স্পেস হিসাবে চিহ্নিত হিসাবে ·:)

·df0/du0·df0/du1
·df1/du0·df1/du1
·df2/du0·df2/du1

0

সি, 125 বাইট:

main(w,y,b,q){scanf("%d %d",&w,&y);for(b=0;b<w;b++){for(q=0;q<y;q++)printf("d f%d/du u%d%s",b,q,q<y-1?", ":"");printf("\n");}}

ইনপুটটিকে 2 স্পেস বিচ্ছিন্ন পূর্ণসংখ্যার হিসাবে গ্রহণ করে b yএবং জ্যাকবীয় ম্যাট্রিক্সকে yকমা দ্বারা পৃথক করা স্ট্রিংগুলিকে bলাইনে আউটপুট করে ।

এটি অনলাইন! (আইডিয়ন) বা টেস্ট স্যুট (আইডিয়ন)

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