简体   繁体   中英

MATLAB: How to plot a cubic expression for certain range of input pressure

I have a cubic expression here

这里的三次表达

I am trying to determine and plot δ 𝛿 in the expression for P values of 0.0 to 5000. I'm really struggling to get the expression for δ in terms of the pressure P .

clear all;
close all;

t = 0.335*1e-9;
r = 62*1e-6;
delta = 1.2*1e+9;
E = 1e+12;
v = 0.17;
P = 0:100:5000

P = (4*delta*t)*w/r^2 + (2*E*t)*w^3/((1-v)*r^4);

I would appreciate if anyone could provide pointers.

What you want is the functional inverse of your expression, ie, δ 𝛿 as a function of P . Since it's a cubic polynomial , you can expect up to three solutions (roots) for a give value of P . However, I'm guessing that you're only interested in real-valued solutions and nonnegative values of P . In that case there's just one real root for each value of P .

Given the values of your parameters, it makes most sense to solve this numerically using fzero . Using the parameter names in your code (different from equations):

t = 0.335*1e-9;
r = 62*1e-6;
delta = 1.2*1e9;
E = 1e12;
v = 0.17;
f = @(w,p)2*E*t*w.^3/((1-v)*r^4)+4*delta*t*w/r^2-p;

P = 0:100:5000;
w0 = [0 1]; % Bounded initial guess, valid up to very large values of P
w_sol = zeros(length(P),1);
for i = 1:length(P)
    w_sol(i) = fzero(@(w)f(w,P(i)),w0); % Find solution for each P
end

figure;
plot(P,w_sol);

You could also solve this using symbolic math:

syms w p
t = 0.335*sym(1e-9);
r = 62*sym(1e-6);
delta = 1.2*sym(1e9);
E = sym(1e12);
v = sym(0.17);
w_sol = solve(p==2*E*t*w^3/((1-v)*r^4)+4*delta*t*w/r^2,w);

P = 0:100:5000;
w_sol = double(subs(w_sol(1),p,P)); % Plug in P values and convert to floating point

figure;
plot(P,w_sol);

Because of your numeric parameter values, solve returns an answer in terms of three RootOf objects , the first of which is the real one you want.

I suggest two simple methods.

  1. You evaluate P as a function of delta then you plot(P,delta) . This is quick and dirty but if all you need is a plot it will do. The inconvenience is that you may to do some guess-and-trial to find the correct interval of P values, but you can also take a large enough value of delta_max and then restrict the x-axis limit of the plot.

  2. Your function is a simple cubic, which you can solve analytically ( see here if you are lost ) to invert P(delta) into delta(P) .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM