필터 지우기
필터 지우기

I need help solving this second order differential equation?

조회 수: 1 (최근 30일)
Robin
Robin 2011년 8월 7일
I was given a second order function that models longitudinal displacements in a longitudinally loaded elastic bar.
a(x)*u''(x) + a'(x)*u'(x)=f(x), 0 <= x <=1
I know that the left end is at x=0 and the right end is at x=1. So that means:
u(0)=u(1)=0 (does not bend at the ends)
I know a(x) represents both the elastic properties and the cross-sectional area of the bar and u(x) is the displacement at point x.
for the first part I am told that a(x)=1+x and f(x)= 5*sin(2*pi*x)^2 (this is the case where the force is applied symetrically and is strongest at x=.25 and x=.75)
I need to use dsolve to solve for the problem and plot the result on the interval [0,1]
This is what I tried to do:
ode1= 'D2y*(1+x)+ Dy= 5*sin(2*pi*x)^2';
sol=dsolve(ode1,'y(0)=0','y(1)=0');
ezplot(sol)
Howver the graph I got from this just does not look right. Can someone please help me out?
  댓글 수: 11
Robin
Robin 2011년 8월 7일
ok so I tried to replace what I had for that long solution with mfun, but I get an error:
>> y=(5*x)/2 - (5*log(x + 1))/2 + (5*i*mfun('Ei',((-4)*pi*i)) - 5*i*mfun('Ei',(4*pi*i)))/(16*pi) - (5*i*mfun('Ei',((-4)*pi*i*(x + 1))))/(16*pi) + (5*i*mfun('Ei',(4*pi*i*(x + 1))))/(16*pi) - (log(x + 1)*(40*pi - 40*pi*log(2) + 5*i*mfun('Ei',((-4)*pi*i)) - 5*i*mfun('Ei',(4*pi*i)) - 5*i*mfun('Ei',((-8)*pi*i)) + 5*i*mfun('Ei',(8*pi*i))))/(16*pi*log(2))
??? Error using ==> str2num at 33
Requires string or character array input.
Error in ==> mfun>computeX at 72
x = str2num(x); %#ok
Error in ==> mfun at 43
[x,siz,nans] = computeX(varargin{:});
Walter Roberson
Walter Roberson 2011년 8월 7일
My mistake earlier: Ei is the Exponential Integral, not the Elliptic Integral. The hypergeometric conversion I showed is still valid, though.
I do see any immediate reason why you would be getting the str2num errors, but I can make the suggestion that you optimize using
t = mfun('Ei', pi*i*[-4, 4, -8, 8, -4*(x+1), 4*(x+1)]);
and then replace the individual mfun calls with t(1), t(2), t(5, t(6), t(1), t(2), t(3), and t(4) respectively.

댓글을 달려면 로그인하십시오.

답변 (1개)

Neels
Neels 2011년 8월 7일
My suggestion would be to rearrange the equation as
u''(x) =f(x)/a(x)- u'(x)/a(x)
z = f(x)/a(x)-y/a(x) , where y is first derivative of u(x) and z is first derivative of y. Then solve it using ode45, giving the initial values. I think matlab computes faster using first order derivatives
  댓글 수: 1
Robin
Robin 2011년 8월 7일
I did try to rearrange the equation every way I could think of, but I still get the same nasty result with "Ei" as part of the answer. We have to solve it symbolically, using dsolve, the problem specifically says to do that :(

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Numeric Solvers에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by