[MATLAB] Rozwiązanie równanie Poissona

kasiunia206
Użytkownik
Użytkownik
Posty: 37
Rejestracja: 7 lis 2011, o 14:43
Płeć: Kobieta
Lokalizacja: Gdańsk
Podziękował: 4 razy

[MATLAB] Rozwiązanie równanie Poissona

Post autor: kasiunia206 »

Witam, mam dwa kody i uruchamiam drugi z nich, by obliczyć rozwiąznie równania Poissona i pojawia mi sie błąd, co mam nie tak?
pierwszy kod:

Kod: Zaznacz cały

function [u,x,y]=fdpoisson(pfunc,bfunc,a,b,n)

h=(b-a)/(n+1))% rozstaw siatki

[x,y]=meshgrin(a:h:b);

% liczenie u z warunkami brzegowymi
 ub=zeros(n,n);
 idx=2:n+1;
 idy=2:n+1;
 ub(:,1)=feval(bfunc,x(idx,1),y(idy,1));
 ub(:,n)=feval(bfunc,x(idx,n+2),y(idy,n+2));
 ub(:,1)= ub(1,1:n)+feval(bfunc,x(1,idx),y(1,idy));
 ub(:,1)= ub(1,1:n)+feval(bfunc,x(n+2,idx),y(n+2,idy));
 
 %zamiana ub na wektor
 ub=(1/h^2)*reshape(u,b,n*n,1);
 f=feval(pfunc,x(idx,idy),y(idx,idy));
 f=reshape(f*n*n,1);
 
 %macierz
 z=[-2;1;zeros(n-2,1)];
 D2x=1/h^2*kron(toeplitz(z,z),eye(n));
 D2y=1/h^2*kron(toeplitz(n),eye(z,z));
 
 %rozwiąznia układu
 u=(D2x+D2y)\(f-ub);
 % konwersja kolumny
 u=reshape(u,n,n);
 % dołączamy warunki brzegowe Dirichleta
 u=[[feval(bfunc,x(1,1:n+2),y(1,1:n+2))];...
     [[feval(bfunc,x(2:n+1,1),y(2:n+1,1))]u...
     [feval(bfunc,x(2:n+1,n+2),y(2:n+1,n+2))]];...
     [feval(bfunc,x(n+2,1:n+2),y(n+2,1:n+2))]];
i drugi

Kod: Zaznacz cały

function testFdPoisson

f = inline('6*x.*y.*(1-y).-2*x^3');
g = inline('y.*(1-y).*x.^3');

[u,x,y]=fd2poisson(f,g,0,1,11);
h=x(1,2)-x(1,1);

%wykres
figure, set(gcf,'DefaultAxesFontSize',8,'PaperPoisition',[0 0 3.5 3.5]),
mesh(x,y,u), colormap([0 0 0]), xlabel('x'),ylabel('y'),zlabel('u(x,y)'),
title(strcat('Rozwiązanie numeryczne równania Poissona,h=',num2str(h)));

%plot error
figure, set(gcf,'Domyślny rozmiar czcionki osi',8,'PaperPosition',[0 0 1.5 1.5]),
mesh(x,y,u-g(x,y)), coloram([0 0 0 ], xlabel('x'),ylabel('y'),zlabel('error')),
title(stract('error, h=',num2str(h)));
Po uruchomieniu programy pokazuje mi komunikat:

Kod: Zaznacz cały

Undefined function or method 'fd2poisson' for input arguments of type 'inline'
jak to zmienić by działało??? Bo już skończyły mi się pomysły
Ostatnio zmieniony 2 gru 2012, o 21:08 przez Afish, łącznie zmieniany 1 raz.
Powód: Tagi, nazwa tematu.
Awatar użytkownika
steal
Użytkownik
Użytkownik
Posty: 1043
Rejestracja: 7 lut 2007, o 18:35
Płeć: Mężczyzna
Lokalizacja: Białystok|Warszawa
Podziękował: 6 razy
Pomógł: 160 razy

[MATLAB] Rozwiązanie równanie Poissona

Post autor: steal »

Nie masz zdefiniowanej funkcji

Kod: Zaznacz cały

fd2poisson
. Porównaj jeszcze raz tą nazwę z nazwą funkcji z pierwszego pliku
ODPOWIEDZ