আর-তে ম্যাট্রিক্সের বিপরীত


90

আমি ভাবছিলাম যে কোনও ম্যাট্রিক্সের বিপরীত গণনা করার জন্য আপনার প্রস্তাবিত উপায় কী?

আমি যেভাবে খুঁজে পেয়েছি তা সন্তোষজনক বলে মনে হচ্ছে না। উদাহরণ স্বরূপ,

> c=rbind(c(1, -1/4), c(-1/4, 1))  
> c  
      [,1]  [,2]  
[1,]  1.00 -0.25  
[2,] -0.25  1.00  
> inv(c)  
Error: could not find function "inv"  
> solve(c)    
          [,1]      [,2]  
[1,] 1.0666667 0.2666667  
[2,] 0.2666667 1.0666667  
> solve(c)*c  
            [,1]        [,2]  
[1,]  1.06666667 -0.06666667  
[2,] -0.06666667  1.06666667  
> qr.solve(c)*c  
            [,1]        [,2]  
[1,]  1.06666667 -0.06666667  
[2,] -0.06666667  1.06666667  

ধন্যবাদ!


9
একটি সাধারণ পরামর্শ: বস্তুগুলি (ম্যাট্রিকের মতো) এমন একটি নাম দেওয়া থেকে বিরত করুন যা ইতিমধ্যে ব্যবহৃত (এখানে c)।
কাসওয়েড

উত্তর:


153

solve(c)সঠিক বিপরীত দেয়। আপনার কোড সহ সমস্যাটি হ'ল আপনি ম্যাট্রিক্স গুণনের জন্য অপারেটরটি ব্যবহার করছেন। solve(c) %*% cআর-তে ম্যাট্রিক্সের গুণন করতে আপনার ব্যবহার করা উচিত ।

আপনি যখন প্রার্থনা করেন তখন উপাদান মৌলিক গুণ দ্বারা উপাদান সম্পাদন করে solve(c) * c


22

আপনি MASS প্যাকেজে জিনভ () (মুর-পেনরোজ জেনারেলাইজড ইনভার্স) ফাংশনটি ব্যবহার করতে পারেন


আপনি কীভাবে এটি মিস করতে পারবেন তা নিশ্চিত হননি - পি দেখুন। প্যাকেজ জন্য ম্যানুয়াল 60 উপরে আমার উত্তরে উল্লেখ করা
ডগ

আপনার উত্তর করার জন্য আপনাকে ধন্যবাদ। ফিশারেম প্যাকেজ থেকে ফেম ফেম () চালানোর সময় আমি এই ত্রুটিটি পেয়েছি। মাভেরিক্স ম্যাক ওএস এক্স চালাচ্ছেন
ভ্লাদিস্লাভস ডভগ্লেক্লেস

9

মনে রাখবেন যে আপনি যদি গতির প্রতি যত্নশীল হন এবং এককথায় উদ্বিগ্ন হওয়ার দরকার না পড়েন তবে তার চেয়ে বেশি solve()পছন্দ করা উচিত ginv()কারণ এটি তত দ্রুত is

require(MASS)
mat <- matrix(rnorm(1e6),nrow=1e3,ncol=1e3)

t0 <- proc.time()
inv0 <- ginv(mat)
proc.time() - t0 

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