It looks like you're new here. If you want to get involved, click one of these buttons!

- 141K All Categories
- 104.5K Programming Languages
- 6.4K Assembler Developer
- 1.8K Basic
- 39.8K C and C++
- 4.2K C#
- 7.9K Delphi and Kylix
- 4 Haskell
- 9.6K Java
- 4.1K Pascal
- 1.3K Perl
- 2K PHP
- 508 Python
- 48 Ruby
- 4.3K VB.NET
- 1.6K VBA
- 20.8K Visual Basic
- 2.6K Game programming
- 310 Console programming
- 88 DirectX Game dev
- 1 Minecraft
- 110 Newbie Game Programmers
- 2 Oculus Rift
- 8.9K Applications
- 1.8K Computer Graphics
- 726 Computer Hardware
- 3.4K Database & SQL
- 522 Electronics development
- 1.6K Matlab
- 628 Sound & Music
- 256 XML Development
- 3.3K Classifieds
- 194 Co-operative Projects
- 181 For sale
- 189 FreeLance Software City
- 1.9K Jobs Available
- 600 Jobs Wanted
- 201 Wanted
- 2.9K Microsoft .NET
- 1.7K ASP.NET
- 1.1K .NET General
- 3.2K Miscellaneous
- 3 Join the Team
- 0 User Profiles
- 349 Comments on this site
- 59 Computer Emulators
- 2K General programming
- 178 New programming languages
- 598 Off topic board
- 163 Mobile & Wireless
- 37 Android
- 124 Palm Pilot
- 335 Multimedia
- 151 Demo programming
- 184 MP3 programming
- 0 Bash scripts
- 19 Cloud Computing
- 52 FreeBSD
- 1.7K LINUX programming
- 367 MS-DOS
- 0 Shell scripting
- 320 Windows CE & Pocket PC
- 4.1K Windows programming
- 884 Software Development
- 405 Algorithms
- 68 Object Orientation
- 86 Project Management
- 90 Quality & Testing
- 234 Security
- 7.5K WEB-Development
- 1.8K Active Server Pages
- 61 AJAX
- 2 Bootstrap Themes
- 55 CGI Development
- 19 ColdFusion
- 222 Flash development
- 1.4K HTML & WEB-Design
- 1.4K Internet Development
- 2.2K JavaScript
- 33 JQuery
- 286 WEB Servers
- 141 WEB-Services / SOAP

airwalkery2k
Posts: **2**Member

in Matlab

Hi,

I am using Matlab for a class, and unfortunately, I don't have much experience in it.

For my problem, I need to solve an ordinary differential equation using Matlab's built-in ODE45 function. Using some tutorials, I came up with the following code to solve and plot my function.

[b]function jtd

[t,x] = ode45(@dfile,[0,20],[0;0]);

plot(t,x(:,1))

title('nonlinear')

xlabel('t'), ylabel('y'), grid

function xprime = dfile(t,x)

F=13.4;

a=0.1;

xprime = zeros(2,1);

xprime(1) = x(2);

xprime(2) = F*cos(t) - a*x(2) - x(1)^3;[/b]

It works well, but I need to be able to vary F and a using a loop to get multiple plots as the two variables change. Yet I can't for the life of me figure out how to get a variable from the main function JTD into the function xprime when I call the ode45 function.

If I could figure that out, it would help me immensely in continueing my program.

I am using Matlab for a class, and unfortunately, I don't have much experience in it.

For my problem, I need to solve an ordinary differential equation using Matlab's built-in ODE45 function. Using some tutorials, I came up with the following code to solve and plot my function.

[b]function jtd

[t,x] = ode45(@dfile,[0,20],[0;0]);

plot(t,x(:,1))

title('nonlinear')

xlabel('t'), ylabel('y'), grid

function xprime = dfile(t,x)

F=13.4;

a=0.1;

xprime = zeros(2,1);

xprime(1) = x(2);

xprime(2) = F*cos(t) - a*x(2) - x(1)^3;[/b]

It works well, but I need to be able to vary F and a using a loop to get multiple plots as the two variables change. Yet I can't for the life of me figure out how to get a variable from the main function JTD into the function xprime when I call the ode45 function.

If I could figure that out, it would help me immensely in continueing my program.

Terms of use / Privacy statement / Publisher: Lars Hagelin

Programmers Heaven articles / Programmers Heaven files / Programmers Heaven uploaded content / Programmers Heaven C Sharp ebook / Operated by CommunityHeaven LLC

© 1997-2015 Programmersheaven.com - All rights reserved.

## Comments

217Member[b]F=13.4;

a=0.1;

fun=@(x,t) dfile(x,t,F,a);[/b]

[t,x] = ode45([b]fun[/b],[0,20],[0;0]);

plot(t,x(:,1))

title('nonlinear')

xlabel('t'), ylabel('y'), grid

function xprime = dfile(t,x,[b]F,a[/b])

xprime = zeros(2,1);

xprime(1) = x(2);

xprime(2) = F*cos(t) - a*x(2) - x(1)^3;

I define the function handle of dfile out of the ode45 function. In this way you can pass the parameter to the function.

Now you can make a for cicle to make different plots, for example:

F=[12.3 13.4];

a=[0.2 0.1];

for i=1:length(F)

figure();

fun=@(x,t) dfile(x,t,F(i),a(i));

...

end

I add the function figure() so that plots on different figures.

2MemberFrom here on out, it should be smooth sailing. [b]Thanks, Giug![/b]

217Member1Member