## How to iterate with fsolve to find Mach number

### Hailey (view profile)

on 10 Sep 2019
Latest activity Edited by Torsten

on 10 Sep 2019

### Torsten (view profile)

I'm trying to interate static pressure ratio to find Mach number using fsolve, but I can't get the syntax correct. The Mathworks explaination didn't really help me. Could anyone out there help?
I have a set range for the pressure ratio, but the Mach number is unknown. Here is the equation:
This is what I have so far for the code:
pt2pinf = [1.9, 2.7, 3.5, 4.3, 5.1, 5.9, 6.7, 7.5, 27.5, 47.5, 67.5 ,87.5 ,107.5,127.5, 147.5, 200, 252.5, 305, 357.5, 410, 462.5 ,515 ,567.5, 620, 672.5, 725, 777.5, 830 ,882.5, 935, 987.5, 1000];
Me0=ones(1,32);
g=1.2;
pt2pinf_test = fsolve(@(Me)(((1+((g-1)/2)*Me.^2)^(g/(g-1)))/((((2*g)/(g+1))*Me.^2)-((g-1)/(g+1)))),Me0);

Hailey

### Hailey (view profile)

on 10 Sep 2019
But I need to have the Mach number values. I need an array of Mach numbers that match up with it's respective pressure ratio value. This did not do that.
Torsten

### Torsten (view profile)

on 10 Sep 2019
They are stored in the fsolve return parameter (pt2pinf_test in your case).
Hailey

### Hailey (view profile)

on 10 Sep 2019
The values are too small to be a Mach number after a shock wave.
Not sure what I did wrong.

### Torsten (view profile)

on 10 Sep 2019
Edited by Torsten

### Torsten (view profile)

on 10 Sep 2019

function main
pt2pinf = [1.9, 2.7, 3.5, 4.3, 5.1, 5.9, 6.7, 7.5, 27.5, 47.5, 67.5 ,87.5 ,107.5,127.5, 147.5, 200, 252.5, 305, 357.5, 410, 462.5 ,515 ,567.5, 620, 672.5, 725, 777.5, 830 ,882.5, 935, 987.5, 1000];
Me0 = 5.0;
g = 1.2;
fun = @(Me,pquot)((((1+((g-1)/2)*Me.^2).^(g/(g-1)))./((((2*g)/(g+1))*Me.^2)-((g-1)/(g+1))))-pquot).^2
for i = 1:numel(pt2pinf)
pquot = pt2pinf(i);
machnumber(i) = fminsearch(@(Me)fun(Me,pquot),Me0,optimset('TolFun',1e-10));
end
machnumber
fun(machnumber,pt2pinf)
end