Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 14

Не получается построить график

01.04.2015, 12:42. Показов 2328. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
clear all
clc
n2 = -1.57; % -pi/2
n1 = 1.57;  % pi/2
d = 1; % чтобы ни на что не влияло
k = 1; % не влияет ни на что
betta = (n2+1e-5):0.1:(n1-1e-5); % удовлетворяет неравенству 
for i =0:5 % хочу построить периодический тангенс как на фото
chi_d_ = d*sqrt(n1*n1*k*k - betta.*betta); % для tg(xd)
new_chi = i*pi+chi_d; %периодичность
plot(new_chi_d, tan(new_chi_d),'g','LineWidth',2)
hold on
end
 
grid on
set(gca,'XTick',0:pi/2:9*pi/2)
set(gca, 'XTickLabel',{'0', 'pi/2', 'pi', '3pi/2', '2pi',...
    '5pi/2', '3pi','7pi/2', '4pi', '9pi/2'})
axis([0 4*pi -4 4])
Добрый день! На фотографии представлена формула и график. Мне нужно запрограммировать эту формулу и графически получить решение (найти точки пересечения). У tg(x) -pi/2 < x < pi/2. Попытался вывести формулу для того чтобы именно в этот интервал попадало моё Хи*d. Как решить такую задачу? Я пытаюсь подбирать параметры, т.к. в учебнике приведен лишь рисунок, без каких-либо точных значений. В коде сумбур, пытался обычный тангенс от икс переделать под мой хи*d. Подскажите, пожалуйста, что я делаю не так?
Миниатюры
Не получается построить график  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.04.2015, 12:42
Ответы с готовыми решениями:

Не получается построить 3D график
В общем необходимо построить 3 д график по заданным значениям, у меня он почему-то получается плоским((( Вот значения: x=; y=; ...

Не получается построить график
fplot('2.*y + (2.*y - 6).*(x - 1) - 2.*y.^3 + 8', , ) hold on fplot('2.*x + (2.*x - 6).*(y - 1) - 2.*x.^3 + 8', , , 'r') xlabel('x') ...

Не получается построить график в Matlab
Строит что то странное ,а должна получится адекватная зависимость...Подскажите где тут и что надо исправить. clear; clc; q=0:1:20; ...

12
143 / 143 / 37
Регистрация: 14.12.2013
Сообщений: 221
01.04.2015, 13:25
12312
0
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 14
01.04.2015, 13:56  [ТС]
oblomov, добрый день! Я посмотрел ваш код, на фотографии результат компиляции.
У тангенса икс (-pi/2;0) отвечает за "нижнюю" ветвь, а (0; pi/2) - за верхнюю. У меня же tg(xi). Так как xi у меня не отрицательное, то и рисует лишь верхние части. А вот если, например, -4 < betta < 1.2, то при возведении в квадрат не обязательно k^2*n1^2 - betta^2 > 0, хоть и k*n1 > betta. Таким образом под корнем возможны отрицательные значения, но меня по задаче интересуют лишь вещественные значения. То есть я должен грамотно выбирать n1*k и n2*k.
Не знаю как подступиться.
Миниатюры
Не получается построить график  
0
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 14
01.04.2015, 14:03  [ТС]
oblomov, сетку не ограничил. Сейчас разберусь в Вашем вопросе. В любом случае, спасибо за то что уделили время!
0
143 / 143 / 37
Регистрация: 14.12.2013
Сообщений: 221
01.04.2015, 14:10
Nutella__, по ошибке не ту версию кинул

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
syms x y
y=tan(x);
 
n1=2.7;
n2=0.3;
k0=1;
xi=sqrt(n1^2*k0^2-x^2);
gamma=sqrt(x^2-n2^2*k0^2);
 
g_xi=-gamma/xi;
xi_g=xi/gamma;
 
x_p=0:0.01*pi:9*pi/2;
y_p=subs(y,'x',x_p);
betta_p=n2*k0:0.01:n1*k0;
xi_p=subs(xi,'x',betta_p);
gamma_p=subs(gamma,'x',betta_p);
 
plot(x_p,y_p,'LineWidth',2)
hold on
plot(betta_p,-gamma_p./xi_p,betta_p,xi_p./gamma_p,'Color','g','LineWidth',2)
set(gca,'XTick',0:pi/2:9*pi/2)
set(gca, 'XTickLabel',{'0', 'pi/2', 'pi', '3pi/2', '2pi',...
    '5pi/2', '3pi','7pi/2', '4pi', '9pi/2'})
grid on
1
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 14
01.04.2015, 14:21  [ТС]
oblomov, а как вы получили такой график? Скопировал ваш код, добавил снизу axis() чтобы область была как у вас, но результат иной. В pi/2 нужно сдвинуться, т.к. в этой точке не должен считать tg().
Мне нравится рисунок в вашем приложении, чтобы получить как в книжке, нужно "поиграть" с параметрами, полагаю.
Миниатюры
Не получается построить график  
0
143 / 143 / 37
Регистрация: 14.12.2013
Сообщений: 221
01.04.2015, 14:24
Nutella__, попробуйте вот так, я получил такую картинку с тем кодом, который прикрепил
Matlab M
1
2
3
4
5
6
7
8
9
plot(x_p,y_p,'LineWidth',2)
hold on
plot(betta_p,-gamma_p./xi_p,'Color','g','LineWidth',2)
hold on
plot(betta_p,xi_p./gamma_p,'Color','g','LineWidth',2)
set(gca,'XTick',0:pi/2:9*pi/2)
set(gca, 'XTickLabel',{'0', 'pi/2', 'pi', '3pi/2', '2pi',...
    '5pi/2', '3pi','7pi/2', '4pi', '9pi/2'})
grid on
и шаги сменить на 0.02 и 0.02*pi
0
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 14
01.04.2015, 14:55  [ТС]
oblomov,
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
syms x y (?) говорим что х и у - переменные?
y=tan(x);
 
n1=2.7;
n2=0.3;
k0=1;
 
xi=sqrt(n1^2*k0^2-x^2); (?) так задаем формулу?
gamma=sqrt(x^2-n2^2*k0^2);
 
g_xi=-gamma/xi;  (?) задаем формулу?
xi_g=xi/gamma;
 
x_p=0.001:0.001*pi:9*pi/2;
y_p=subs(y,'x',x_p); (?) 
betta_p=n2*k0:0.01:n1*k0; (?) где нужно сместиться, чтобы не было вертикальных линий м/у тангенсами?
xi_p=subs(xi,'x',betta_p); 
gamma_p=subs(gamma,'x',betta_p);
 
plot(x_p,y_p,'LineWidth',2)
hold on
plot(betta_p,-gamma_p./xi_p,'Color','g','LineWidth',2)
hold on
plot(betta_p,xi_p./gamma_p,'Color','g','LineWidth',2)
set(gca,'XTick',0:pi/2:9*pi/2)
set(gca, 'XTickLabel',{'0', 'pi/2', 'pi', '3pi/2', '2pi',...
    '5pi/2', '3pi','7pi/2', '4pi', '9pi/2'})
grid on
axis([0 4*pi -40 40])
Можете, пожалуйста, прокомментировать некоторые моменты помеченные (?) ?
Результат всё тот же, периодичный тангенс с вертикальными линиями между двух графиков.
Две другие кривые пока не рассматривал, но мне кажется тут вопрос просто за константами, и можно кривые "вытянуть" вдоль оси икс.
Странно как-то получилось, вы говорите с вашим кодом результат без вертикальных линий. Может ли быть дело в матлабе? Склоняюсь к тому что область xi не верная, раз в нее включаются точки -pi/2 + pi*k и pi/2 + pi*k.
Если у вас будет время и желание, надеюсь вы поможете в этом разобраться.
Наверно (слишком) заметно , что я с матлабом столкнулся недавно.

Кстати вот тут :
Matlab M
1
plot(betta_p,-gamma_p./xi_p,'Color','g','LineWidth',2)
Matlab M
1
plot(betta_p,xi_p./gamma_p,'Color','g','LineWidth',2)
Предупреждает что комплексные значения он игнорирует.

Добавлено через 15 минут
Добавил тут смещение , ведь переменная betta не должна быть в точности равна n1 и n2. n2 < betta < n1
Matlab M
1
betta_p=n2*k0+1e-5:0.01:n1*k0-1e-5;
0
143 / 143 / 37
Регистрация: 14.12.2013
Сообщений: 221
01.04.2015, 15:28
Лучший ответ Сообщение было отмечено Nutella__ как решение

Решение

Nutella__, давайте вот так попробуем

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
y_mas=[];x_mas=[];
for k=1:8
x=-pi/2+pi*(k-1)+0.025:0.01*pi:pi/2+pi*(k-1);
y=tan(x);
y_mas(:,k)=y;
x_mas(:,k)=x;
end
 
n1=9.42;
n2=0.5;
k0=1;
betta_p=n2*k0+eps:0.01:n1*k0+eps;
xi=sqrt(n1^2*k0^2-betta_p.^2);
gamma=sqrt(betta_p.^2-n2^2*k0^2);
 
 
plot(x_mas,y_mas,'Color','b','LineWidth',2)
hold on
plot(betta_p,-gamma./xi,'Color','g','LineWidth',2)
hold on
plot(betta_p,xi./gamma,'Color','g','LineWidth',2)
set(gca,'XTick',0:pi/2:9*pi/2)
set(gca, 'XTickLabel',{'0', 'pi/2', 'pi', '3pi/2', '2pi',...
    '5pi/2', '3pi','7pi/2', '4pi', '9pi/2'})
grid on
axis([0 4*pi -40 40])
1
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 14
01.04.2015, 15:57  [ТС]
oblomov, спасибо большое!) Рисует (как мне кажется) то что нужно, осталось дело за малым, я сам подберу значения. Спасибо большое! Можете лишь оставить комментарии в некоторых местах? Почему я прошу об этом? Потому что надеюсь получить доступный ответ, не ковыряясь в документации.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
y_mas=[];x_mas=[];
for k=1:8
x=-pi/2+pi*(k-1)+0.025:0.01*pi:pi/2+pi*(k-1);
y=tan(x);
y_mas(:,k)=y;           %что такое (:,k)
x_mas(:,k)=x;
end
 
n1=8.1;
n2=0.2;
k0=1;
betta_p=n2*k0+eps:0.01:n1*k0+eps;            %а где фиксируется эпсилон?
xi=sqrt(n1^2*k0^2-betta_p.^2);
gamma=sqrt(betta_p.^2-n2^2*k0^2);
 
 
plot(x_mas,y_mas,'Color','b','LineWidth',2)
hold on
plot(betta_p,-gamma./xi,'Color','g','LineWidth',2)
hold on
plot(betta_p,xi./gamma,'Color','g','LineWidth',2)
set(gca,'XTick',0:pi/2:9*pi/2)
set(gca, 'XTickLabel',{'0', 'pi/2', 'pi', '3pi/2', '2pi',...
    '5pi/2', '3pi','7pi/2', '4pi', '9pi/2'})
grid on
axis([0 4*pi -40 40])
0
143 / 143 / 37
Регистрация: 14.12.2013
Сообщений: 221
01.04.2015, 16:13
Nutella__,
в цикле при расчете "y" мы получаем некую строку значений, определенной длины, например 100 элементов
далее мы записываем эту строку (1,100) в массив y_mas, где : означает взять все имеющиеся элементы строки, а k формирует необходимый столбец в соответствии с циклом, на выходе из цикла мы имеем массив значений y_mas(:,k) ~ y_mas(100,1-8) , здесь это нужно для построения графика и ухода от той проблемы (соединения при разрыве), которая была ранее
eps встроенная константа матлаба равная 2.2204e-16
0
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 14
02.04.2015, 00:27  [ТС]
oblomov, остался один вопрос. Наверно самый важный
tan(xi*d). Он зависит от Хи и d. Обычный периодический тангенс я кстати рисовал, только сейчас дойдя до дома основательно сел разбирать вашкод и увидел что рисует обычный тангенс от икса.
А у меня суть задания в том, что хи и сигма - собственные числа. Я вывел эти уравнения, и нарисовав графики отдельно, можно получить графическое решение уравнения, фиксируя бетта. Мне кажется что вычислив Хи по то формуле, которая имеется я смогу получить такой же периодичный график лишь в цикле как у вас. Проблема в том что Хи*d лежит не от -pi/2 до pi/2 как это было бы удобнее.
p.s. Остальные наблюдают

Добавлено через 34 минуты
А что если нарисовать тангенс от икс, как это сделали вы, но абстрактно обозначить его как xi*d. Найти точку пересечений с графиком правых функций, а затем зная конкретные пары (x,y) выразить xi*d? В конкретной точке (val1 , val2) графики пересеклись, а это значит tan(val1) = val2, следовательно xi*d = val1 => sqrt(n1^2*k0^2 - betta^2 ) = val1/d;
betta^2 = n1^2*k0^2 - (val1/d)^2.
Это рационально в данном случае? Спасибо.
0
143 / 143 / 37
Регистрация: 14.12.2013
Сообщений: 221
02.04.2015, 09:24
Nutella__, можно тангенсу на вход подпихнуть xi=sqrt(n1^2*k0^2-betta_p.^2); и завести d, при d=1 картинка не должна поменяться))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.04.2015, 09:24
Помогаю со студенческими работами здесь

Не получается взять интеграл численным методом и построить график, почему-то бесконечность
помогите решить интеграл и построить график, уходит в бесконечность clear all; close all; w=1e4; mu=1; beta=1; F=1; Cp=1;...

Построить график экспоненты, декартов график в логарифмической шкале
построить график е в степени х,декартовый график в логорефмичной шкале????????????????????

Не получается построить график
Помогите построить график ,а то не получается: y=cos^2(Пx)sin(3Пx)на промежутке xЄ з шагом 0,1

не получается построить график
Не получается построить график как на рис 1. У меня получается как на рис 2(нужно рис 1). Помогите.

Не получается построить график
Доброго времени суток! Есть такая задача: Вычислить значения функции в заданном интервале, вывести результат в таблицу, по результатам...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru