Преобразование типа данных? - PullRequest
0 голосов
/ 19 января 2019

Учитывая дифференциальное уравнение в матричной форме:

f = @(t,y) [(a*y(1) + b*y(2)); (c*y(1) + d*y(2))];
a=-2; b=-1; c=1; d=-4

Решения моей задачи дифференциального уравнения:

x(t)= e^(-3t) (t+1)
y{t)= e^(-3t) *t 

Общее решение:

Y(t)=  e^(-3t) (xo,yo)' + t * e^(-3t) (xo-yo,xo-yo)'

Исходное условиеis (xo, yo) = (1,0) = (e; g)

Matlab Code:

syms xSol ySol  ran with and without this statement with same error msg
t=-1.1:0.1:2.1;
plot(t,xSol)  error occurs here
hold on
plot(t,ySol)
hold off

Сообщение об ошибке:

Error using plot
Data must be numeric, datetime, duration or an array convertible to double.

Дальнейшее изучениебудет означать, что xSol и ySol должны быть числовыми числами.У меня в исходном состоянии (1; 0);

xSol(t) = exp(-3*t) + t*exp(-3*t)
ySol(t) = t*exp(-3*t)

Мне нужно изменить xSol (t) и ySol (t) на xSol и ySol без (t).Как исправить?Коррекция должна работать с комплексными числами.

Примеры онлайн использования fplot.Это лучшая функция для использования в этом приложении?Мне нужно будет определить две функции для xSolv и ySolv.Мой код работает для общего дифференциального уравнения с двумя переменными.

Пример в сети:

f = @(x) sin(1/x);

Предположим, что мы хотим построить график от 0,01 до 1:

lims = [.01 1];
fplot(f, lims, '.-')

Iпробовал

xSolvpa = vpa(xSol)
ySolvpa = vpa(ySol)
fplot(xSolvpa,[-2.1 1.5])
hold on
fplot(t,ySolvpa,[-2.1 1.5])

но получил неправильный сюжет.Это сбивает с толку.Нет ошибок.

Как это сделать?

MM

1 Ответ

0 голосов
/ 19 января 2019

Синтаксис CHanging корректно исправляет ошибку, и теперь строится правильный график.

xSolvpa = vpa(xSol)
ySolvpa = vpa(ySol)
lims=[-1.1 1.5]
fplot(xSolvpa, lims)
hold on
fplot(ySolvpa, lims)
...