I have error in FDM 2

조회 수: 3 (최근 30일)
Rashmi
Rashmi 2024년 6월 23일
댓글: Walter Roberson 2024년 6월 24일
function FDMex() N = 100;
h = 0.1; eta = 0:h:N; Ac = 0.0001; S = 0.2; k = 0.1; Pr = 1.0; Sc = 1.2; alpha1 = 0.4; alpha2 = 0; zeta = 0.3; gamma = 0.3; omega = 0.4; fw = 0.2;
F = zeros(N+2, 1); G = zeros(N+2, 1); theta = zeros(N+2, 1); phi = zeros(N+2, 1); H = zeros(N+2, 1);
F(1) = 0; G(1) = omega; theta(1) = 1; phi(1) = 1; H(1) = S + fw / Sc * (phi(2) - phi(1)) / h^2; F(N+2) = 0; G(N+2) = 0; theta(N+2) = 0; phi(N+2) = 0;
c = 1.0; while(c>0) [H1, F1, G1, theta1, phi1] = equation(H,F,G,theta,phi,N,h); c = 0.0; for j = 1:N+1 if (abs(H(j)-H1(j))>Ac); (abs(F(j)-F1(j))>Ac);(abs(G(j)-G1(j))>Ac);(abs(theta(1)-theta1(1))>Ac);(abs(phi(j)-phi1(j))>Ac); c = c+1; break end end H = H1; F = F1; G = G1; theta = theta1; phi = phi1; end disp('Hence solutions = :' ); H2(1 : N+2) = H; F2(1 : N+2) = F; G2(1 : N+2) = G; theta2(1 : N+2) = theta; phi2(1 : N+2) = phi; eta = 0:0.1:N;
figure(1) plot(eta,H2,'*r') hold on
function [H1, F1, G1, theta1, phi1] = equation(H,F,G,theta,phi,N,h) for i = 1:N-1 H(i+1) = H(i) - h*2*F(i); F(i+1) = (F(i) + F(i+2))/2 -H(i)*(h/2)*(F(i+1)-F(i)) +(h^2)*(G(i)^2) - (h^2)*(F(i)^2) + (h^2)*(S/2)*((((i*h)+1)/2)*((F(i+1)-F(i))/h)+F(i)) - (h^2)*(k/2)*(((G(i+1)-G(i))/h)^2 - ((F(i+1)-F(i))/h)^2+2*F(i)*((F(i) -2*F(i+1) + F(i+2))/h^2)); G(i+1) = (G(i) + G(i+2))/2 -(h/2)*H(i)*(G(i+1)-G(i)) - (h^2)*F(i)*G(i) + (h^2)*S*(((i*h+1)/2)*((G(i+1)-G(i))/h)+G(i)) - (h^2)*k*(F(i)*((G(i) -2*G(i+1) + G(i+2))/h^2) - ((F(i+1)-F(i))/h)*((G(i+1)-G(i))/h)); theta(i+1) = (theta(i) + theta(i+2))/2 - Pr*(h/2)*(theta(i+1)-theta(i))*H(i) + Pr*(h^2)*(S/2)*(((i*h+1)/2)*((theta(i+1)-theta(i))/h)+alpha1*theta(i)) - zeta*Pr*((h^2)/2)*((theta(i) -2*theta(i+1) + theta(i+2))/h^2 - 2*F(i)*H(i)*((theta(i+1)-theta(i))/h)); phi(i+1) = (phi(i) + phi(i+2))/2 + Sc*(h/2)*H(i)*(theta(i+1)-theta(i)) - Sc*(h^2)*(S/2)*(((i*h+1)/2)*((phi(i+1)-phi(i))/2*h)+alpha2*phi(i)) + (Sc/2)*(h^2)*gamma*phi(i); end H1(1) = H(1); F1(1) = F(1); G1(1) = G(1); theta1(1) = theta(1); phi1(1) = phi(1);
F1(N+2) = F(N+2); G1(N+2) = G(N+2); theta1(N+2) = theta(N+2); phi1(N+2) = phi(N+2); end end Index exceeds the number of array elements. Index must not exceed 1. Line 39
  댓글 수: 6
Torsten
Torsten 2024년 6월 23일
편집: Torsten 2024년 6월 23일
Even without formatting, I see that the main problem is not solved, namely that you want to compute values F(i+1), G(i+1) and theta(i+1) with values F(k), G(k) and theta(k) with k >= i+1. That doesn't make sense.
And the division /(2*h) instead of /2*h has also not been corrected.
You should include a mathematical description of your problem - maybe someone can give you a hint for a valid solution.
Walter Roberson
Walter Roberson 2024년 6월 24일
First press the button marked '>' in the CODE section of the edit toolstrip. This will open a code edit region. Then copy and paste the code from your editor into the code edit region that was opened.

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Signal Generation에 대해 자세히 알아보기

태그

제품


릴리스

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by