Advertisement
Savelyev_Vyacheslav

lesson4

Sep 7th, 2021
1,310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 4.05 KB | None | 0 0
  1. % Задача 1
  2. % 1,1,2,3,5,8,13 вывести первые N используя while и не используя cat либо "[ , ]"
  3. clear
  4. clc
  5. N = 10; % количество чисел в массиве
  6. Arr = [1,1];
  7. while N > length(Arr)
  8.     Arr(end + 1)=Arr(end - 1) + Arr(end); % Arr(end)посследний элемент массив
  9. end
  10. % Задача 2
  11. % С помощью разложения в ряд определить значение числа Эилера "e"
  12. % a) с заданной точностью Et
  13. % b) с известным колличеством слогаемых
  14. % Ряд Тейлора Мклорена exp(x)=((x^n)/n!) ряд от 1 до бесконечности
  15. % a % Задача 2
  16. clear
  17. clc
  18. N = 7; % количество чисел в массиве
  19. expX = 0; % exp(x)=((x^n)/n!)
  20. for N = 0:N
  21.   Nfak = factorial( N );
  22.   expX = expX + 1/(Nfak);  
  23. end
  24. %b % Задача 2
  25. clear
  26. clc
  27. k = 0; % счетчик
  28. expX = 0; % exp(x)=((x^n)/n!)
  29. eps = 10^(-10); % желаемая точность
  30. X = 2; % степень в которую возводим e^x
  31. EXPnative=exp(X); % настоящая реальная экспонента
  32. while true % бесконечный цикл
  33.    
  34.   Nfak = factorial( k );
  35.   expX = expX + (X^k)/(Nfak); % вычисляемая экспонента
  36.  
  37.   Tochnost =  abs((EXPnative-expX)/EXPnative);
  38.   Proverka = eps > Tochnost;
  39.   if Proverka % условие выхода из цикла
  40.       break;
  41.   end
  42. k = k+1;
  43. end
  44.  
  45.  
  46. % Задача 3
  47. % Определить является ли числовой массив монотонным (убывающим, возростающим)
  48. % sin(x) = x / |x|;
  49. clear
  50. clc
  51. %N = [2,3,4,5,7,1,9]; % заданный массив не монотонный
  52. %N = [2,3,4,5,7,8,9,10]; % заданный массив монотонный
  53. N = [3,2,2,1]; % заданный массив монотонный с подвохом где подряд идут равные числа
  54. Ndiff = diff(N); % вычитание порядковых чисел массива
  55. NdiffMax =  max(Ndiff); % максимал число
  56. NdiffMin =  min(Ndiff);
  57. markMax = sign(NdiffMax); % sign(NdiffMax) определяет знак максимального числа
  58. markMin = sign(NdiffMin); % sign(NdiffMax) определяет знак минимального числа
  59. chek = markMax == markMin; % проверяем  равны ли знаки
  60. if chek
  61.     disp('Монотонный ряд');
  62. else
  63.     if prod(Ndiff)==0 % проверка на равные числа в массиве подрят  prod(Ndiff) - это произведение чисел подряд
  64.     disp('Монотонный ряд');    
  65.     else
  66.     disp('Не монотонный ряд');
  67.     end
  68. end
  69.  
  70.  
  71. % Задача 4
  72. % В первый день лыжник пробежал 10 км, каждый день лыжник увеличивал пробег
  73. % на 10%. Определить: a) в какой по счёту день лыжник пробежал >= 20км;
  74. % b) В какой день суммарный пробег превысит 100км;
  75. % Задача 4 первый вариант решения
  76. clear
  77. clc
  78. Probeg = 10;
  79. Probeg20km = 20;
  80. Day = 1; % первый день
  81. ProbegSum = Probeg;
  82. a=0;
  83. while true % бесконечный цикл  начинаем со второго дня
  84.     chek20km = Probeg >= Probeg20km;
  85.     if chek20km
  86.         disp(['Пробежал более 20км в день = ',num2str(Day)]);
  87.        
  88.         if a == 1  % a - контроль выхода из цыкла
  89.           break;
  90.         end
  91.         a=1;
  92.     end
  93.     Probeg =  Probeg * 1.1;
  94.     ProbegSum = ProbegSum + Probeg;
  95.    
  96.     chekProbegSum = ProbegSum > 100;
  97.     if chekProbegSum
  98.         disp(['Пробежал более 100км всего в день= ', num2str(Day)]);
  99.        
  100.         if a == 1 % a - контроль выхода из цыкла
  101.             break;
  102.         end
  103.         a=1;
  104.     end
  105.     Day = Day + 1;
  106. end
  107.  
  108.  
  109.  
  110.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement