外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。
maximaではりを解いています。
(はりを解く(両端ばね+鉛直・回転変位:↓↑荷重))

スクリプト例
:はりを解く(両端ばね+鉛直・回転変位:↓↑荷重)
@echo off
path C:\maxima-5.49.0\bin;%path%
more +4 %0 | maxima --very-quiet & pause & goto:eof
/*
: VA TA P P VB TB
: |/_____|_____________|/
◎ | ◎ KB
> > KV
: 0 a L-a L ---> x
: |---------L---------|
y
|
|_____x
/
z
KB : 回転ばね kNm/rad
KV : 鉛直ばね kN/m
TA, TB : たわみ角 左回りが正 rad
VA, VB : たわみ 上方向が正 m
P : 集中荷重 上方向が正 kN
a : 集中荷重の位置 m
Q1, Q2, Q3 : せん断力 上方向が正 kN
M1, M2, M3 : 曲げモーメント 左回りが正 kNm
L : スパン長 m
EI : 曲げ剛性(一定)
エンコード UTF-8(BOM無し) で保存して実行してください。
*/
assume(L>0,a>=0)$
/*
define(Q1(x), C1)$
define(M1(x), C2 + integrate(Q1(x), x))$
define(T1(x), C3 - integrate(M1(x)/EI, x))$
define(V1(x), C4 + integrate(T1(x), x))$
define(Q2(x), C5)$
define(M2(x), C6 + integrate(Q2(x), x))$
define(T2(x), C7 - integrate(M2(x)/EI, x))$
define(V2(x), C8 + integrate(T2(x), x))$
define(Q3(x), C9)$
define(M3(x), C10 + integrate(Q3(x), x))$
define(T3(x), C11 - integrate(M3(x)/EI, x))$
define(V3(x), C12 + integrate(T3(x), x))$
s: solve(
[T1(0)=-M1(0)/KB+TA, V1(0)= Q1(0)/KV+VA,
T3(L)= M3(L)/KB+TB, V3(L)=-Q3(L)/KV+VB,
Q1(a)-Q2(a)=P, M1(a)=M2(a), T1(a)=T2(a), V1(a)=V2(a),
Q2(L-a)-Q3(L-a)=-P, M2(L-a)=M3(L-a), T2(L-a)=T3(L-a), V2(L-a)=V3(L-a)],
[C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12])$
[Q1, M1, T1, V1]: ev([Q1(x), M1(x), T1(x), V1(x)], s)$
[Q2, M2, T2, V2]: ev([Q2(x), M2(x), T2(x), V2(x)], s)$
[Q3, M3, T3, V3]: ev([Q3(x), M3(x), T3(x), V3(x)], s)$
RA:ev(Q1,x=0)$
RB:-ev(Q3,x=L)$
MA:ev(M1,x=0)$
MB:-ev(M3,x=L)$
print("RA:",string(factor(RA)))$
print("RB:",string(factor(RB)))$
print("MA:",string(factor(MA)))$
print("MB:",string(factor(MB)))$
print("Q1-RA:",string(factor(Q1-RA)))$
print("M1-MA-RA*x:",string(factor(M1-MA-RA*x)))$
print("T1-TA+MA/KB+(MA*x+RA*x^2/2)/EI:",string(factor(T1-TA+MA/KB+(MA*x+RA*x^2/2)/EI)))$
print("V1-VA-(TA-MA/KB)*x-RA/KV+(MA*x^2/2+RA*x^3/6)/EI:",string(factor(V1-VA-(TA-MA/KB)*x-RA/KV+(MA*x^2/2+RA*x^3/6)/EI)))$
print("Q2-Q1:",string(factor(Q2-Q1)))$
print("M2-M1:",string(factor(M2-M1)))$
print("T2-T1:",string(factor(T2-T1)))$
print("V2-V1:",string(factor(V2-V1)))$
print("Q3+RB:",string(factor(Q3+RB)))$
print("M3+MB+RB*(x-L):",string(factor(M3+MB+RB*(x-L))))$
print("T3-TB+MB/KB-(MB*(x-L)+RB*(x-L)^2/2)/EI:",string(factor(T3-TB+MB/KB-(MB*(x-L)+RB*(x-L)^2/2)/EI)))$
print("V3-VB-(TB-MB/KB)*(x-L)-RB/KV-(MB*(x-L)^2/2+RB*(x-L)^3/6)/EI:",string(factor(V3-VB-(TB-MB/KB)*(x-L)-RB/KV-(MB*(x-L)^2/2+RB*(x-L)^3/6)/EI)))$ quit()$
*/
RA: KV*(P*(2*a-L)*(2*KB*a*(a-L)-L*(KB*L+6*EI))+6*EI*KB*(2*(VB-VA)-L*(TB+TA))
)/((KB*L+6*EI)*KV*L^2+24*EI*KB)$
RB:-RA$
MA:-KB*((KB*L+2*EI)*P*(2*a-L)*(KV*L*a*(a-L)+12*EI)
+2*EI*(3*KV*L*(KB*L+2*EI)*(VB-VA)-KB*KV*L^3*(TB+2*TA)+6*EI*(2*KB*(TB-TA)-KV*L^2*TA))
)/((KB*L+2*EI)*((KB*L+6*EI)*KV*L^2+24*EI*KB))$
MB:-KB*((KB*L+2*EI)*P*(2*a-L)*(KV*L*a*(a-L)+12*EI)
+2*EI*(3*KV*L*(KB*L+2*EI)*(VB-VA)-KB*KV*L^3*(2*TB+TA)-6*EI*(2*KB*(TB-TA)+KV*L^2*TB))
)/((KB*L+2*EI)*((KB*L+6*EI)*KV*L^2+24*EI*KB))$
Q1: RA$
M1: MA+RA*x$
T1: TA-MA/KB-(MA*x+RA*x^2/2)/EI$
V1: VA+(TA-MA/KB)*x+RA/KV-(MA*x^2/2+RA*x^3/6)/EI$
Q2: Q1-P$
M2: M1-P*(x-a)$
T2: T1+P*(x-a)^2/(2*EI)$
V2: V1+P*(x-a)^3/(6*EI)$
Q3:-RB$
M3:-MB-RB*(x-L)$
T3: TB-MB/KB+(MB*(x-L)+RB*(x-L)^2/2)/EI$
V3: VB+(TB-MB/KB)*(x-L)+RB/KV+(MB*(x-L)^2/2+RB*(x-L)^3/6)/EI$
Q:if a>x then Q1 elseif x>=a and L-a>x then Q2 else Q3$
M:if a>x then M1 elseif x>=a and L-a>x then M2 else M3$
T:if a>x then T1 elseif x>=a and L-a>x then T2 else T3$
V:if a>x then V1 elseif x>=a and L-a>x then V2 else V3$
KB:1000$
KV:1000*10$
[TA, TB]: [-1,-2]/1000$
[VA, VB]: [-1,-2]/1000$
P:-10$
a:1.5$
[L,B,D,E,G,fs]: [5,0.15,0.30,6.5,6.5/15,1.2]$
EI: E * B * D^3 / 12 * 10^6$ /* kN*m*m */
plot2d([Q,M,T*1000,V*1000], [x,0,L], grid2d, [title, "Euler-Bernoulli's beam"],
[legend,"Q kN","M kNm","T x1/1000 rad","V mm"],
[color,red,blue,green,magenta])$
?sleep(10)$
quit()$
(計算結果)
L=5.0m
KB=1000 kNm/rad
KV=10000 kN/m
VA=-1/1000 m
VB=-2/1000 m
TA=-1/1000 rad
TB=-2/1000 rad
P=-10 kN
a=1.5m
B x D = 150x300mm
E65-F225 構造用集成材 すぎ(JAS)

両端にばねがあり、そこにたわみとたわみ角を与えたはりの計算式を導入しました。

















