10 views (last 30 days)

A = [[(sin(10*(pi/180))) * (sin(90*(pi/180))),(sin(10*(pi/180)))*(cos(90*(pi/180))), cos(10*(pi/180))],[(sin(10*(pi/180))) * (sin(180*(pi/180))),(sin(10*(pi/180)))*(cos(180*(pi/180))), cos(10*(pi/180))],[(sin(0*(math.pi/180))) * (sin(0*(pi/180))),(sin(0*(pi/180)))*(cos(0*(pi/180))), cos(0*(pi/180))]]

This is my code in python . Can you please translate this code to matlab for solving this equation using linear differential eguation .It is in form of a 3x3 matrix.

Luna
on 10 Mar 2020

Edited: Luna
on 10 Mar 2020

Hi there!

There are 2 ways of doing this. It depends on your B vector according to Ax = B equation system. Your solutions below. You should read the links I mentioned.

(Note: Matlab understands pi as pi. 3,14... no need extra library for that.)

If your case is Linear Equations:

Read the link: Solve System of Linear Equations

% definition of A:

A = [...

[(sin(10*(pi/180))) * (sin(90*(pi/180))),(sin(10*(pi/180)))*(cos(90*(pi/180))), cos(10*(pi/180))];...

[(sin(10*(pi/180))) * (sin(180*(pi/180))),(sin(10*(pi/180)))*(cos(180*(pi/180))), cos(10*(pi/180))];...

[(sin(0*(pi/180))) * (sin(0*(pi/180))),(sin(0*(pi/180)))*(cos(0*(pi/180))), cos(0*(pi/180))]...

];

% Solution 1:

% AX = B. Depends on what B is.

B = [1,2,3]'; % I prefer 3x1 vertical vector. You should define your own B.

X = linsolve(A,B);

% Solution 2:

% Define your equations with symbolic characters.

syms x y z;

eqn1 = ((sin(10*(pi/180))) * (sin(90*(pi/180))))* x + ((sin(10*(pi/180)))*(cos(90*(pi/180))))*y + (cos(10*(pi/180)))*z == 1; % this equation equals first element of B.

eqn2 = ((sin(10*(pi/180))) * (sin(180*(pi/180))))*x + (sin(10*(pi/180)))*(cos(180*(pi/180)))*y + cos(10*(pi/180))*z == 2;

eqn3 = ((sin(0*(pi/180))) * (sin(0*(pi/180))))*x + ((sin(0*(pi/180)))*(cos(0*(pi/180))))*y +(cos(0*(pi/180)))*z == 3;

% Create your A matrix and B vector:

[A,B] = equationsToMatrix([eqn1, eqn2, eqn3], [x, y, z]);

X = linsolve(A,B); % this result is symbolic.

% convert to numeric:

Result = double(X);

disp(Result);

If your case is Differential Equations

Read this link: Solve a System of Differential Equations

%% For System of Differential Equations:

% definition of A:

A = [...

[(sin(10*(pi/180))) * (sin(90*(pi/180))),(sin(10*(pi/180)))*(cos(90*(pi/180))), cos(10*(pi/180))];...

[(sin(10*(pi/180))) * (sin(180*(pi/180))),(sin(10*(pi/180)))*(cos(180*(pi/180))), cos(10*(pi/180))];...

[(sin(0*(pi/180))) * (sin(0*(pi/180))),(sin(0*(pi/180)))*(cos(0*(pi/180))), cos(0*(pi/180))]...

];

syms x(t) y(t) z(t)

ode1 = diff(x) == ((sin(10*(pi/180))) * (sin(90*(pi/180))))* x + ((sin(10*(pi/180)))*(cos(90*(pi/180))))*y + (cos(10*(pi/180)))*z;

ode2 = diff(y) == ((sin(10*(pi/180))) * (sin(180*(pi/180))))*x + (sin(10*(pi/180)))*(cos(180*(pi/180)))*y + cos(10*(pi/180))*z;

ode3 = diff(z) == ((sin(0*(pi/180))) * (sin(0*(pi/180))))*x + ((sin(0*(pi/180)))*(cos(0*(pi/180))))*y +(cos(0*(pi/180)))*z;

odes = [ode1;ode2;ode3];

S = dsolve(odes)

You will get a struct S like below:

S =

struct with fields:

y: [1×1 sym]

x: [1×1 sym]

z: [1×1 sym]

To reach each of them use dot notation:

xSol(t) = S.x;

ySol(t) = S.y; % etc..

Sign in to answer this question.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.