Filter löschen
Filter löschen

Find Coefficients of a 5th order ODE without ode45

3 Ansichten (letzte 30 Tage)
Tashanda Rayne
Tashanda Rayne am 22 Okt. 2023
Bearbeitet: Torsten am 22 Okt. 2023
The code below I came up with, I am getting the correct roots but the constants are wrong and the graph is not correct either. Can you please help me figure out why it's coming out incorrect.
%Eqn: y'''''-5y'''+4y' = 0
format long
Coefa = 1;
Coefb = 0;
Coefc = -5;
Coefd = 0;
Coefe = 4;
Coeff = 0;
x0 = 0; Yin = 3, Yder1 = -5, Yder2 = 11 , Yder3 = -23, Yder4 = 47,
Yin =
3
Yder1 =
-5
Yder2 =
11
Yder3 =
-23
Yder4 =
47
B = [Yin Yder1 Yder2 , Yder3 Yder4]; N = 1000;
x = linspace(0,25,N);
y = zeros(1,N);
R = zeros(1,4);
R = SecondOderODE1(Coefa,Coefb, Coefc,Coefd, Coefe,Coeff);
Unrecognized function or variable 'SecondOderODE1'.
if abs(R(1)-R(4))>=1/10^6
A = [exp(R(1).*x0), exp(R(2).*x0), exp(R(3).*x0), exp(R(4).*x0), exp(R(5).*x0); exp(x0.*R(1)).*R(1), R(2).*exp(x0.*R(2)), exp(x0.*R(3)).*R(3), exp(x0.*R(4)).*R(4), exp(x0.*R(5)).*R(5)];
C = B./A
for i = 1:1:N
y(i) = real(C(1)*exp(R(1)*x(i)) + C(2)*exp(R(2)*x(i)))+ C(3)*exp(R(3)*x(i))+ C(4)*exp(R(4)*x(i))+ C(5)*exp(R(5)*x(i));
figure(1)
plot (x,y)
xlabel ('x')
ylabel('y')
grid on
end
end
figure(1)
plot(x,y)
xlabel ('x')
ylabel('y')
grid on

Akzeptierte Antwort

Torsten
Torsten am 22 Okt. 2023
syms t x(t)
Dx = diff(x,t);
D2x = diff(x,t,2);
D3x = diff(x,t,3);
D4x = diff(x,t,4);
D5x = diff(x,t,5);
eqn = D5x-5*D3x+4*Dx == 0;
conds = [x(0) == 3,Dx(0) == -5,D2x(0) ==11, D3x(0) == -23, D4x(0)==47];
sol = dsolve(eqn,conds)
sol = 
fplot(sol,[0 1])
  4 Kommentare
Tashanda Rayne
Tashanda Rayne am 22 Okt. 2023
% "SecondOderOde1"
function [R] = SecondOderODE1(Coefa, Coefb, Coefc, Coefd, Coefe, Coeff);
p = zeros(1,6); R = zeros(1,6);
p = [Coefa, Coefb, Coefc, Coefd, Coefe, Coeff];
R = roots(p);
end
The code is supposed to solve for roots and constants. I got it to solve for the roots but when trying to solve for the constants it is returning my I.C. I am attempting to solve this problem without using ODE45 or dsolve
Torsten
Torsten am 22 Okt. 2023
Bearbeitet: Torsten am 22 Okt. 2023
The roots could be complex-valued or a root could be of higher order than 1. How do you handle this with your code ?
In short: a solution without dsolve or ODE45 will get much more complex than the code you posted.
For the equation posted, a paper-and-pencil solution will be easiest - and it doesn't use ODE45 or dsolve :-)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by