Информатика
.doc3 Функция f(x,n) зависящая от x и n определяется выражением ln(pix^2+e)*Σ e^ -lg(x,k)l
g(x)= e^(-x) * cos(kx) x>=0
sin kx+cos kx x<0
Написать m функцию возвращающую значение равное min {f(x,n1),f(x,n2),…f(x,nm)}
Для произвольного вектора параметров n=[n1,n2….nm] и произвольного значения аргумента х
function y=f1(x,n)
y=0
if x>=0
for i=1:n
y=y+exp(-abs(exp(-x)*cos(i*x)))
end
else
for i=1:n
y=y+exp(-abs(sin(i*x)+cos(i*x)))
end
end
y=log(pi*x^2+exp)*y
function a=osn(x,m)
d=1
for j=m
z(d)=f1(x,j)
d=d+1
end
a=min(z)
4 Функция f(x,n) зависящая от x и n определяется выражением ln(e(1)+sin(n*x^n))*П ln^k(1+|g(x)|)
где g(x)= sin(pi^2x)/x x>0
sin^2x+cosx*e^sinx x<=0
написать м-функцию, возвращающую наименьшее значение индекса i произвольно заданного вектора параметров n =(n, n2, …nm )......i принадлежит(1,2,3....) такое что f(x,n)=min(f(x,n1),f(x,n2),…f(x,nm)) для произвольного значения аргумента х
function [min]=f(x,n)
min=inf;
m=length(n);
y=0
for k=1:m
y=f(x,n(k));
if y<min
min=y;
end
end
function F=f(x,n)
F=1;
g=0;
if x>0
g=sin(pi^2*x)/x
else
g=(sin(x))^2+cos(x*exp(sin(x)));
end
for k=1:n
F=F*log(1+abs(g))^k
end
F=F*log(exp(1)+sin(n*x^n))
5 Функция f(x,n) зависящая от x и n определяется выражением sin(n*x^2)*Σ(g(x)/(e-k*x^3)^1/3
g(x)= pi^2*exp(-ln(1+x)) x>=0
(sin^2(pi*x))/x^2 x<0
Написать m функцию возвращающую значение равное max {f(x1,n1),f(x1,n2),…f(x1,nm), f(x2,n1),f(x2,n2),…f(x2,nm), {f(xm,n1),f(xm,n2),…f(xm,nm)}
Для произвольного вектора параметров n=[n1,n2….nm] и произвольного значения аргумента х
function [max]=fun(x,n)
m=length(x)
for i=1:m
for t=1:m
y=f(x(i),n(t))
if y>max
max=y
end
end
end
function a=f(x,n)
a=0
g=0
for k=1:n
if x>=0
g=pi^2*exp(-ln(1+x))
else
g=((sin(pi*x))^2)/x^2
end
a=g/(exp(1)-k*x^3)^1/3
end
a=a*sin(n*x^2)
7 Дана функция An=1*5*9*…*(4n-3)/4*8*12*…*(4n) *x^n*(-1)^(n+1).Написать m функцию возвращающую вектор значений первых m частичных сумм этого ряда s=[s1,…sm],где sk=a1(x)+…ak(x) k от 1 до m
function z=osn(x,m)
%
%
z=[]
for j=1;m
s=podprog(x,j)
z(j)=s
end
function s=podprog(x,k)
%
%
a=x/4
b=1
s=0
for i=1:k
s=s+a
a=-a*x*(4*b+1)/(4*b+4)
b=b+1
end
11 Написать m функцию, осуществляющую сортировку по неубыванию всех отрицательных элементов произвольно заданного вектора х ,и оставляющую на своих местах остальные элементы. Сформировать вспомогательный массив из всех отрицательных элементов исходного массива и применить к нему сортировку (с и без использования функции sort)
function=spf(x)
k=1
for i=1:length(x)
if x(i)<0
z(k)=x(i)
m(k)=1
k=k+1
end
end
perviy variant sortirovki
for i=1:length(z)
for j=1:length(z)-1
if z(j)>z(j+1)
u=z(j)
z(j)=z(j+1)
z(j+1)=u
end
end
end
vtoroy variant sortirovki
z=sort(z)
k=1
for i=m
x(i)=z(k)
k=k+1
end
12 Написать m функцию, осуществляющую сортировку по неубыванию всех элементов произвольно заданного вектора х, модуль которых не превышает 1,и перемещающего их в конец вектора, а остальные элементы в исходном порядке в начало.
n=length(x)
y=[]
a=[]
b=[]
for i=1:n
if abs(x(i))<=1
a=[a,x(i)]
else
b=[b,x(i)]
end
end
function sort1
a=sort(a)
y=[b,a]
function sort2
m=length(a)
for i=1:m
for j=1:m-1
z=a(j)
a(j)=a(j+1)
a(j+1)=z
end
end
y=[b,a]
13 Дан массив класса дабл Х! дан модуль вектора Х ! Найти все его элементы которые лежат в этом отрезке ([1,3]) и составить массив из этих элементов и потом применить к ним сортировку по не убыванию!
function ekz1
%Исх: X - массив класса double
%Рез: Y - массив класcа double состоящий из элементов вектора Х лежащих в отрезке [1;3]
x=[1 -1 -2 2 -1 1 1 2 3]
t=find(x<=3) % t - вектор состоящий из индексов элементов вектора Х
% меньших 3
z=x(t) % z - вектор состоящий из элементов вектора Х
% меньших или равных 3
d=find(z>=1) % d - вектор состоящий из индексов элементов вектора Х
% больших или равных 1 и меньших или равных 3
g=z(d) % d - вектор состоящий из элементов вектора Х
% больших или равных 1 и меньших или равных 3
y=sort(g) % y - вектор состоящий из элементов вектора Х
% больших или равных 1 и меньших или равных 3
% отсортированный по неубыванию
14 function [ x ] = is4o_adin_vektor( x )
%Исх.: x-произвольный вектор. Все положительные элементы, справа от которых
%находится 0, отсортировать между собой по не убыванию, а остальные элементы вектора х
%оставить на своих местах
% Рез.: вектор х.
n=length(x);
j=0;
k=0;
for i=1:n-1;
if x(i)>0 & x(i+1)==0
j=j+1;
y(j)=x(i);
end
end
n1=length(y);
if n1>1
%первый способ сортировки у:
for i=1:n1;
for j=1:n1;
if (y(i))<(y(j))
b=y(j);
y(j)=y(i);
y(i)=b;
end
end
end
%второй способ сортировки у:
%y=sort(y)
j=0
for i=1:n-1;
if x(i)>0 & x(i+1)==0
j=j+1;
x(i)=y(j);
end
end
end
15 Из произвольного массива выбрать элементы составляющие натуральную степень двойки. Отсортировать новый массив по невозрастанию (с и без sort)
function proga(x,n)
%
%
n=input ('enter n')
x=input ('enter x')
i=2;
l=1;
while i<=n
z(l)=x(i);
i=i*2;
l=l+1;
end
z=-sort(-x)
k=1
for n1=1:l
while z(l)==max(z)
z(l)=z(k)
k=k+1;
end
end
15 %Исх.: x - исходная строка (вектор класса char),
%Рез.: y - вектор класса char. В предлож., имеющих минимальное число слов,
%поменять местами каждые 2 соседних слова. Предполагается, что число слов в
%таком предложении четно.
%"Двухпроходная" версия
txt=x;
y=[];
minpred=[];
slv=[];
minslov=0;
while ~isempty(txt)
[predl,txt]=strtok(txt,'.!?'); %Отделяем предложения от текста
n=0;
while ~isempty(predl)
[slovo,predl]=strtok(predl,' !?.;,'); %Отделяем слова от предложения
n=n+1; %Считаем число слов в предложении
end
if (minslov==0) | (minslov>n)
minslov=n; %Если найдено более малое число слов, то запоминаем его
end
end
txt=x; %Начинаем второй проход текста
while ~isempty(txt)
[predl,txt]=strtok(txt,'.!?'); %Отделяем предложения от текста
n=0;
tekpred=predl; %Запоминаем текущее предложение
while ~isempty(predl)
[slovo,predl]=strtok(predl,' !?.;,'); %Отделяем слова от предложения
n=n+1; %Считаем число слов в предложении
end
if n==minslov %Если это предложение самое "малословное"
for k=1:2:(minslov-1)
[slv(k),tekpred]=strtok(tekpred,' !?.;,'); %Отделяем слово от предложения
[slv(k+1),tekpred]=strtok(tekpred,' !?.;,'); %Отделяем след.слово от предложения
y=strvcat(y,slv(k+1),slv(k)); %Записываем результат, поменяв соседние слова местами
end
end
end
16 Написать m функцию, возвращающую вектор произведений элементов тех строк произвольно заданной матрицы х (входной параметр), которые не содержат отрицательных элементов. Написать 2 варианта (с и без использованием find prod во втором случае алгоритм разработать с использованием вспомогательной функции)
[n,m]=size(x);
d=1;
for i=1:n
l=0;
p=1;
for j=1:m
p=p*x(i,j);
if x(i,j)<0
l=l+1;
end
end
if l==0
y(d)=p;
d=d+1;
end
end
[n,m]=size(x);
d=1;
for i=1:n
z=find(x(i,:)<=0);
if length(z)==0
y(d)=prod(x(i,:));
d=d+1;
end
end
18
function [y] = vektornah(x)
%Исх.:Произвольная матрица x. Найти строки, содержащие хотя бы один
%отрицательный элемент, посчитать суммы всех элементов этих строк и создать
%вектор, состоящий из этих сумм.
% Рез.: у-вектор.
[n,m]=size(x);
d=1;
for i=1:n
l=0;
p=1;
for j=1:m
p=p+x(i,j);
if x(i,j)<0
l=l+1;
end
end
if l>0
y(d)=p;
d=d+1;
end
end
[n,m]=size(x);
d=1;
for i=1:n
z=find(x(i,:)<=0);
if length(z)>0
y(d)=sum(x(i,:));
d=d+1;
end
end
20 Написать m функцию, возвращающую вектор сумм элементов тех столбцов произвольно заданной матрицы х (входящий параметр),которые содержат хотя бы 1 отрицательный элемент. Написать 2 варианта (с и без использованием find и sum. Второй вариант с помощью вспомогательной функции)
x=x' %% транспонирую матрицу (строки становятся столбцами и наоборот).
[n,m]=size(x);
d=1;
for i=1:n
l=0;
p=1;
for j=1:m
p=p+x(i,j);
if x(i,j)<0
l=l+1;
end
end
if l>0
y(d)=p;
d=d+1;
end
end
x=x' %% транспонирую матрицу (строки становятся столбцами и наоборот).
[n,m]=size(x);
d=1;
for i=1:n
z=find(x(i,:)<=0);
if length(z)>0
y(d)=sum(x(i,:));
d=d+1;
end
end