MATLAB - Algebra
Tot nu toe hebben we gezien dat alle voorbeelden zowel in MATLAB werken als in de GNU, ook wel Octave genoemd. Maar voor het oplossen van elementaire algebraïsche vergelijkingen zijn zowel MATLAB als Octave weinig verschillend, dus we zullen proberen MATLAB en Octave in afzonderlijke secties te behandelen.
We zullen ook de factorisatie en vereenvoudiging van algebraïsche uitdrukkingen bespreken.
Algebraïsche basisvergelijkingen oplossen in MATLAB
De oplossen functie wordt gebruikt voor het oplossen van algebraïsche vergelijkingen. In zijn eenvoudigste vorm neemt de functie solve de vergelijking tussen aanhalingstekens als argument.
Laten we bijvoorbeeld x oplossen in de vergelijking x-5 =0
solve('x-5=0')
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
ans = 5
Je kunt de oplosfunctie ook aanroepen als −
y = solve('x-5 = 0')
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
y = 5
U mag zelfs de rechterkant van de vergelijking niet opnemen −
solve('x-5')
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
ans = 5
Als de vergelijking meerdere symbolen bevat, gaat MATLAB er standaard van uit dat je oplost voor x, maar de functie voor oplossen heeft een andere vorm −
solve(equation, variable)
waar, kunt u ook de variabele vermelden.
Laten we bijvoorbeeld de vergelijking v – u – 3t 2 . oplossen =0, voor v. In dit geval moeten we −
. schrijvensolve('v-u-3*t^2=0', 'v')
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
ans = 3*t^2 + u
Algebraïsche basisvergelijkingen oplossen in octaaf
De roots functie wordt gebruikt voor het oplossen van algebraïsche vergelijkingen in Octave en u kunt bovenstaande voorbeelden als volgt schrijven −
Laten we bijvoorbeeld x oplossen in de vergelijking x-5 =0
Live demoroots([1, -5])
Octave zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
ans = 5
Je kunt de oplosfunctie ook aanroepen als −
Live demoy = roots([1, -5])
Octave zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
y = 5
Kwadratische vergelijkingen oplossen in MATLAB
De oplossen functie kan ook hogere orde vergelijkingen oplossen. Het wordt vaak gebruikt om kwadratische vergelijkingen op te lossen. De functie retourneert de wortels van de vergelijking in een array.
Het volgende voorbeeld lost de kwadratische vergelijking x 2 . op -7x +12 =0. Maak een scriptbestand en typ de volgende code −
eq = 'x^2 -7*x + 12 = 0'; s = solve(eq); disp('The first root is: '), disp(s(1)); disp('The second root is: '), disp(s(2));
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
The first root is: 3 The second root is: 4
Kwadratische vergelijkingen oplossen in octaaf
Het volgende voorbeeld lost de kwadratische vergelijking x 2 . op -7x +12 =0 in octaaf. Maak een scriptbestand en typ de volgende code −
Live demos = roots([1, -7, 12]); disp('The first root is: '), disp(s(1)); disp('The second root is: '), disp(s(2));
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
The first root is: 4 The second root is: 3
Hogere-ordevergelijkingen oplossen in MATLAB
De oplossen functie kan ook hogere orde vergelijkingen oplossen. Laten we bijvoorbeeld een derdegraadsvergelijking oplossen als (x-3) 2 (x-7) =0
solve('(x-3)^2*(x-7)=0')
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
ans = 3 3 7
In het geval van vergelijkingen van hogere orde bevatten wortels lang veel termen. U kunt de numerieke waarde van dergelijke wortels krijgen door ze om te zetten in dubbel. Het volgende voorbeeld lost de vierde orde vergelijking x 4 . op − 7x 3 + 3x 2 − 5x + 9 =0.
Maak een scriptbestand en typ de volgende code −
eq = 'x^4 - 7*x^3 + 3*x^2 - 5*x + 9 = 0'; s = solve(eq); disp('The first root is: '), disp(s(1)); disp('The second root is: '), disp(s(2)); disp('The third root is: '), disp(s(3)); disp('The fourth root is: '), disp(s(4)); % converting the roots to double type disp('Numeric value of first root'), disp(double(s(1))); disp('Numeric value of second root'), disp(double(s(2))); disp('Numeric value of third root'), disp(double(s(3))); disp('Numeric value of fourth root'), disp(double(s(4)));
Wanneer u het bestand uitvoert, wordt het volgende resultaat geretourneerd −
The first root is: 6.630396332390718431485053218985 The second root is: 1.0597804633025896291682772499885 The third root is: - 0.34508839784665403032666523448675 - 1.0778362954630176596831109269793*i The fourth root is: - 0.34508839784665403032666523448675 + 1.0778362954630176596831109269793*i Numeric value of first root 6.6304 Numeric value of second root 1.0598 Numeric value of third root -0.3451 - 1.0778i Numeric value of fourth root -0.3451 + 1.0778i
Houd er rekening mee dat de laatste twee wortels complexe getallen zijn.
Hogere-ordevergelijkingen oplossen in octaaf
Het volgende voorbeeld lost de vierde orde vergelijking x 4 . op − 7x 3 + 3x 2 − 5x + 9 =0.
Maak een scriptbestand en typ de volgende code −
Live demov = [1, -7, 3, -5, 9]; s = roots(v); % converting the roots to double type disp('Numeric value of first root'), disp(double(s(1))); disp('Numeric value of second root'), disp(double(s(2))); disp('Numeric value of third root'), disp(double(s(3))); disp('Numeric value of fourth root'), disp(double(s(4)));
Wanneer u het bestand uitvoert, wordt het volgende resultaat geretourneerd −
Numeric value of first root 6.6304 Numeric value of second root -0.34509 + 1.07784i Numeric value of third root -0.34509 - 1.07784i Numeric value of fourth root 1.0598
Systeem van vergelijkingen oplossen in MATLAB
De oplossen functie kan ook worden gebruikt om oplossingen te genereren van stelsels van vergelijkingen met meer dan één variabele. Laten we een eenvoudig voorbeeld nemen om dit gebruik te demonstreren.
Laten we de vergelijkingen oplossen −
5x + 9y =5
3x – 6j =4
Maak een scriptbestand en typ de volgende code −
s = solve('5*x + 9*y = 5','3*x - 6*y = 4'); s.x s.y
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
ans = 22/19 ans = -5/57
Op dezelfde manier kun je grotere lineaire systemen oplossen. Beschouw de volgende reeks vergelijkingen −
x + 3y -2z =5
3x + 5y + 6z =7
2x + 4j + 3z =8
Systeem van vergelijkingen in octaaf oplossen
We hebben een iets andere benadering om een stelsel van 'n' lineaire vergelijkingen in 'n' onbekenden op te lossen. Laten we een eenvoudig voorbeeld nemen om dit gebruik te demonstreren.
Laten we de vergelijkingen oplossen −
5x + 9y =5
3x – 6j =4
Een dergelijk systeem van lineaire vergelijkingen kan worden geschreven als de enkele matrixvergelijking Ax =b, waarbij A de coëfficiëntenmatrix is, b de kolomvector is die de rechterkant van de lineaire vergelijkingen bevat en x de kolomvector is die de oplossing voorstelt als getoond in het onderstaande programma −
Maak een scriptbestand en typ de volgende code −
Live demoA = [5, 9; 3, -6]; b = [5;4]; A \ b
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
ans = 1.157895 -0.087719
Op dezelfde manier kun je grotere lineaire systemen oplossen zoals hieronder aangegeven −
x + 3y -2z =5
3x + 5y + 6z =7
2x + 4j + 3z =8
Vergelijkingen uitbreiden en verzamelen in MATLAB
De uitbreiden en de verzamel functie breidt uit en verzamelt respectievelijk een vergelijking. Het volgende voorbeeld demonstreert de concepten −
Als je met veel symbolische functies werkt, moet je aangeven dat je variabelen symbolisch zijn.
Maak een scriptbestand en typ de volgende code −
syms x %symbolic variable x syms y %symbolic variable x % expanding equations expand((x-5)*(x+9)) expand((x+2)*(x-3)*(x-5)*(x+7)) expand(sin(2*x)) expand(cos(x+y)) % collecting equations collect(x^3 *(x-7)) collect(x^4*(x-3)*(x-5))
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
ans = x^2 + 4*x - 45 ans = x^4 + x^3 - 43*x^2 + 23*x + 210 ans = 2*cos(x)*sin(x) ans = cos(x)*cos(y) - sin(x)*sin(y) ans = x^4 - 7*x^3 ans = x^6 - 8*x^5 + 15*x^4
Vergelijkingen in octaaf uitbreiden en verzamelen
U moet symbolisch . hebben pakket, dat uitbreiden . biedt en de verzamel functie om respectievelijk een vergelijking uit te breiden en te verzamelen. Het volgende voorbeeld demonstreert de concepten −
Wanneer u met veel symbolische functies werkt, moet u aangeven dat uw variabelen symbolisch zijn, maar Octave heeft een andere benadering om symbolische variabelen te definiëren. Let op het gebruik van Sin en Kos , die ook worden gedefinieerd in een symbolisch pakket.
Maak een scriptbestand en typ de volgende code −
% first of all load the package, make sure its installed. pkg load symbolic % make symbols module available symbols % define symbolic variables x = sym ('x'); y = sym ('y'); z = sym ('z'); % expanding equations expand((x-5)*(x+9)) expand((x+2)*(x-3)*(x-5)*(x+7)) expand(Sin(2*x)) expand(Cos(x+y)) % collecting equations collect(x^3 *(x-7), z) collect(x^4*(x-3)*(x-5), z)
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
ans = -45.0+x^2+(4.0)*x ans = 210.0+x^4-(43.0)*x^2+x^3+(23.0)*x ans = sin((2.0)*x) ans = cos(y+x) ans = x^(3.0)*(-7.0+x) ans = (-3.0+x)*x^(4.0)*(-5.0+x)
Factorisatie en vereenvoudiging van algebraïsche uitdrukkingen
De factor functie ontbindt een uitdrukking en de simplify functie vereenvoudigt een uitdrukking. Het volgende voorbeeld demonstreert het concept −
Voorbeeld
Maak een scriptbestand en typ de volgende code −
syms x syms y factor(x^3 - y^3) factor([x^2-y^2,x^3+y^3]) simplify((x^4-16)/(x^2-4))
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
ans = (x - y)*(x^2 + x*y + y^2) ans = [ (x - y)*(x + y), (x + y)*(x^2 - x*y + y^2)] ans = x^2 + 4
MATLAB