mcarterbrown.com

mcarterbrown.com (http://www.mcarterbrown.com/forums/)
-   General Chat (http://www.mcarterbrown.com/forums/general-chat/)
-   -   Matlab help (http://www.mcarterbrown.com/forums/general-chat/218322-matlab-help.html)

dkv23 11-11-2012 03:16 PM

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(T-Ta)=0
% after transform equation becomes y''-(2hpl^2/Ka)y=0
% y = T-Tsurr/Tb-Tsurr, 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:n-1
z(i,i-1)=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,i-1)=2/dz^2;
z(i,i)=-alpha-(2/dz^2);
end
if bc==2
z(i,i-1)=0;
z(i,i)=1;
end
if bc==3
z(i,i-1)=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,i-1)/z(i-1,i-1))*z(i-1,i);
g(i)=g(i)-(z(i,i-1)/z(i-1,i-1))*g(i-1);
z(i,i-1)=0;
end
y(n)=g(n)/z(n,n);
for i=n-1:-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(i-1)+dz;
end

O'Lane 11-11-2012 03:29 PM

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.

O'Lane 11-11-2012 03:45 PM

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.

HOEPER 11-11-2012 04:12 PM

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.

O'Lane 11-11-2012 04:26 PM

Quote:

Originally Posted by HOEPER (Post 2531019)
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.

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.

dkv23 11-11-2012 04:37 PM

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.
http://profjrwhite.com/matlab_course...x/fd_intro.pdf
-Duncan

O'Lane 11-11-2012 04:52 PM

Quote:

Originally Posted by dkv23 (Post 2531032)
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.
http://profjrwhite.com/matlab_course...x/fd_intro.pdf
-Duncan

Alright, I think I see what your talking about, I just ran a data set and exported the x and y vectors into excel and plotted them and got the following...

http://i1141.photobucket.com/albums/...Untitled-1.png

and for further help, writing any kind of code always requires the proper material to assist in programming...

http://i1141.photobucket.com/albums/...2/Photo030.jpg

O'Lane 11-11-2012 04:55 PM

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");

dkv23 11-11-2012 05:39 PM

That might jst work, I will try it and let you know. That would make the graph come out correctly but I am not sure what that would ddo for the integrity of the data?
-Duncan

dkv23 11-11-2012 05:46 PM

Ok so my friend and I tried that and it still results in a data set that jumps around whereas it should supposedly result in a nice curve.
-Duncan


All times are GMT -4. The time now is 06:09 PM.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO
© MCB Network LLC