找到一个高度方程的根?

2视图(30天)
山姆
山姆 2022年11月20日
编辑: Torsten 2022年11月23日
你好,
我有以下20 * 20矩阵和矩阵的行列式等于零。矩阵的行列式(n)学位P1。现在我知道这个方程将20个值p1和我想找最小值p1。谁能帮我这个忙。
信谊z L n k EI p c p1
n = 20;
sz_i = n;
sz_j = n;
= 0 (sz_i sz_j);% Preallocate你的记忆
倪= 1:sz_i
新泽西= 1:sz_j
易= (1-cos ((2 * ni-1) *π/ 2 / L * z));
yj = (1-cos ((2 * nj-1) *π/ 2 / L * z));
yi1 = diff(咦,z);
移= diff (yi1, z);
yj1 = diff (yj, z);
yj2 = diff (yj1, z);
A1 (ni, nj) = int(移* yj2, z, 0, L) * L ^ 2 /π^ 2;
A2(镍、新泽西)= int (k / EI * * yj, z, 0, L) * L ^ 2 /π^ 2;
A3 (ni, nj) = int (yi1 * yj1, z, 0, L) * p1;
一个= A1 + A2 + A3;
结束
结束
侦破=简化(侦破(A) = = 0)
依据=潜艇(侦破,(EI k), [1.4 * 10 ^ 6 20000])
p1 =解决(侦破,p1)
2的评论
1月
1月 2022年11月20日
@SAM :这不是twitter——没有之前#标签。谢谢。

登录置评。

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2022年11月20日
你可以增加效率。
信谊z L n k EI p c n p1
π=符号(π);
n = 20;
sz_i = n;
sz_j = n;
Y = (1-cos (* n - 1) *(2π/ 2 / L * z));
日元= diff (Y, z);
Y2 = diff (Y1, z);
a12factor = L ^ 2 /π^ 2;
a3factor = p1;
yn =潜艇(Y, N, 1: N);
y1n =潜艇(Y1, N, 1: N);
y2n =潜艇(Y2, N, 1: N);
a1 = y2n。* y2n。‘* a12factor;
a2 = yn。* yn。‘* k / EI * a12factor;
a3 = y1n。* y1n。‘* a3factor;
一个= a1 + a2 + a3;
= int (z, 0 L);
D =侦破(A);
这是一个象征性的表达在EI, k, L, p1。你可以问MATLAB解决(),这将给你一个根()表达式与根开始的1到20
291703339392448328621651929229077582620568440174548205553784771502333756969121739673547250585656738532071173191070556640625 * 20 EI ^ *πL ^ ^ 82 - 12848203493112198395889046043812884859217084764445999104 * 80 * k L ^ ^ 20 - 208389359856899544203781763568613158007234205266739200 * 80 * 20 k ^ * pi + 1424916150093398371686638159155142565090345214615234107400096054751498986800574941200459804113425927420089552307128906250000 * 20 EI ^ * z L ^ *π^ 82 + 1381792269762211294561843388310775683848723402588160000 * 80 * 20 k ^ *πEI ^ ^ 2 + 1112350495497485111654198329296281083177130185179996821848818709250431543376954389692834277455824804598413814331054687500000 * 20 * z ^ 2 *πEI ^ ^ 82 + 332138129688311341361837332491557801987003745461437160020708407556544889529014042088568410231691049804871850039062500000000 * 20 * z ^ 3 *πEI ^ ^ 82 + 50648283370987298871613343472725217281132008252741289242977036400590501580538648738773426097648731595598064907812500000000 * 20 * z ^ 4 *π^ 82
系数得到高达10 ^ 163年,告诉你的解决方案会对浮点舍入误差,而敏感。万博 尤文图斯
如果你有确切的EI值k和L,然后你可以潜艇()到侦破和解决(),获得了一系列根与纯粹的数字系数()。然后您可以数字(200)和vpa ()。然而,很有可能,许多积极和消极的结果将复值实际组件和虚构的组件,那么您需要定义在一组复杂的“最小”意味着什么。
7评论
Torsten
Torsten 2022年11月23日
编辑:Torsten 2022年11月23日
清晰;clc
信谊z L n k EI p c p1
n = 20;
sz_i = n;
sz_j = n;
= 0 (sz_i sz_j);% Preallocate你的记忆
倪= 1:sz_i
新泽西= 1:sz_j
易= (1-cos ((2 * ni-1) *π/ 2 / L * z));
yj = (1-cos ((2 * nj-1) *π/ 2 / L * z));
yi1 = diff(咦,z);
移= diff (yi1, z);
yj1 = diff (yj, z);
yj2 = diff (yj1, z);
A1 (ni, nj) = int(移* yj2, z, 0, L) * L ^ 3 /π^ 4;
A2 (ni, nj) = int(易* yj, z, 0, L) / L *;
% ^ =吉隆坡4 /π^ 4 / EI
A3 (ni, nj) = int (yi1 * yj1, z, 0, L) * p1 * L /π^ 2;
% p1 =π^ 2 / EI pL ^ 2
一个= A1 + A2 + A3;
结束
结束
侦破=侦破(A) = = 0;
ca = 1;
r = 0:0.001:20
detnum =潜艇(侦破,r);
allRoots = vpa(解决(detnum));
P1 (ca) = min (allRoots (abs(图像放大(allRoots)) < 1的军医));
ca = ca + 1;
结束

登录置评。

更多的答案(0)

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!