Amar Narayan
Amar Narayan

Reputation: 1

Solving Differential equations with 7 unknowns

I want to solve the 7 differential equations which are functions of time for the 7 unknowns. I wanted to find the solutions of the equations:

eo(t)=f1(e_0(t),e_1(t),e_2(t),e_3(t),w_1(t),w_2(t),w_3(t))
e1(t)=f2(e_0(t),e_1(t),e_2(t),e_3(t),w_1(t),w_2(t),w_3(t))
e2(t)=f3(e_0(t),e_1(t),e_2(t),e_3(t),w_1(t),w_2(t),w_3(t))
e3(t)=f4(e_0(t),e_1(t),e_2(t),e_3(t),w_1(t),w_2(t),w_3(t))
w1(t)=f5(e_0(t),e_1(t),e_2(t),e_3(t),w_1(t),w_2(t),w_3(t))
w2(t)=f6(e_0(t),e_1(t),e_2(t),e_3(t),w_1(t),w_2(t),w_3(t))
w3(t)=f7(e_0(t),e_1(t),e_2(t),e_3(t),w_1(t),w_2(t),w_3(t))

I have generated the equations of e0, e1, e2, e3, w1, w2, w3. Now, how do I solve these equations, and which commands are needed?

I need to find the values of e0, e1, e2, e3, w1, w2, w3 and get the numerical value of these with respect to t.

The equations which have to be solved are

e0 = - (e_1(t)*w_1(t))/2 - (e_2(t)*w_2(t))/2 - (e_3(t)*w_3(t))/2
e1 = (e_0(t)*w_1(t))/2 - (e_2(t)*w_3(t))/2 - (e_3(t)*w_2(t))/2
e2 =(e_0(t)*w_2(t))/2 - (e_1(t)*w_3(t))/2 + (e_3(t)*w_1(t))/2
e3 = (e_0(t)*w_3(t))/2 + (e_1(t)*w_2(t))/2 - (e_2(t)*w_1(t))/2
w1 = w_2(t)*(1.98019*e_3(t)*(e_1(t)*w_1(t) + e_2(t)*w_2(t) + e_3(t)*w_3(t)) + 1.980*e_0(t)*(e_0(t)*w_3(t) + e_1(t)*w_2(t) - 1.0*e_2(t)*w_1(t)) - 1.980*e_1(t)*(e_0(t)*w_2(t) - 1.0*e_1(t)*w_3(t) + e_3(t)*w_1(t)) - 1.9801*e_2(t)*(e_2(t)*w_3(t) - 1.0*e_0(t)*w_1(t) + e_3(t)*w_2(t))) - 1.0*w_1(t)*(1.0*e_0(t)*(e_1(t)*w_1(t) + e_2(t)*w_2(t) + e_3(t)*w_3(t)) + 1.0*e_1(t)*(e_2(t)*w_3(t) - 1.0*e_0(t)*w_1(t) + e_3(t)*w_2(t)) - 1.0*e_2(t)*(e_0(t)*w_2(t) - 1.0*e_1(t)*w_3(t) + e_3(t)*w_1(t)) - 1.0*e_3(t)*(e_0(t)*w_3(t) + e_1(t)*w_2(t) - 1.0*e_2(t)*w_1(t))) - 1.0*w_3(t)*(1.0*e_0(t)*(e_0(t)*w_2(t) - 1.0*e_1(t)*w_3(t) + e_3(t)*w_1(t)) - 1.0*e_2(t)*(e_1(t)*w_1(t) + e_2(t)*w_2(t) + e_3(t)*w_3(t)) + 1.0*e_1(t)*(e_0(t)*w_3(t) + e_1(t)*w_2(t) - 1.0*e_2(t)*w_1(t)) + 1.0*e_3(t)*(e_2(t)*w_3(t) - 1.0*e_0(t)*w_1(t) + e_3(t)*w_2(t))) - (63.366*kappa^2*(0.72470*w_1(t) + 0.355*kappa*(2.0*e_0(t)e_1(t)(2.0*e_0(t)*e_3(t) + 2.0*e_1(t)*e_2(t)) + 2.0*e_1(t)e_3(t)(e_0(t)^2 - 1.0*e_1(t)^2 + e_2(t)^2 - 1.0*e_3(t)^2)) - 0.3623*kappa*((e_0(t)^2 + e_1(t)^2 - 1.0*e_2(t)^2 - 1.0*e_3(t)^2)*(e_0(t)^2 - 1.0*e_1(t)^2 + e_2(t)^2 - 1.0*e_3(t)^2) + (2.0*e_0(t)*e_3(t) + 2.0*e_1(t)e_2(t))(2.0*e_0(t)*e_3(t) - 2.0*e_1(t)*e_2(t)))))/(l^5*rho)
w2 = w_3(t)*(0.505*e_1(t)*(e_1(t)*w_1(t) + e_2(t)*w_2(t) + e_3(t)*w_3(t)) - 0.505*e_0(t)*(e_2(t)*w_3(t) - 1.0*e_0(t)*w_1(t) + e_3(t)*w_2(t)) + 0.505*e_2(t)*(e_0(t)*w_3(t) + e_1(t)*w_2(t) - 1.0*e_2(t)*w_1(t)) + 0.505*e_3(t)*(e_0(t)*w_2(t) - 1.0*e_1(t)*w_3(t) + e_3(t)*w_1(t))) - 1.0*w_1(t)*(0.505*e_3(t)*(e_1(t)*w_1(t) + e_2(t)*w_2(t) + e_3(t)*w_3(t)) + 0.505*e_0(t)*(e_0(t)*w_3(t) + e_1(t)*w_2(t) - 1.0*e_2(t)*w_1(t)) - 0.505*e_1(t)*(e_0(t)*w_2(t) - 1.0*e_1(t)*w_3(t) + e_3(t)*w_1(t)) - 0.505*e_2(t)*(e_2(t)*w_3(t) - 1.0*e_0(t)*w_1(t) + e_3(t)*w_2(t))) - 1.0*w_2(t)*(1.0*e_0(t)*(e_1(t)*w_1(t) + e_2(t)*w_2(t) + e_3(t)*w_3(t)) + 1.0*e_1(t)*(e_2(t)*w_3(t) - 1.0*e_0(t)*w_1(t) + e_3(t)*w_2(t)) - 1.0*e_2(t)*(e_0(t)*w_2(t) - 1.0*e_1(t)*w_3(t) + e_3(t)*w_1(t)) - 1.0*e_3(t)*(e_0(t)*w_3(t) + e_1(t)*w_2(t) - 1.0*e_2(t)*w_1(t))) - (32.0*kappa^2*(0.7184*w_2(t) - 0.3592*kappa*(2.0*e_0(t)e_1(t)(e_0(t)^2 + e_1(t)^2 - 1.0*e_2(t)^2 - 1.0*e_3(t)^2) + 2.0*e_1(t)e_3(t)(2.0*e_0(t)*e_3(t) - 2.0*e_1(t)*e_2(t)))))/(l^5*rho)
w3 = w_1(t)*(1.0*e_2(t)*(e_1(t)*w_1(t) + e_2(t)*w_2(t) + e_3(t)*w_3(t)) - 1.0*e_0(t)*(e_0(t)*w_2(t) - 1.0*e_1(t)*w_3(t) + e_3(t)*w_1(t)) + 1.0*e_1(t)*(e_0(t)*w_3(t) + e_1(t)*w_2(t) - 1.0*e_2(t)*w_1(t)) + 1.0*e_3(t)*(e_2(t)*w_3(t) - 1.0*e_0(t)*w_1(t) + e_3(t)w_2(t))) + w_2(t)(1.980*e_0(t)*(e_2(t)*w_3(t) - 1.0*e_0(t)*w_1(t) + e_3(t)*w_2(t)) - 1.980*e_1(t)*(e_1(t)*w_1(t) + e_2(t)*w_2(t) + e_3(t)*w_3(t)) + 1.980*e_2(t)*(e_0(t)*w_3(t) + e_1(t)*w_2(t) - 1.0*e_2(t)*w_1(t)) + 1.980*e_3(t)*(e_0(t)*w_2(t) - 1.0*e_1(t)*w_3(t) + e_3(t)*w_1(t))) - 1.0*w_3(t)*(1.0*e_0(t)*(e_1(t)*w_1(t) + e_2(t)*w_2(t) + e_3(t)*w_3(t)) + 1.0*e_1(t)*(e_2(t)*w_3(t) - 1.0*e_0(t)*w_1(t) + e_3(t)*w_2(t)) - 1.0*e_2(t)*(e_0(t)*w_2(t) - 1.0*e_1(t)*w_3(t) + e_3(t)*w_1(t)) - 1.0*e_3(t)*(e_0(t)*w_3(t) + e_1(t)*w_2(t) - 1.0*e_2(t)*w_1(t))) + (63.366*kappa^2*(0.3551*kappa*((e_0(t)^2 + e_1(t)^2 - 1.0*e_2(t)^2 - 1.0*e_3(t)^2)*(e_0(t)^2 - 1.0*e_1(t)^2 + e_2(t)^2 - 1.0*e_3(t)^2) - 1.0*(2.0*e_0(t)*e_3(t) + 2.0*e_1(t)e_2(t))(2.0*e_0(t)*e_3(t) - 2.0*e_1(t)*e_2(t))) - 0.724*w_3(t) + 0.362*kappa*((e_0(t)^2 + e_1(t)^2 - 1.0*e_2(t)^2 - 1.0*e_3(t)^2)*(e_0(t)^2 - 1.0*e_1(t)^2 + e_2(t)^2 - 1.0*e_3(t)^2) + (2.0*e_0(t)*e_3(t) + 2.0*e_1(t)e_2(t))(2.0*e_0(t)*e_3(t) - 2.0*e_1(t)*e_2(t)))))/(l^5*rho)

I used this code in MATLAB after assigning the values

soll=ode45(e0,e1,e2,e3,w1,w2,w3,e_0(t),e_1(t),e_2(t),e_3(t),w_1(t),w_2(t),w_3(t))

But I got the following error message:

Undefined function 'exist' for input arguments of type 'sym'.

Error in odearguments (line 59) if (exist(ode)==2)

Error in ode45 (line 113) [neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

Please enlighten me where I have gone wrong.

Upvotes: 0

Views: 154

Answers (1)

Dmitry Grigoryev
Dmitry Grigoryev

Reputation: 3204

This error means that ode45 cannot solve symbolic equations (your variables are of type 'sym'). In fact ode45 is a numerical solver which works on functions, not on symbolical expressions. Here's how to define a function in Matlab:

First, you need to create a new m-file then type this code

function y = f(x)
y = 2 * (x^3) + 7 * (x^2) + x;

Save with filename 'f.m'

Upvotes: 1

Related Questions