Help, I have this code, where I wanted to use 'dsolve to get the answer, but it shows me an 'empty sym' like answer:
clear all
clc
disp('Se resolverá una ecuación integro - diferencial')
syms vel(t) t desp(t)
V = input('Ingrese el voltaje: ' );
l = input('Ingrese la longitud: ');
M = input('Ingrese la masa: ');
B = input('Ingrese la inducción magnética: ');
froz = input('Ingrese la fuerza de rozamiento: ');
eqn = diff(vel,t) == (1/M)*(((V*l*B)-(vel(t)*(l^2)*(B^2)))/(1+(2*int(vel, [0 t])))-froz);
%eqn = diff(vel,t) == 2*int(vel, [0 t])
vel(t) = dsolve(eqn, 'vel(0) = 0')
pretty(vel(t))
What can I do?

2 件のコメント

Walter Roberson
Walter Roberson 2018 年 11 月 27 日
Can you give us some sample inputs for V l M B froz ?
The int() in the equation is going to make it difficult to solve symbolically.
Alberto Cadena Vaca
Alberto Cadena Vaca 2018 年 11 月 27 日
V, l M B and froz are just numbers.

サインインしてコメントする。

 採用された回答

madhan ravi
madhan ravi 2018 年 11 月 27 日
編集済み: madhan ravi 2018 年 11 月 27 日

0 投票

Matlab is having trouble to solve the equation like sir Walter suggests so i converted it into numerical solution:
%SYMBOLIC TO NUMERICAL METHOD
clear all
clc
disp('Se resolverá una ecuación integro - diferencial')
syms vel(t)
V = input('Ingrese el voltaje: ' );
l = input('Ingrese la longitud: ');
M = input('Ingrese la masa: ');
B = input('Ingrese la inducción magnética: ');
froz = input('Ingrese la fuerza de rozamiento: ');
vars=vel(t)
eqn = diff(vel,t) == (1/M)*(((V*l*B)-(vel(t)*(l^2)*(B^2)))/(1+(2*int(vel, [0 t])))-froz);
%eqn = diff(vel,t) == 2*int(vel, [0 t])
% vel(t) = dsolve(eqn, 'vel(0) = 0')
% pretty(vel(t))
V = odeToVectorField(eqn)
M = matlabFunction(V,'vars', {'t','Y'})
interval = [0 10]; %time interval
y0 = 0; %initial conditions
ySol = ode45(M,interval,y0);
tValues = linspace(interval(1),interval(2),1000);
yValues = deval(ySol,tValues,1); %number 1 denotes first solution likewise you can mention 2 & 3 for the next two solutions
plot(tValues,yValues)
%DIRECT NUMERICAL METHOD
V = input('Ingrese el voltaje: ' );
l = input('Ingrese la longitud: ');
M = input('Ingrese la masa: ');
B = input('Ingrese la inducción magnética: ');
froz = input('Ingrese la fuerza de rozamiento: ');
[t,x] = ode45(@(t,x)myod(t,x,V,l,M,B,froz),[0 10],0);
plot(t,x,'-om')
function dxdt = myod(t,x,V,l,M,B,froz)
dxdt =(1/M)*(((V*l*B)-(x(1)*(l^2)*(B^2)))/(1+(2*cumtrapz(x(1))))-froz);
end
An example of the solution graph produced:

3 件のコメント

Walter Roberson
Walter Roberson 2018 年 11 月 27 日
I agree that it is likely that you will need to use numeric methods.
madhan ravi
madhan ravi 2018 年 11 月 27 日
Thank you sir Walter ?
Hewa selman
Hewa selman 2021 年 12 月 25 日
hello sir.
Is this code is suitable for system of integro differential equations?

サインインしてコメントする。

その他の回答 (1 件)

Alberto Cadena Vaca
Alberto Cadena Vaca 2018 年 11 月 27 日

0 投票

Help:(
I tried the code but, when I plot the graph, there is just the function x = 0 and don't know why...

3 件のコメント

Walter Roberson
Walter Roberson 2018 年 11 月 27 日
we do not know your inputs
Alberto Cadena Vaca
Alberto Cadena Vaca 2018 年 11 月 27 日
V = 1
B = 1
M = 0.1
l = 0.1
froz = 1
madhan ravi
madhan ravi 2018 年 11 月 27 日
The below is the graph I got with the datas you gave:
Screen Shot 2018-11-27 at 11.01.22 PM.png

サインインしてコメントする。

カテゴリ

ヘルプ センター および File Exchange で Programming についてさらに検索

製品

リリース

R2014a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by