フィルターのクリア

Find Coefficients of a 5th order ODE without ode45

3 ビュー (過去 30 日間)
Tashanda Rayne
Tashanda Rayne 2023 年 10 月 22 日
編集済み: Torsten 2023 年 10 月 22 日
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

採用された回答

Torsten
Torsten 2023 年 10 月 22 日
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 件のコメント
Tashanda Rayne
Tashanda Rayne 2023 年 10 月 22 日
% "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 2023 年 10 月 22 日
編集済み: Torsten 2023 年 10 月 22 日
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 :-)

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeOrdinary Differential Equations についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by