|
I have copied this code into 'Embedded MATLAB function block' and I would like to know what are the input here for 'f1,f2,a,b,h,tol,max1'?
This is how your code should look like i believe after removing three small mistakes in your code
1. Remove Semicolon in line one
2. while((err>tol)&(cnt<=max1)) is not valid I guess but with '&&' is valid
3. Add semicolon in the last line
alfann <alfann.net@hotmail.com> wrote in message <2044399501.297809.1267534567064.JavaMail.root@gallium.mathforum.org>...
> could anyone guid me to run this code please?
>
>
>
>
>
> function U=dirich(f1,f2,a,b,h,tol,max1);
>
>
>
>
> n=fix(a/h)+1;
> m=fix(b/h)+1;
> ave=(a*(feval(f1,0)+feval(f2,0)))/(2*a);
> U=ave*ones(n,m);
>
> %Boundary Conditions
> U(1,1:m)=feval(f3,0:h:(m-1)*h)';
> U(n,1:m)=feval(f4,0:h:(m-1)*h)';
> U(1:n,1)=feval(f1,0:h:(n-1)*h)';
> U(1:n,m)=feval(f2,0:h:(n-1)*h)';
> U(1,1)=(U(1,2)+U(2,1))/2;
> U(1,m)=(U(1,m-1)+U(2,m))/2;
> U(n,1)=(U(n-1,1)+U(n,2))/2;
> U(n,m)=(U(n-1,m)+U(n,m-1))/2;
>
> %SOR parameter
> w=4/(2+sqrt(4-(cos(pi/(n-1))+cos(pi/(m-1)))^2));
>
> %Refine approximations and sweep operator throughout the grid
> err=1;
> cnt=0;
> while((err>tol)&(cnt<=max1))
> err=0;
> for j=2:m-1
> for i=2:n-1
> relx=w*(U(i,j+1)+U(i,j-1)+U(i+1,j)+U(i-1,j)-4*U(i,j))/4;
> U(i,j)=U(i,j)+relx;
> if (err<=abs(relx))
> err=abs(relx);
> end
> end
> end
> cnt=cnt+1;
> end
> U=flipud(U')
>
>
>
>
>
>
>
>
> becuase I don't know about the method to run the "FUNCTION" in matlab...
> Please help me...
> I am waiting for everyone who like to help me.....
|