Question exercice 3 P20

Question exercice 3 P20

von Loechner Antoine -
Anzahl Antworten: 3

Bonjour,
J'essaye de faire l'exercice 3 du final P20, mais je ne tombe pas sur le résultat attendu.
Voici mon code :

data = [ 0. 1.0140272
1. 0.3539748
2. -0.2049914
3. -0.2787802
4. -0.1863459
5. -0.095575
6. -0.0918984
7. -0.0146713
8. -0.0536165
9. 0.0238807
10. -0.0903517
0. 0.9910492
1. 0.4189767
2. -0.1106721
3. -0.2660769
4. -0.1800888
5. -0.0920536
6. -0.099392
7. -0.0225214
8. 0.0098232
9. -0.0368559
10. -0.0123621
0. 0.9901843
1. 0.3558912
2. -0.099514
3. -0.2344031
4. -0.1836291
5. -0.0982159
6. -0.1151818
7. -0.0462578
8. -0.0138438
9. -0.0109252
10. 0.0142542];


function r = resid(x,n)
a=x(1);
b=x(2);
c=x(3);
r = (a+b*t+c*t.^2).*exp(-t) - y;
endfunction

clf
t=data(:,1)
y=data(:,2)
plot(t,y,"o")

x0 = [1;1;1];
x = lsqrsolve(x0, resid, length(y));

a=x(1);
b=x(2);
c=x(3);
plot(t,(a+b*t+c*t.^2).*exp(-t));

Et voici la courbe que j'obtiens :

J'ai pensé à une erreur de détermination de la jacobienne par la fonction lsqrsolve. J'ai donc calculé la dérivée du vecteur résidu et l'ai ajouté dans l'appel de lsqrsolve, mais l'erreur suivante s'affiche : Nombre d'arguments d'entrée erroné.

function J=fjac(x) 
    a=x(1);
    b=x(2);
    c=x(3);
    J = (-a+b-b*t+2*c*t-c*t.^2).*exp(-t);
endfunction

x = lsqrsolve(x0, resid, length(y), fjac);

Serait-il possible de me fournir une aide afin que je puisse résoudre mon problème s'il vous plait ?

Merci d'avance,

Cordialement.

Als Antwort auf Loechner Antoine

Re: Question exercice 3 P20

von Roussel Benjamin -
Salut :)

Si tu écris data dans l'ordre ça marche normalement, tiens pour t'éviter les copier-coller) :

data = [ 0. 1.0140272
0. 0.9910492
0. 0.9901843
1. 0.3558912
1. 0.4189767
1. 0.3539748
2. -0.2049914
2. -0.1106721
2. -0.099514
3. -0.2787802
3. -0.2660769
3. -0.2344031
4. -0.1863459
4. -0.1800888
4. -0.1836291
5. -0.095575
5. -0.0982159
5. -0.0920536
6. -0.099392
6. -0.0918984
6. -0.1151818
7. -0.0225214
7. -0.0146713
7. -0.0462578
8. -0.0536165
8. 0.0098232
8. -0.0138438
9. -0.0368559
9. -0.0109252
9. 0.0238807
10. -0.0903517
10. -0.0123621
10. 0.0142542];
Als Antwort auf Roussel Benjamin

Re: Question exercice 3 P20

von Chanet Maxime -
Salut
Sinon, tu peux créer un deuxième vecteur de temps pout tracer la courbe avec.
Ca te permet aussi de rajouter plus de points pour avoir une courbe lisse.

t2=linspace(0,10,1000);
plot(t ,y ,'o' ,t2, (a+b*t2+c*t2^2).*exp(-t2)) ;