Advertisement
epidzhx

poly_matlab

Mar 25th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.78 KB | None | 0 0
  1. function x = poly(arr1, arr2)
  2.     sum = add(arr1, arr2)
  3.     mul = multiplication(arr1, arr2)
  4.     [q, r] = division(arr1, arr2)
  5.     gcd = gcd_poly(arr1, arr2)
  6. end
  7.  
  8.  
  9. function ans = add(arr1, arr2)
  10.  
  11.     if (length(arr2) > length(arr1))
  12.         c = arr1;
  13.         arr1 = arr2;
  14.         arr2 = c;
  15.     end
  16.     ans = zeros(1, length(arr1));
  17.     n = length(arr1);
  18.     m = length(arr2);
  19.     for i=n:-1:1
  20.         if (m > 0)
  21.             ans(i) = arr1(i) + arr2(m);
  22.             m -= 1;
  23.         else
  24.             ans(i) = arr1(i);
  25.         end
  26.     end
  27. end
  28.  
  29.  
  30. function ans = multiplication(arr1, arr2)
  31.  
  32.     n = length(arr1) + length(arr2) - 1;
  33.     ans = zeros(1, n);
  34.  
  35.     for i=1:length(arr1)
  36.         pw1 = length(arr1) - i;
  37.         for j=1:length(arr2)
  38.             pw2 = length(arr2) - j;
  39.             ans(n - pw1 - pw2) += arr1(i) * arr2(j);
  40.         end
  41.     end
  42. end
  43.  
  44.  
  45. function [ans1, ans2] = division(arr1, arr2)
  46.    
  47.     ans1 = [];
  48.     while (length(arr1) >= length(arr2) && (arr1(1) != 0))
  49.  
  50.         d = arr1(1) / arr2(1);
  51.         ans1 = [ans1 d];
  52.         for i=1:length(arr2)
  53.             arr1(i) -= arr2(i) * d;
  54.         end
  55.  
  56.         t = length(arr1);
  57.         while (t > 1)
  58.             arr1(1) = [];
  59.         end
  60.     end
  61.     ans2 = arr1;
  62. end
  63.  
  64.  
  65. function ans = gcd_poly(arr1, arr2)
  66.    
  67.     if (length(arr2) > length(arr1))
  68.         c = arr1;
  69.         arr1 = arr2;
  70.         arr2 = c;
  71.     end
  72.     r = 1;
  73.     while ((length(arr1) > 1 && length(arr2) > 1) && (r != 0))
  74.  
  75.         fx = arr1;
  76.         gx = arr2;
  77.         [~, r]= division(fx, gx);
  78.  
  79.         i = 1;
  80.         while ((r(i) == 0) && (length(r) > 1))
  81.             r(i) = [];
  82.         end
  83.         if (r == 0)
  84.             break;
  85.         end
  86.  
  87.         arr1 = gx;
  88.         arr2 = r;
  89.     end
  90.  
  91.     ans = r;
  92. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement