matlab - 迭代求解非线性方程
问题描述
我正在尝试迭代求解以下非线性方程,如下面的“用于小型无人机的螺旋桨滑流模型”的摘录所示,W. Khan、M. Nahon、R. Caverly pp3
到目前为止,我有以下代码,我希望它是相对不言自明的,虽然我觉得我通过尝试使用解决功能使用了错误的方法:
% III A Induced Velocity at Propeller Plane
%Data from Table I
Sno = [1,2,3,4,5,6,7]
radialLoc = [5,20,40,60,80,100,127] % r
chord = [12.374,16.230,22.850,28.215,28.902,26.310,13.066] % c
chordlinePitchAngle = [25,26.5,21.89,14.39,9.80,4.75,6.59] % theta
zeroLiftAngleOfAttack = [0,0,-9.66,-8.70,-7.40,-10.70,-8.40] % a0
liftCurveSlope = 6.28 % Cla
dragCoefficient = 0.02 % Cd
%Other data
angularVel = 1710 % Omega (1710RPM /6710RPM)
numBlades = 2 % N
forwardVel = 0 % Vx
%data to be determined
phi = 0
eqn = angularVel*numBlades*chord(1)*(liftCurveSlope*(chordlinePitchAngle(1)-zeroLiftAngleOfAttack(1)-phi)-dragCoefficient*tan(phi))-8*pi*sin(phi)*(angularVel*radialLoc(1)*tan(phi)-forwardVel)
a = solve(eqn,phi)
任何解决方程的帮助将不胜感激。
注意我意识到我最终会得到 7 个 phi 值,目前我只是想找到第一个并从那里开始。
配套文件(参考文献 21)可通过以下链接访问:(虽然我已阅读相关部分,但似乎没有任何其他相关信息)https://ieeexplore.ieee.org/document/6523983
解决方案
求解方法用于符号求解方程。如果要以数字方式求解,则必须改用fzero。
顺便说一句,有一些不一致之处(假设我正确理解了您的问题)
随着
angularVel=0
你的等式将变为0 = 0。在
phi(1)
您的定义中,eqn
但在您的情况下phi
只是一个变量,而不是数组。为什么radialLoc只有6个值?估计少了一个。
无论如何,这里有一种使用 fzero 的方法:
%Other data
angularVel = 1710/6710; % Just a guess % Omega (1710RPM /6710RPM)
numBlades = 2; % N
forwardVel = 0; % Vx
%data to be determined
phi_sol = zeros(7,1);
for i=1:6
% Define the function handle
eqn = @(phi) angularVel*numBlades*chord(i)*(liftCurveSlope * ...
(chordlinePitchAngle(i)-zeroLiftAngleOfAttack(i)-phi) - dragCoefficient ...
* tan(phi))-8*pi*sin(phi)*(angularVel*radialLoc(i)*tan(phi)-forwardVel);
% Find phi such that eqn(phi) = 0 (uses phi=0 as initial guess for fzero)
phi_sol(i) = fzero(eqn, 0);
end
推荐阅读
- mysql - 如何围绕另一条记录的时间戳选择记录?
- c - 分段错误而不是显示消息 - 使用 c 中的指针从文件中读取
- firebase - 如果我在 Cloud Function 中实现对 Firestore 的 onSnapshot 实时监听器,它会花费更多吗?
- c - 从头生成PIDPID
- typescript - 如何强制数组具有联合类型的所有值?
- c - 使用 ”;” 在 for 语句的末尾,但代码仍在执行
- c# - 如何处理推送通知动作点击?
- angular - 无法使用 Angular 在插值中显示数字键值
- css - 如何在 Woocommerce 中的表单和提交按钮之间添加空格?
- checkbox - 在 GoJs 复选框中,我希望复选图标是矩形,而不是正方形