Why I am unable to run my program?
    6 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Nur Nadhirah Syed Malik
 il 28 Dic 2021
  
    
    
    
    
    Commentato: Nur Nadhirah Syed Malik
 il 30 Dic 2021
            Hi, I really need help. I cannot run my program. When I run, it shows ' Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 121-by-1'. Please, I really need help.
%Parameters to define the governing casson fluid equation and the
%parameters value range
L = 1; % Length of the artery
maxk= 10; % Number of time steps
tmax = 0.1; % Maximum time
delta_t = tmax/maxk; % Time step
n = 10; % Number of space steps
delta_r = L/n; % Radial direction
Beta1 = 0.025; % Casson fluid parameter
A0 = 0.2; % Amplitude of systolic pressure gradient
A1 = 0.4; % Amplitude of diastolic pressure gradient
omega = pi/4;
%Initial conditions of velocity
for i = 1:n+1
    u(i,1) = 0;
    disp(u(i,1));
end
% Boundary conditions
for j=1:maxk+1
    u(1,j) = 0;
    u(n,j) = 0;
end
% Implementation of the explicit
for j=1:maxk % Time Loop
for i=2:n % Space Loop
S10 = (u(2,j)-2*u(1,j)+u(2,j))/((delta_r)^2);
S20 = (u(2,j)-u(1,j))/(delta_r);
    u(1,j+1) = u(1,j) + delta_t*(A0 + A1*cos(omega*t) + Beta1*((S10) + 1/r* (S20)));
disp(u(1,j+1))
S1 = (u(i+1,j)-2*u(i,j)+u(i-1,j))/((delta_r)^2);
S2 = (u(i+1,j)-u(i,j))/(delta_r);
    u(i,j+1) = u(i,j) + delta_t*(A0 + A1*cos(omega*t) + Beta1*((S1) + 1/r* (S2)));
disp(u(i,j+1))
S1n = (u(n+1,j)-2*u(n,j)+u(n-1,j))/((delta_r)^2);
S2n = (u(n+1,j)-u(n,j))/(delta_r);
    u(n,j+1) = u(n,j) + delta_t*(A0 + A1*cos(omega*t) + Beta1*((S1n) + 1/r* (S2n)));
disp(u(n,j+1))
end
end
%Graphical representation of the velocity at different selected times
plot(u);
%figure(1)
%plot(u(:,1),r,'-',u(:,2),r,'-',u(:,3),r,'-',u(:,6),r,'-')
%tittle('velocity within explicit method')
%xlabel('r')
%label('u')
%legend('dt=1','dt=2','dt=3','dt=6')
2 Commenti
  John D'Errico
      
      
 il 28 Dic 2021
				
      Modificato: John D'Errico
      
      
 il 28 Dic 2021
  
			When you get an error, don't just tell us what you personally think is important. The fact is, you don't know what is important. else you would not be asking this question.
Paste in the COMPLETE error message. EVERYTHING in red. That will tell us which line was the problem. It would allow us to learn that without trying to run your code, stepping through every line to see when it fails, IF it fails.
Anyway, we cannot even try to run your code, since I see the variable t was never defined. So it is not possible to answer your question at the moment. My guess is your problem may be that t is a vector. But how do I know?
If you want help, is there a reason why you would want to make it more difficult (and even impossible) to get help?
Risposta accettata
  Image Analyst
      
      
 il 28 Dic 2021
        Try this:
clc;    % Clear the command window.
close all;  % Close all figures (except those of imtool.)
clearvars;
workspace;  % Make sure the workspace panel is showing.
format long g;
format compact;
fprintf('Beginning to run %s.m ...\n', mfilename);
%Parameters to define the governing casson fluid equation and the
%parameters value range
L = 1; % Length of the artery
maxk= 10; % Number of time steps
tmax = 0.1; % Maximum time
% Define t and r
allTimes = linspace(0, tmax, maxk)
r = 1; % Whatever...?????
delta_t = tmax/maxk; % Time step
n = 10; % Number of space steps
delta_r = L/n; % Radial direction
Beta1 = 0.025; % Casson fluid parameter
A0 = 0.2; % Amplitude of systolic pressure gradient
A1 = 0.4; % Amplitude of diastolic pressure gradient
omega = pi/4;
%Initial conditions of velocity
for i = 1:n+1
    u(i,1) = 0;
    disp(u(i,1));
end
% Boundary conditions
for j=1:maxk+1
    u(1,j) = 0;
    u(n,j) = 0;
end
% Implementation of the explicit
for j=1:maxk % Time Loop
    t = allTimes(j);
    for i=2:n % Space Loop
        S10 = (u(2,j)-2*u(1,j)+u(2,j))/((delta_r)^2);
        S20 = (u(2,j)-u(1,j))/(delta_r);
        u(1,j+1) = u(1,j) + delta_t*(A0 + A1*cos(omega*t) + Beta1*((S10) + 1/r * (S20)));
        disp(u(1,j+1))
        S1 = (u(i+1,j)-2*u(i,j)+u(i-1,j))/((delta_r)^2);
        S2 = (u(i+1,j)-u(i,j))/(delta_r);
        u(i,j+1) = u(i,j) + delta_t*(A0 + A1*cos(omega*t) + Beta1*((S1) + 1/r * (S2)));
        disp(u(i,j+1))
        S1n = (u(n+1,j)-2*u(n,j)+u(n-1,j))/((delta_r)^2);
        S2n = (u(n+1,j)-u(n,j))/(delta_r);
        u(n,j+1) = u(n,j) + delta_t*(A0 + A1*cos(omega*t) + Beta1*((S1n) + 1/r * (S2n)));
        disp(u(n,j+1))
    end
end
%Graphical representation of the velocity at different selected times
plot(u, '-', 'LineWidth', 2);
grid on;
fontSize = 16;
xlabel('space', 'FontSize', fontSize)
ylabel('u', 'FontSize', fontSize)

8 Commenti
Più risposte (1)
  Kevin
      
 il 28 Dic 2021
        I have tried running your code. MATLAB complains the variable "t" is not defined in the line inside the double for-loop:
     u(1,j+1) = u(1,j) + delta_t*(A0 + A1*cos(omega*t) + Beta1*((S10) + 1/r* (S20)));
To debug this kind of problem, use the MATLAB editor to step through the code. You can set breakpoint.
Kevin
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




