Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика

.doc
Скачиваний:
94
Добавлен:
26.05.2014
Размер:
75.78 Кб
Скачать

3 Функция 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