Probléme en matlab

arita Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
 Toby -
Bonjour,j'ai un script de la methode itérative : methode de jacobi programmée en matlab quand j' essaye de l'excuter il m'affiche l' erreur"??? Error: File: C:\matlabR12\work\gradfixe.m Line: 29 Column: 1
A function declaration cannot appear within a script M-file."
voici le script si quelqu'un peut le corriger:

%programme principal
n=input('donner le nombre de points de discrétisations N : ');
while(n<=0 )
disp('nombre de points de discrétisations doit être strictement positif ');
n=input('nombre de points de discrétisations : ');
end
epsilon=input('donner epsilon :')
h=2/(n+1) ;
A=2*eye(n)-diag(ones((n-1),1),1)-diag(ones((n-1),1),-1)
x(1)=-1 ;f(1)=1 ;b(1)=h*h ;
for i=2 :n+1
x(i)=-1+((i-1)*h)
val=exp(x(i)) ;
f(i)=val ;
b(i)=h*h*f(i) ;
end
na=input(' donner le nombre des alphas pour le traçage de la courbe :')
for i=1 :na
alpha(i) = input ('donner alpha: ');

[v]=gradfixe(A,b,n,alpha,err) ;
nit(i)=v ;
end
plot(nit)
title('Nit=f(a)')
Xlabel('a')
Ylabel('Nit')

function[iter]=gradfixe(A,b,dim,alpha,tol)
% Resolution de Ax=b par la methode du gradient conjugue
clear
close all

x0=ones(dim,1);

% initialisation

r=b-A*x0;
k=0;

% programme principal

xprec=x0;
rprec=r;
pprec=r;
normerprec=norm(r);
nor(1)=normerprec;
while normerprec>tol,
prod=A*pprec;
xsuiv=xprec+alpha*pprec;
rsuiv=rprec-alpha*prod;
beta=(norm(rsuiv))^2/(normerprec)^2;
psuiv=rsuiv+beta*pprec;

xprec=xsuiv;
rprec=rsuiv;
normerprec=norm(rprec);
nor(k+2)=normerprec;
pprec=psuiv;
k=k+1;
end
iter=k ;
x=xprec;
end

1 réponse

Toby
 
Bonjour,

Comme tu as pas de réponse, essaye plutot le forum MATLAB :
https://www.developpez.net/forums/f148/environnements-developpement/matlab/
0