
General Chat MCB's Coffee House: Pull up a seat, and grab your favorite caffeinated beverage. Nonpaintball related chat within. 
 Thread Tools 
11112012, 03:16 PM  #1 (permalink) 
MCB Member Join Date: Nov 2011  Matlab help
Ok so for my applied math class, we are writing a matlab script to preform finite differencing on a rectangular heat fin to determine the temperature profile of the heat with with distance. Now before anyone says it I know this is much more easily done in solid works but that apparently not the point according to my prof. The heat fin in question can experience 3 boundry conditions on the outside edge of the fin, one its insulated, 2 its at ambient temperature, 3 convection occurs. The below is what I have so far but the values for y and t are a little funky. Any help and explanations would be greatly appreciated. n=input('type number of intervals: '); bc=input('Boundary conditions: for an insulated system, type 1. if outer edge is at ambient temperature, type 2. if convection occurs at the outer edge, type 3: '); tb=298; %temp of base of fin tsurr=273; %temp of surroundings k=1; %thermal condctivity h=1; %heat transfer thck=1; %thickness of fin l=1; %length of fin w=1; %width of fin m=1; %values derived from above a=w*thck; %crosssectional area of fin dz=l/n; %interval size p=2*w+2*thck; %perimeter of fin % initial equation is T''2hP/ka(TTa)=0 % after transform equation becomes y''(2hpl^2/Ka)y=0 % y = TTsurr/TbTsurr, derivatives of y are with respect to z (z=x/l) alpha=(2*h*p*l*l)/(k*a); % set y and solution vector sizes. set x matrix size z=zeros(n); y=zeros(n,m); g=zeros(n,m); x=zeros(n,m); t=zeros(n,m); z(1,1)=1; g(1)=1; % build matrix between boundaries for i=2:1:n1 z(i,i1)=l/dz^2; z(i,i)=alpha+2/dz^2; z(i,i+1)=l/dz^2; g(i)=0; end % establish boundary conditions for i=n if bc==1 z(i,i1)=2/dz^2; z(i,i)=alpha(2/dz^2); end if bc==2 z(i,i1)=0; z(i,i)=1; end if bc==3 z(i,i1)=2/dz^2; z(i,i)=alpha(2/dz^2)(2*h*l)/(k*dz); end end % Implement Thomas's Algorithm to solve for i=2:1:n z(i,i)= z(i,i)(z(i,i1)/z(i1,i1))*z(i1,i); g(i)=g(i)(z(i,i1)/z(i1,i1))*g(i1); z(i,i1)=0; end y(n)=g(n)/z(n,n); for i=n1:1:1 y(i)=(g(i)z(i,i+1)*y(i+1))/z(i,i); end x(1)=0; for i=2:1:n+1 x(i)=x(i1)+dz; end 
11112012, 03:29 PM  #2 (permalink) 
The Millrat Join Date: Feb 2007 
Haha, I just spent my morning writing matlab code, I've still got a bit to go so I feel your pain... What exactly do you mean by funky y and t values, do you have the equations for which you are trying solve? Also be sure to include the following code at the top of you code... clc; clear all; This will clear any previous calculations done so they don't interfere with your code as it runs.
__________________ Custom Parts Machining... Feel Free to Contact "All that is necessary for evil to succeed is for good men to do nothing" God Bless America 
11112012, 03:45 PM  #3 (permalink) 
The Millrat Join Date: Feb 2007 
What is you code supposed to output, when I run it, I enter a number of intervals and a condition (1,2 or 3) and the program runs but I get nothing out of it.
__________________ Custom Parts Machining... Feel Free to Contact "All that is necessary for evil to succeed is for good men to do nothing" God Bless America 
11112012, 04:12 PM  #4 (permalink)  
Pronounced Hooper Join Date: Jan 2010 Location: Minnesnowta 
I would give necessary body parts to be fluent in matlab. In half of my classes we're expected to know how to use it even though we've never been taught.
__________________ On the subject of Holy water paintballs: Quote:
 
11112012, 04:26 PM  #5 (permalink) 
The Millrat Join Date: Feb 2007  My first introduction to matlab was in thermal physics... Professor walked in, handed us an assignment to be done in matlab, my group got tasked with writing a hard disk fluid simulation and none of us had ever seen or used matlab in our lives... since then though, I've become fairly fluent in it and it is very helpful once you get the hang of it.
__________________ Custom Parts Machining... Feel Free to Contact "All that is necessary for evil to succeed is for good men to do nothing" God Bless America 
11112012, 04:37 PM  #6 (permalink) 
MCB Member Join Date: Nov 2011 
By funky i mean the values alternate between a positive and negative values, I am aware of the clear and clc part. The number of intervals could be as small as five and as large as 10k all it does is generate a better approximation. The issue with the alternating values is that the graphs that result when plotted either converge on a value or form a hyperbola, they should however form a some thing similiar to an expential decay. I am attaching a link to a similiar problem that only incorporates the second boundry condition. the example is halfway down in the link. https://profjrwhite.com/matlab_course...x/fd_intro.pdf Duncan 
11112012, 04:52 PM  #7 (permalink)  
The Millrat Join Date: Feb 2007  Quote:
and for further help, writing any kind of code always requires the proper material to assist in programming...
__________________ Custom Parts Machining... Feel Free to Contact "All that is necessary for evil to succeed is for good men to do nothing" God Bless America  
11112012, 04:55 PM  #8 (permalink) 
The Millrat Join Date: Feb 2007 
Could you just insert in absolute value command when collecting y value data to fix the issue? so where ever you calculate y in you code instead of the following... y = "code"; do y = abs("code");
__________________ Custom Parts Machining... Feel Free to Contact "All that is necessary for evil to succeed is for good men to do nothing" God Bless America 