[英]MATLAB: How to plot a cubic expression for certain range of input pressure
我在這里有一個三次表達
我試圖確定並在0.0〜5000我真的努力得到的壓力P的條款δ表達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);
如果有人可以提供指針,我將不勝感激。
你想要什么功能逆的表達,即δδ作為P的函數。 由於它是三次多項式 ,因此對於給定的P值,您最多可以期望三個解(根)。 但是,我猜測您只對P的實值解決方案和非負值感興趣。 在這種情況下,每個P值只有一個實根。
在給定參數值的情況下,最有意義的是使用fzero
數值fzero
。 在代碼中使用參數名稱(與方程式不同):
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);
您也可以使用符號數學來解決此問題:
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);
我建議兩種簡單的方法。
將P
評估為delta
的函數,然后plot(P,delta)
。 這既快速又骯臟,但是如果您只需要繪圖,它將可以完成。 給您帶來不便的是,您可以做一些猜測來找到正確的P
值間隔,但也可以取足夠大的delta_max
值,然后限制繪圖的x軸限制。
您的函數是一個簡單的三次方,您可以解析地求解( 如果丟失,請參見此處 ),以將P(delta)
轉換為delta(P)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.