簡體   English   中英

MATLAB:如何在一定輸入壓力范圍內繪制三次方程式

[英]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);

由於您的數值參數值, solve將根據三個RootOf對象返回一個答案,第一個是您想要的真實對象

我建議兩種簡單的方法。

  1. P評估為delta的函數,然后plot(P,delta) 這既快速又骯臟,但是如果您只需要繪圖,它將可以完成。 給您帶來不便的是,您可以做一些猜測來找到正確的P值間隔,但也可以取足夠大的delta_max值,然后限制繪圖的x軸限制。

  2. 您的函數是一個簡單的三次方,您可以解析地求解( 如果丟失,請參見此處 ),以將P(delta)轉換為delta(P)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM