1 svar
64 visningar
Cien behöver inte mer hjälp
Cien 1188
Postad: 25 mar 2023 16:33

Lös ekvationssystem (flervar)

Jag har plottat grafen och får 4 skärningar som verkar ligga på ungefär x=-3,-1,0,1.

När jag sedan ska förbättra approximation med Newtons metod så får jag lite problem hur jag ska gå tillväga. Jag följer avisningar enl dokumentet. Är det tänkt att jag ska ta 1 skärning?

Jag skriver koden nedan men får error:

Df=@(x,y)[3*x.^2 2*y;y.*exp(x.*y)+1 x.*exp(x.*y)+1];
x=[-2 ; 2];
kmax=10; tol=0.5e-8;
for k=1:kmax
    h=-Df(x)\f(x);
    x=x+h;
    disp([x' norm(h)])
    if norm(h)<tol, break, end
end

Är det för att vi inte stoppar in något y-värde? vet inte vad jag ska stoppa in dock.

Cien 1188
Postad: 25 mar 2023 18:34 Redigerad: 25 mar 2023 19:35

Har gjort lite ändringar

f1=@(x,y)x.^3+y.^2-1;
f2=@(x,y)exp(x.*y)+x+y-2;
f=@(x)[f1(x);f2(x)];
x=linspace(-7,7);
[X,Y]=meshgrid(x,x);
contour(X,Y,f1(X,Y),[0 0],'b')
hold on
contour(X,Y,f2(X,Y),[0 0],'r')

f1=@(x)x(1).^3+x(2).^2-1;
f2=@(x)exp(x(1).*x(2))+x(1)+x(2)-2;
Df=@(x)[3*x(1)^2 2*x(2);x(2)*exp(x(1)*x(2))+1 x(1)*exp(x(1)*x(2))+1];
f=@(x)[f1(x);f2(x)];

x=[-2.5 ; 3];
kmax=10; tol=0.5e-8;
for k=1:kmax
    h=-Df(x)/f(x);
    x=x+h;
    disp([x' norm(h)])
    if norm(h)<tol, break, end
end

Skrev Jacobianen med en variabel x, gjorde även en 2x1 matrix f(x)=[f1(x);f2(x)];

Får nu följande error

Error using  / 
Matrix dimensions must agree.

Error in Deltre (line 45)
    h=-Df(x)/f(x);

size(Df)=size(f) men får ändå felkoden?

Edit: Det ordna sig genom att ändra snedstrecket åt andra hållet

Svara
Close