help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: help fsolve not getting correct answers


From: Richardson, Anthony
Subject: RE: help fsolve not getting correct answers
Date: Tue, 2 Apr 2019 21:20:41 +0000

> Subject: help fsolve not getting correct answers
>
> Hello,
>
> I am pretty new to Octave and I need some help figuring out a code.
> I wrote this code:
> function y = f(x)
> 
>  y = zeros(2,1);
> 
>  P1=100000; 
>  nu1=.8333; 
>  gamma=1.4; 
>  mu2=(gamma-1)/(gamma+1); 
>  q=1200e3;
>  E=2*q*mu2/(P1*nu1);
>  
> 
>  a = 1 + x(1)^2/(P1*nu1)*(1-x(2));
>  b =  -mu2 + (1 - mu2^2 + E)/(x(2) - mu2);
> 
>  c = -x(1)^2/(P1*nu1);
>  d = -(1 - mu2^2 + E)/((x(2) - mu2)^2);
> 
>  y(1) = a - b ;
>  y(2) = c - d ;
> 
>  endfunction
>
> And then used:
> [x, fval, info] = fsolve (@f, [1;2])
> to solve for x(1) and x(2) when a = b and c = d (where c and d are respective 
> derivatives of a and b).
>
> I know that the x values are supposed to be x(1)=1000 and x(2)=0.5, as I 
> previously solved this system by hand. However, fsolve gives me:
> x =
>
>  -73.3172
>    9.6259
>
> Is there anything I can do to improve he code so that it gives the correct 
> answers, or something close? 

When I pass the x values returned from fsolve back into f, I get some pretty 
small values:
>> x
x =
  -73.3172
    9.6259

>> f(x)
ans =
  -0.0000106970
   0.0000053239

When I pass your hand solution in, I get some much larger values:

>> f([1000; 0.5])
ans =
  -10.150
   39.951

So it looks like either the equations coded into your function don't match your 
theoretical equations or your hand solution is incorrect.

Tony Richardson



reply via email to

[Prev in Thread] Current Thread [Next in Thread]