Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/32: Рейтинг темы: голосов - 32, средняя оценка - 5.00
 Аватар для Triton.cpp
35 / 35 / 2
Регистрация: 14.04.2011
Сообщений: 107

Функция с параметрами символьного типа

05.01.2013, 20:17. Показов 5913. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо создать файл-функцию tangent1('x^2',0), возвращающую символьную строку yt, которая содержит символьную запись уравнения производной в некоторой точке X0.

Не понимаю как указать, что параметр y символьного типа?

Matlab M
1
2
3
4
5
function yt = tangent1( y, x0 )
%
%
yt = diff(y, x, 1);
end
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.01.2013, 20:17
Ответы с готовыми решениями:

Сравнение слова символьного типа с массивом строк также символьного типа
Здравствуйте!! Ребята подскажите по такому вопросу мне нужно сравить слово символьного типа с массивом строк тоже символьного типа, но у...

Функция с параметрами типа указатель на символ и ссылка на целое
не могу разобратся с указателем на функцию хотя вроде понял , но так как понял не работает задание: Составить описание : Функция с...

Ошибка: функция random с параметрами указанных типа не найдена
Пожалуйста, помогите разобраться, выдает ошибку:( "Ошибка: функция random c параметрами указанных типа не найдена". ...

4
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
06.01.2013, 01:43
В данном случае результат будет символьного типа (sym), которую нужно преобразовать к строковому типу (char).
Можно попробовать так:
Matlab M
1
2
3
4
5
function yt = tangent1( y, x0 )
%
%
yt = char( diff(y, x, 1) );
end
Или тебе нужно сделать проверку, что y - строка? это делается конструкцией:
Matlab M
1
2
3
4
5
6
7
8
function yt = tangent1( y, x0 )
 
if ~ischar(y)
   disp('Параметр y должен быть строкой!')
   return
end
yt = char( diff(y, x, 1) );
end
И еще, производная в некоторой точке X0 - это будет число!
1
 Аватар для Triton.cpp
35 / 35 / 2
Регистрация: 14.04.2011
Сообщений: 107
06.01.2013, 02:22  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
И еще, производная в некоторой точке X0 - это будет число!
Согласен.

С математической точки зрения задание элементарно и не вызывает вопросов, но есть обязательные к выполнению требования:
5. Исследование скорости роста символьной функции, описывающей некоторые параметры модели объекта в точке X0=0 и в диапазоне [X0-1,X0+1].
Необходимо написать следующие файл-функции:
а) файл-функция, входными аргументами которой являются:
• строка с символьным представлением функции f1(x) одной переменной х,
• числовое значение абсциссы точки, в которой следует провести касательную.
б) файл-функция анимации процесса построения касательной в точках диапазона [ X 0-1, X 0+1].
Добавлено через 27 минут
Я понял свою ошибку: переменную, по которой происходит дифференцирование, нужно было заключить в кавычки.
Matlab M
1
yt =  diff(y, 'x', 1);
Осталось разобраться с числовым параметром.
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
06.01.2013, 02:40
Аааа! так тебе в Х0 касательную нужно провести
Пока нет у меня возможности сильно углубляться и изобретать анимашку, а пример построения касательной и нормали можешь глянуь в этой теме:
Построить график касательной и нормали к кривой в произвольно заданной точке; эту точку отметить на графике
Анимацию, например тут:
Эволюция поверхности
добавлю только, что в анимации нужно будет пробежаться по нескольким точкам из отрезка [ X0-1, X0+1], в каждой из них построить касательную и отобразить ее графически.
На подобии этого:
1
 Аватар для Triton.cpp
35 / 35 / 2
Регистрация: 14.04.2011
Сообщений: 107
06.01.2013, 06:06  [ТС]
В результате получил практически то, что требовалось, за исключением пары моментов:
1. Как убрать на графике сетку и поместить на него нормальные координатные оси, которые бы пересекались в т.(0;0) ?
2. Когда касательная проходит по верхней ветви графика функции, то в окне команд появляются предупреждения. Как это исправить?



Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
function y = tangent1( f, x0 )
%Возвращает уравнение касательной к функции f в точке x0
%
y0 = subs(f,'x',x0);    
p = diff(f, 'x', 1);
k = subs(p,'x',x0);
 
y = 'y0+k*(x-x0)';
y = subs(y,'k',k);
y = subs(y,'x0',x0);
y = subs(y,'y0',y0);
end
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
%Анимация последовательного построения касательной к графику 
%
clc; clear;
f = sym('(x+1)^3'); %Функция, к графику которой будет строиться касательная 
 
x=-3:0.1:1;    % интервал изменения х для построения графика кривой 
x1=-3.5:0.1:2; % интервал изменения х для построения отрезка касательной 
 
% Точка касания
x0 = x(1);
y0 = subs(f,'x',x0);       
% Дескриптор точки касания
h3 = line(x0,y0); 
set(h3,'Marker','o');
set(h3,'color','b');
set(h3,'EraseMode','xor');
grid on;
 
% График функции
y2 = subs(f,'x',x);     
% Дескриптор графика функции f
h2 = line(x,y2);
set(h2,'color','r');
 
% Касательная
tmp = tangent1(f,x0);
y1 = subs(tmp,'x',x1);
% Дескриптор уравнения касательной в точке (x0,y0)
h1=line(x1,y1);
set(h1,'color','g');
set(h1,'EraseMode','xor');    
 
% Диапазон изменения переменных вдоль осей Х и Y
axis([-4 4 -10 10]);
axis manual;
 
% Принудительный вывод графиков, заданных дескрипторами
pause(0.1);
k=length(x);
while 1 % бесконечная анимация, завершить - Ctrl+C
    for i=1:k
        x0=x(i);
        
        y0 = subs(f,'x',x0);
        tmp = tangent1(f,x0);
        y1 = subs(tmp,'x',x1);
        
        set(h3,'XData',x0,'YData',y0);
        set(h1,'XData',x1,'YData',y1);
        pause(0.1);
    end
end
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.01.2013, 06:06
Помогаю со студенческими работами здесь

По массиву С(10) символьного типа получить массив В(10) логического типа
По массиву С(10) символьного типа получить массив В(10) логического типа следующим образом: элементу В присвоить true,если C-цифра.и...

даны множества символьного типа: X1=[ ' A ',' C ','E ','F ','N ']; X2=[ 'N ',' A ',' H ',' E ']
даны множества символьного типа: X1=; X2=. Постройте множество X=(X1UX2)\(X1\X2) и выведите его на печать.

Индекс массива символьного типа
Как создать массив, индекс которого будет символьного типа, то есть a a и так далее... И что бы была возможность задавать...

Преобразование символьного типа данных в целочисленный
Написал программу для преобразования символьного типа данных в целочисленный . #include <stdio.h> int st(char s) { ...

Динамический массив символьного типа - трудности
Здравствуйте! Во время выполнения задания "Создать структуру <студент> с полями: Студ.код, Фамилия, Предмет, Оценка. Создать динамический...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru