Behöver hjälp av Matlab kunniga

Permalänk
Medlem

Behöver hjälp av Matlab kunniga

Hej håller på med några uppgifter i matlab som jag inte förstår hur jag ska lösa.

Först ska man slumpa fram en matris 4x7 som jag har gjort med kommando A=rand(4,7)

Sen tar det stopp för mig för man ska verifiera rangsatsen samt bestämma bas och nollrummet och jag hittar inte vilket kommandon man ska använda.

Visa signatur

AMD Ryzen 3900X, Gigabyte X570 AORUS ELITE,
G.Skill Flare X 32GB 3200MHz, FOCUS GX 850W, SSD 125 och 500GB, HDD 2tb, Gainward GeForce RTX 4090 Phantom
Laptops:MSI GT73VR 6RE Titan

Permalänk
Medlem

@hellmix: Läs i linalg-boken, var för länge sen jag läste det. Uppgiften har mer med linjär algebra än matlab att göra.

Visa signatur

| R7 5800X3D @-30 i PBO2 + Noctua NH-U12s | ROG Strix B450-F | 32GB HyperX Fury Black 3200MHz | RTX 3080 TUF OC | Define R4 + Noctua NF-A14 (x2) & NF-S12A + Noctua NA-FC1 | Corsair RM 850X v2 | Samsung 970 Evo Plus 1TB + Crucial MX300 2TB | LG 27GL850

Permalänk
Medlem
Skrivet av klirre:

@hellmix: Läs i linalg-boken, var för länge sen jag läste det. Uppgiften har mer med linjär algebra än matlab att göra.

Jag ska fortfarande göra uppgiften i Matlab...

Visa signatur

AMD Ryzen 3900X, Gigabyte X570 AORUS ELITE,
G.Skill Flare X 32GB 3200MHz, FOCUS GX 850W, SSD 125 och 500GB, HDD 2tb, Gainward GeForce RTX 4090 Phantom
Laptops:MSI GT73VR 6RE Titan

Permalänk
Medlem

@hellmix: Absolut är meningen att lösa det i matlab, men nollrummet osv. är typiska linjär algebra termer och det finns inget "nollrumskommando" i matlab.

Jag är som sagt duktigt ringrostig på linalg och har läst 2min om nollrum på wikipedia, där står det att nollrummet kan beskrivas som att Ax = 0 har icke-triviala lösningar. Alltså ska du lösa ut Ax = 0 i matlab, eller?

EDIT: Basen räknar man fram via determinantsatsen, som säger att vektorerna i matrisen är oberoende om determinanten är skild från noll. Alltså ska du räkna ut determinanten och kolla om den är skild från noll. Determinanten har ett kommando, har för mig att det är det(A).

Allt detta fick jag via linjär algebra, inte matlab. Om det sen är rätt eller fel törs jag inte svära på.

Visa signatur

| R7 5800X3D @-30 i PBO2 + Noctua NH-U12s | ROG Strix B450-F | 32GB HyperX Fury Black 3200MHz | RTX 3080 TUF OC | Define R4 + Noctua NF-A14 (x2) & NF-S12A + Noctua NA-FC1 | Corsair RM 850X v2 | Samsung 970 Evo Plus 1TB + Crucial MX300 2TB | LG 27GL850

Permalänk
Medlem
Skrivet av klirre:

@hellmix: Absolut är meningen att lösa det i matlab, men nollrummet osv. är typiska linjär algebra termer och det finns inget "nollrumskommando" i matlab.

Jag är som sagt duktigt ringrostig på linalg och har läst 2min om nollrum på wikipedia, där står det att nollrummet kan beskrivas som att Ax = 0 har icke-triviala lösningar. Alltså ska du lösa ut Ax = 0 i matlab, eller?

yepp men efter mycket sökande så hittade jag tillslut kommandon som löd: rref, null och rank

Visa signatur

AMD Ryzen 3900X, Gigabyte X570 AORUS ELITE,
G.Skill Flare X 32GB 3200MHz, FOCUS GX 850W, SSD 125 och 500GB, HDD 2tb, Gainward GeForce RTX 4090 Phantom
Laptops:MSI GT73VR 6RE Titan

Permalänk
Medlem

@hellmix: Där ser man, jag grävde antagligen inte djupt nog i matlabkommando-listan när jag läste kursen. Det var mer logiskt att bara lösa det som linalgen lärde ut fast med datorkraft.

Visa signatur

| R7 5800X3D @-30 i PBO2 + Noctua NH-U12s | ROG Strix B450-F | 32GB HyperX Fury Black 3200MHz | RTX 3080 TUF OC | Define R4 + Noctua NF-A14 (x2) & NF-S12A + Noctua NA-FC1 | Corsair RM 850X v2 | Samsung 970 Evo Plus 1TB + Crucial MX300 2TB | LG 27GL850

Permalänk

Haha det känns här som att papper-och-penna- och lösa-på-dator-generationerna möts. ^^

Kan förövrigt som van matlabanvändare säga att MATLAB har kommandon för det mesta, och tåls att googlas på.

Är f.ö. tillgänglig för annan matlab-hjälp om behovet skulle uppstå.

Skickades från m.sweclockers.com

Autocorrect
Visa signatur

i7 8700K | 32 GB DDR4-3200 | Aorus Z390 Pro ITX | RTX 3080 FE
Corsair SF600 | Louqe Ghost S1 Arctic | Loctua

MacBook Pro 14", basmodell

Permalänk
Medlem
Skrivet av ChineseBoy:

Haha det känns här som att papper-och-penna- och lösa-på-dator-generationerna möts. ^^

Kan förövrigt som van matlabanvändare säga att MATLAB har kommandon för det mesta, och tåls att googlas på.

Är f.ö. tillgänglig för annan matlab-hjälp om behovet skulle uppstå.

Skickades från m.sweclockers.com

Vet att det finns kommando till det mesta annars skulle jag inte fått det som uppgift att lösa uppgifter med matlabb x). Men det gäller bara veta vart man ska söka och hur man ska skriva upp dem.

Fastnade nu på nästa som jag inte får till. Definera g(x)=f´´(x)-2f´(x)+26f(x) med funktionshandtag. samt plotta den

funktionshandtag får jag till g=@fpp(x)-2*fp(x)+26*f(x)

men får inte till plotringen kommandot är fplot men sen står det still för mig

Visa signatur

AMD Ryzen 3900X, Gigabyte X570 AORUS ELITE,
G.Skill Flare X 32GB 3200MHz, FOCUS GX 850W, SSD 125 och 500GB, HDD 2tb, Gainward GeForce RTX 4090 Phantom
Laptops:MSI GT73VR 6RE Titan

Permalänk
Medlem
Skrivet av ChineseBoy:

Haha det känns här som att papper-och-penna- och lösa-på-dator-generationerna möts. ^^

Kan förövrigt som van matlabanvändare säga att MATLAB har kommandon för det mesta, och tåls att googlas på.

Är f.ö. tillgänglig för annan matlab-hjälp om behovet skulle uppstå.

Skickades från m.sweclockers.com

Tack, känns bra att bli kallad gammaldags trots att jag har ett par år kvar till 30, men när jag tänker efter är det snart 10 år sen jag läste linjär algebra m. MATLAB

Problemet ligger nog i bristande MATLAB- och linalg-kunskaper än nåt annat, jag inverterade matriser och lite annat med kommandon men i övrigt betraktade jag MATLAB som ett programmeringsspråk och löste problemen med loopar och if-satser under studietiden.

Numera kladdar jag bara i cad-program och har inte behövt räkna med matriser på ett bra tag.

Visa signatur

| R7 5800X3D @-30 i PBO2 + Noctua NH-U12s | ROG Strix B450-F | 32GB HyperX Fury Black 3200MHz | RTX 3080 TUF OC | Define R4 + Noctua NF-A14 (x2) & NF-S12A + Noctua NA-FC1 | Corsair RM 850X v2 | Samsung 970 Evo Plus 1TB + Crucial MX300 2TB | LG 27GL850

Permalänk
Skrivet av hellmix:

Vet att det finns kommando till det mesta annars skulle jag inte fått det som uppgift att lösa uppgifter med matlabb x). Men det gäller bara veta vart man ska söka och hur man ska skriva upp dem.

Fastnade nu på nästa som jag inte får till. Definera g(x)=f´´(x)-2f´(x)+26f(x) med funktionshandtag. samt plotta den

funktionshandtag får jag till g=@fpp(x)-2*fp(x)+26*f(x)

men får inte till plotringen kommandot är fplot men sen står det still för mig

fplot används ju primärt för att plotta symboliska funktioner, så då bör ju lämpligen f differentieras symboliskt, och inte numeriskt. Dessutom så verkar den där differentialekvationen sakna lite information. Vad är ens initialvärdena? Jag antar att du inte har fått f(x)?

Visa signatur

i7 8700K | 32 GB DDR4-3200 | Aorus Z390 Pro ITX | RTX 3080 FE
Corsair SF600 | Louqe Ghost S1 Arctic | Loctua

MacBook Pro 14", basmodell

Permalänk
Medlem
Skrivet av ChineseBoy:

fplot används ju primärt för att plotta symboliska funktioner, så då bör ju lämpligen f differentieras symboliskt, och inte numeriskt. Dessutom så verkar den där differentialekvationen sakna lite information. Vad är ens initialvärdena? Jag antar att du inte har fått f(x)?

Frågan lyder bara Definiera g(x)=f´´(x)-2f´(x)+26f(x) , också denna via funktionshandtag. Plotta y=g(x) på intervallet 0, 10 .

Visa signatur

AMD Ryzen 3900X, Gigabyte X570 AORUS ELITE,
G.Skill Flare X 32GB 3200MHz, FOCUS GX 850W, SSD 125 och 500GB, HDD 2tb, Gainward GeForce RTX 4090 Phantom
Laptops:MSI GT73VR 6RE Titan

Permalänk
Skrivet av hellmix:

Frågan lyder bara Definiera g(x)=f´´(x)-2f´(x)+26f(x) , också denna via funktionshandtag. Plotta y=g(x) på intervallet 0, 10 .

Jag kommer inte på ett ens matematisk sätt att plotta den där differentialekvationen på. Den måste ha randvillkor för att vara lösbar, ens numeriskt.

Såvitt jag har tolkat uppgiften så gäller det att plotta lösningar av g med avseende på x, men det kan jag som sagt inte göra utan att veta mer om f...

Visa signatur

i7 8700K | 32 GB DDR4-3200 | Aorus Z390 Pro ITX | RTX 3080 FE
Corsair SF600 | Louqe Ghost S1 Arctic | Loctua

MacBook Pro 14", basmodell

Permalänk
Medlem
Skrivet av ChineseBoy:

Jag kommer inte på ett ens matematisk sätt att plotta den där differentialekvationen på. Den måste ha randvillkor för att vara lösbar, ens numeriskt.

Såvitt jag har tolkat uppgiften så gäller det att plotta lösningar av g med avseende på x, men det kan jag som sagt inte göra utan att veta mer om f...

Tappade visste ett blad men hittade det nu så ursprunget är f(x)=1+e^x*sin(5x).

Så g(x)=f''(x)-2f'(x)+26f(x)

Får jag till g=@(x)exp(x).*((sin(5*x)+exp(x).*5.*cos(5*x))+exp(x).*(5*cos(5.*x)-25.*sin(5*x)))-2.*exp(x).*sin(5*x)+5*exp(x)*cos(5*x)+26*(1+exp(x).*sin(5*x))

men jag använder * fel någonstans men hittar inte var

Man ska plotta den efteråt och då skriver jag kommando
x=0:.0001:10;
plot(x,g(x))

Visa signatur

AMD Ryzen 3900X, Gigabyte X570 AORUS ELITE,
G.Skill Flare X 32GB 3200MHz, FOCUS GX 850W, SSD 125 och 500GB, HDD 2tb, Gainward GeForce RTX 4090 Phantom
Laptops:MSI GT73VR 6RE Titan

Permalänk
Medlem
Skrivet av hellmix:

Tappade visste ett blad men hittade det nu så ursprunget är f(x)=1+e^{x}\sin(5x).

Så g(x)=f''(x)-2f'(x)+26f(x)

Får jag till g=@(x)exp(x).*((sin(5*x)+exp(x).*5.*cos(5*x))+exp(x).*(5*cos(5.*x)-25.*sin(5*x)))-2.*exp(x).*sin(5*x)+5*exp(x)*cos(5*x)+26*(1+exp(x).*sin(5*x))

men jag använder * fel någonstans men hittar inte var

Man ska plotta den efteråt och då skriver jag kommando
x=0:.0001:10;
plot(x,g(x))

f = @(x) 1 + exp(x)/sin(5*x);
fd = @(x) diff(f,x);
fdd = @(x) diff(diff(f,x));
syms x
g = fdd(x) - 2*fd(x) + 26*f(x);

figure(1)
fplot(g,[0 10])

EDIT: Ingen expert men tror det blir rätt.

Permalänk
Medlem
Skrivet av jJnte:

f = @(x) 1 + exp(x)/sin(5*x);
fd = @(x) diff(f,x);
fdd = @(x) diff(diff(f,x));
syms x
g = fdd(x) - 2*fd(x) + 26*f(x);

figure(1)
fplot(g,[0 10])

tack så mycket det där hjälpte en otroligt mycket speciellt att man slapp skriva ut varenda liten grej. men använda visst fel plottringskommando istället för fplot så ska man använda x=linspace(0,10,1000);plot(x,g(x)) hur skriver man om fplot till det?

Visa signatur

AMD Ryzen 3900X, Gigabyte X570 AORUS ELITE,
G.Skill Flare X 32GB 3200MHz, FOCUS GX 850W, SSD 125 och 500GB, HDD 2tb, Gainward GeForce RTX 4090 Phantom
Laptops:MSI GT73VR 6RE Titan

Permalänk
Medlem
Skrivet av hellmix:

tack så mycket det där hjälpte en otroligt mycket speciellt att man slapp skriva ut varenda liten grej. men använda visst fel plottringskommando istället för fplot så ska man använda x=linspace(0,10,1000);plot(x,g(x)) hur skriver man om fplot till det?

Visar det med ett exempel
y = @(x) sin(x);
x = 0:0.1:10;
plot(x, y(x))

Permalänk
Medlem
Skrivet av jJnte:

Visar det med ett exempel
y = @(x) sin(x);
x = 0:0.1:10;
plot(x, y(x))

f=@(x)1+exp(x)/sin(5*x)
syms x
fd=@(x)diff(f,x);
fdd=@(x)diff(diff(f,x));
g=fdd(x)-2*fd(x)+26*(x);
x=0:10:1000;
plot(x,g(x))

Eftersom jag inte har y så borde det ersättas av g. men något är fel får Array indices must be positive integers or logical values. Error in sym/subsref (line 870)

Man känner verkligen att man är grön på matlab och det här är sånt man ska klara av utan någon kurs eller någon annan fördjupning.

Visa signatur

AMD Ryzen 3900X, Gigabyte X570 AORUS ELITE,
G.Skill Flare X 32GB 3200MHz, FOCUS GX 850W, SSD 125 och 500GB, HDD 2tb, Gainward GeForce RTX 4090 Phantom
Laptops:MSI GT73VR 6RE Titan

Permalänk
Skrivet av hellmix:

Tappade visste ett blad men hittade det nu så ursprunget är f(x)=1+e^x*sin(5x).

Så g(x)=f''(x)-2f'(x)+26f(x)

Får jag till g=@(x)exp(x).*((sin(5*x)+exp(x).*5.*cos(5*x))+exp(x).*(5*cos(5.*x)-25.*sin(5*x)))-2.*exp(x).*sin(5*x)+5*exp(x)*cos(5*x)+26*(1+exp(x).*sin(5*x))

men jag använder * fel någonstans men hittar inte var

Man ska plotta den efteråt och då skriver jag kommando
x=0:.0001:10;
plot(x,g(x))

Haha! Sa ju att något saknades.

Efter lite pillande med koden så får jag följande att funka, dock är plotten ganska intressant. Reserverar mig för eventuella fel, för det är kodat på mobilen.

--------------------------------------
% deklarera x som symbolisk
syms x

% f är en symbolisk funktion, inte en function handle
f = 1 + exp(x) * sin(5*x);

% derivera symboliskt
fd = diff(f,x);
fdd = diff(f, 2, x);

g = fdd - 2 * fd + 26 * f;

% konvertera tillbaka till function handle
y = matlabFunction(g);

x=linspace(0,10,100);
plot(x,y(x))
--------------------------------------

Forumet borde stödja kodformatering i inlägg.
Visa signatur

i7 8700K | 32 GB DDR4-3200 | Aorus Z390 Pro ITX | RTX 3080 FE
Corsair SF600 | Louqe Ghost S1 Arctic | Loctua

MacBook Pro 14", basmodell

Permalänk

Bör dock tilläggas att detta inte är en helt korrekt lösning av uppgiften då den vill att du använder dig av en function handle från grunden. Föreslår då att du differentierar en function handle numeriskt över ett intervall 0,10 istället.

Och ja, håller med om att detta kanske inte är nybörjargrejer...

Visa signatur

i7 8700K | 32 GB DDR4-3200 | Aorus Z390 Pro ITX | RTX 3080 FE
Corsair SF600 | Louqe Ghost S1 Arctic | Loctua

MacBook Pro 14", basmodell

Permalänk
Medlem
Skrivet av ChineseBoy:

Haha! Sa ju att något saknades.

Efter lite pillande med koden så får jag följande att funka, dock är plotten ganska intressant. Reserverar mig för eventuella fel, för det är kodat på mobilen.

--------------------------------------
% deklarera x som symbolisk
syms x

% f är en symbolisk funktion, inte en function handle
f = 1 + exp(x) * sin(5*x);

% derivera symboliskt
fd = diff(f,x);
fdd = diff(f, 2, x);

g = fdd - 2 * fd + 26 * f;

% konvertera tillbaka till function handle
y = matlabFunction(g);

x=linspace(0,10,100);
plot(x,y(x))
--------------------------------------

Fick error usin plot Invalide data plot

när jag testade ditt sätt.

Visa signatur

AMD Ryzen 3900X, Gigabyte X570 AORUS ELITE,
G.Skill Flare X 32GB 3200MHz, FOCUS GX 850W, SSD 125 och 500GB, HDD 2tb, Gainward GeForce RTX 4090 Phantom
Laptops:MSI GT73VR 6RE Titan

Permalänk
Skrivet av hellmix:

Fick error usin plot Invalide data plot

när jag testade ditt sätt.

Dear är ju rätt så intressant med tanke på att jag skrev och testade koden i MATLAB nyss

Skickades från m.sweclockers.com

Visa signatur

i7 8700K | 32 GB DDR4-3200 | Aorus Z390 Pro ITX | RTX 3080 FE
Corsair SF600 | Louqe Ghost S1 Arctic | Loctua

MacBook Pro 14", basmodell

Permalänk
Medlem
Skrivet av ChineseBoy:

Dear är ju rätt så intressant med tanke på att jag skrev och testade koden i MATLAB nyss

Skickades från m.sweclockers.com

%deklarera x som symbolisk
syms x
% f är en symbolisk funktion, inte en function handle
f=1+exp(x)*sin(5*x);
%derivera symbolisk
fd=diff(f,x);
fdd=diff(f,2,x);
g=fdd-2*fd+26*f
y=matlabFunction(g);
x=linspace(0,10,1000);
plot(x,y(x))

så skrev jag in den i matlab står det Error using symengine>@()2.6e1 Too many input arguments.

Visa signatur

AMD Ryzen 3900X, Gigabyte X570 AORUS ELITE,
G.Skill Flare X 32GB 3200MHz, FOCUS GX 850W, SSD 125 och 500GB, HDD 2tb, Gainward GeForce RTX 4090 Phantom
Laptops:MSI GT73VR 6RE Titan

Permalänk
Skrivet av hellmix:

%deklarera x som symbolisk
syms x
% f är en symbolisk funktion, inte en function handle
f=1+exp(x)*sin(5*x);
%derivera symbolisk
fd=diff(f,x);
fdd=diff(f,2,x);
g=fdd-2*fd+26*f
y=matlabFunction(g);
x=linspace(0,10,1000);
plot(x,y(x))

så skrev jag in den i matlab står det Error using symengine>@()2.6e1 Too many input arguments.

Hahaha det är för att din lärare är ett troll. uttrycket f''(x) - 2f'(x) + 26f(x) evaluerar till konstanten 26 för f(x) = (1 + exp(x) * sin(5*x), alltså är det inte konstigt att function handlen inte kan ta argument; y är ju oberoende av x!

Visa signatur

i7 8700K | 32 GB DDR4-3200 | Aorus Z390 Pro ITX | RTX 3080 FE
Corsair SF600 | Louqe Ghost S1 Arctic | Loctua

MacBook Pro 14", basmodell