- #1

epic325

- 2

- 0

## Homework Statement

1.)I want to write a function in MATLAB that contains the 2nd order function:

20*d[itex]^{2}[/itex]x;(dt[itex]^{2}[/itex])+5*dx/dt + 20*x=0 (dampened spring)

-The function should have 2 inputs (time,[initial values]) initial values should be a vector of 2 values

-The function should output a vector of the time derivatives

2.)I want to write a script that that uses the function to plot the function using euler's method with a for loop.

## Homework Equations

I solved for the time derivatives

[w(2) ; -.25w(2)-w(1)] where my initial values are [1; 0] x(0)=1 and dx/dt(0)=0

## The Attempt at a Solution

I think I have figured the code out but it's not plotting the right thing. it should be a dampened oscillator, but its plotting a line. I just need some help with the debugging. I will paste the function code followed by the separate script:

%This is the function where the input will be t and wVec=[initial values]

function wDerVec = odeFunc(t,wVec)

wDerVec=[wVec(2) -.25*wVec(2)-wVec(1)];

end

clear

clc

h=0.1; %h is the time step (.1s)

t=0:h:15; %time interval (0 to 15 s)

wVec=[1 0]; %initial condition

for i=2:length(t),

odeFunc(t,wVec);

wVec(i,:)=wVec(i-1,:)+ans*h;

end

plot(t,wVec(:,1)); %plots the distance with respect to time

title('Euler Approximation, damped spring');

xlabel('Time');

ylabel('distance, x');

I'm not very good at MATLAB so any help would be greatly appreciated! Thanks!