vault backup: 2025-03-14 16:09:36
This commit is contained in:
parent
c66e41041e
commit
8310c43857
3
.obsidian/community-plugins.json
vendored
3
.obsidian/community-plugins.json
vendored
@ -2,5 +2,6 @@
|
||||
"copilot",
|
||||
"obsidian-git",
|
||||
"smart-connections",
|
||||
"obsidian-excalidraw-plugin"
|
||||
"obsidian-excalidraw-plugin",
|
||||
"obsidian-icon-folder"
|
||||
]
|
37
.obsidian/plugins/copilot/data.json
vendored
37
.obsidian/plugins/copilot/data.json
vendored
@ -38,12 +38,25 @@
|
||||
"maxSourceChunks": 3,
|
||||
"groqApiKey": "",
|
||||
"activeModels": [
|
||||
{
|
||||
"name": "copilot-plus-flash",
|
||||
"provider": "copilot-plus",
|
||||
"enabled": true,
|
||||
"isBuiltIn": true,
|
||||
"core": true,
|
||||
"capabilities": [
|
||||
"vision"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "gpt-4o",
|
||||
"provider": "openai",
|
||||
"enabled": true,
|
||||
"isBuiltIn": true,
|
||||
"core": true,
|
||||
"capabilities": [
|
||||
"vision"
|
||||
],
|
||||
"baseUrl": "",
|
||||
"apiKey": ""
|
||||
},
|
||||
@ -53,6 +66,9 @@
|
||||
"enabled": true,
|
||||
"isBuiltIn": true,
|
||||
"core": true,
|
||||
"capabilities": [
|
||||
"vision"
|
||||
],
|
||||
"baseUrl": "",
|
||||
"apiKey": ""
|
||||
},
|
||||
@ -62,6 +78,9 @@
|
||||
"enabled": true,
|
||||
"isBuiltIn": true,
|
||||
"core": true,
|
||||
"capabilities": [
|
||||
"vision"
|
||||
],
|
||||
"baseUrl": "",
|
||||
"apiKey": ""
|
||||
},
|
||||
@ -95,13 +114,24 @@
|
||||
"isEmbeddingModel": true,
|
||||
"core": true
|
||||
},
|
||||
{
|
||||
"name": "copilot-plus-large",
|
||||
"provider": "copilot-plus-jina",
|
||||
"enabled": true,
|
||||
"isBuiltIn": true,
|
||||
"isEmbeddingModel": true,
|
||||
"core": true,
|
||||
"believerExclusive": true,
|
||||
"dimensions": 1024
|
||||
},
|
||||
{
|
||||
"name": "copilot-plus-multilingual",
|
||||
"provider": "copilot-plus-jina",
|
||||
"enabled": true,
|
||||
"isBuiltIn": true,
|
||||
"isEmbeddingModel": true,
|
||||
"core": true
|
||||
"core": true,
|
||||
"dimensions": 512
|
||||
},
|
||||
{
|
||||
"name": "text-embedding-3-small",
|
||||
@ -189,5 +219,8 @@
|
||||
"name": "Change tone of selection"
|
||||
}
|
||||
},
|
||||
"promptUsageTimestamps": {}
|
||||
"promptUsageTimestamps": {},
|
||||
"embeddingRequestsPerMin": 90,
|
||||
"embeddingBatchSize": 16,
|
||||
"isPlusUser": false
|
||||
}
|
172222
.obsidian/plugins/copilot/main.js
vendored
172222
.obsidian/plugins/copilot/main.js
vendored
File diff suppressed because one or more lines are too long
2
.obsidian/plugins/copilot/manifest.json
vendored
2
.obsidian/plugins/copilot/manifest.json
vendored
@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "copilot",
|
||||
"name": "Copilot",
|
||||
"version": "2.7.15",
|
||||
"version": "2.8.7",
|
||||
"minAppVersion": "0.15.0",
|
||||
"description": "An AI Copilot in Obsidian.",
|
||||
"author": "Logan Yang",
|
||||
|
2
.obsidian/plugins/copilot/styles.css
vendored
2
.obsidian/plugins/copilot/styles.css
vendored
File diff suppressed because one or more lines are too long
@ -100,7 +100,7 @@
|
||||
"library2": {
|
||||
"type": "excalidrawlib",
|
||||
"version": 2,
|
||||
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.7.5",
|
||||
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.9.2",
|
||||
"libraryItems": []
|
||||
},
|
||||
"imageElementNotice": true,
|
||||
@ -112,10 +112,11 @@
|
||||
"mdCSS": "",
|
||||
"scriptEngineSettings": {},
|
||||
"defaultTrayMode": true,
|
||||
"previousRelease": "2.7.5",
|
||||
"previousRelease": "2.9.2",
|
||||
"showReleaseNotes": true,
|
||||
"showNewVersionNotification": true,
|
||||
"latexBoilerplate": "\\color{blue}",
|
||||
"latexPreambleLocation": "preamble.sty",
|
||||
"taskboneEnabled": false,
|
||||
"taskboneAPIkey": "",
|
||||
"pinnedScripts": [],
|
||||
@ -785,5 +786,14 @@
|
||||
"key": "G"
|
||||
}
|
||||
],
|
||||
"showSplashscreen": true
|
||||
"showSplashscreen": true,
|
||||
"pdfSettings": {
|
||||
"pageSize": "A4",
|
||||
"pageOrientation": "portrait",
|
||||
"fitToPage": 1,
|
||||
"paperColor": "white",
|
||||
"customPaperColor": "#ffffff",
|
||||
"alignment": "center",
|
||||
"margin": "normal"
|
||||
}
|
||||
}
|
File diff suppressed because one or more lines are too long
@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "obsidian-excalidraw-plugin",
|
||||
"name": "Excalidraw",
|
||||
"version": "2.7.5",
|
||||
"version": "2.9.2",
|
||||
"minAppVersion": "1.1.6",
|
||||
"description": "An Obsidian plugin to edit and view Excalidraw drawings",
|
||||
"author": "Zsolt Viczian",
|
||||
|
File diff suppressed because one or more lines are too long
170
.obsidian/plugins/obsidian-git/main.js
vendored
170
.obsidian/plugins/obsidian-git/main.js
vendored
File diff suppressed because one or more lines are too long
2
.obsidian/plugins/obsidian-git/manifest.json
vendored
2
.obsidian/plugins/obsidian-git/manifest.json
vendored
@ -6,5 +6,5 @@
|
||||
"description": "Integrate Git version control with automatic backup and other advanced features.",
|
||||
"isDesktopOnly": false,
|
||||
"fundingUrl": "https://ko-fi.com/vinzent",
|
||||
"version": "2.31.1"
|
||||
"version": "2.32.0"
|
||||
}
|
||||
|
38
.obsidian/plugins/obsidian-icon-folder/data.json
vendored
Normal file
38
.obsidian/plugins/obsidian-icon-folder/data.json
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
"settings": {
|
||||
"migrated": 6,
|
||||
"iconPacksPath": ".obsidian/icons",
|
||||
"fontSize": 16,
|
||||
"emojiStyle": "native",
|
||||
"iconColor": null,
|
||||
"recentlyUsedIcons": [
|
||||
"🧑🏫",
|
||||
"📚",
|
||||
"LiCoffee"
|
||||
],
|
||||
"recentlyUsedIconsSize": 5,
|
||||
"rules": [],
|
||||
"extraMargin": {
|
||||
"top": 0,
|
||||
"right": 4,
|
||||
"bottom": 0,
|
||||
"left": 0
|
||||
},
|
||||
"iconInTabsEnabled": false,
|
||||
"iconInTitleEnabled": false,
|
||||
"iconInTitlePosition": "above",
|
||||
"iconInFrontmatterEnabled": false,
|
||||
"iconInFrontmatterFieldName": "icon",
|
||||
"iconColorInFrontmatterFieldName": "iconColor",
|
||||
"iconsBackgroundCheckEnabled": false,
|
||||
"iconsInNotesEnabled": true,
|
||||
"iconsInLinksEnabled": true,
|
||||
"iconIdentifier": ":",
|
||||
"lucideIconPackType": "native",
|
||||
"debugMode": false,
|
||||
"useInternalPlugins": false
|
||||
},
|
||||
"InterestingStuffs": "LiCoffee",
|
||||
"力学书籍": "📚",
|
||||
"补课": "🧑🏫"
|
||||
}
|
7158
.obsidian/plugins/obsidian-icon-folder/main.js
vendored
Normal file
7158
.obsidian/plugins/obsidian-icon-folder/main.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
.obsidian/plugins/obsidian-icon-folder/manifest.json
vendored
Normal file
10
.obsidian/plugins/obsidian-icon-folder/manifest.json
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"id": "obsidian-icon-folder",
|
||||
"name": "Iconize",
|
||||
"version": "2.14.7",
|
||||
"minAppVersion": "0.9.12",
|
||||
"description": "Add icons to anything you desire in Obsidian, including files, folders, and text.",
|
||||
"author": "Florian Woelki",
|
||||
"authorUrl": "https://florianwoelki.com/",
|
||||
"isDesktopOnly": false
|
||||
}
|
120
.obsidian/plugins/obsidian-icon-folder/styles.css
vendored
Normal file
120
.obsidian/plugins/obsidian-icon-folder/styles.css
vendored
Normal file
@ -0,0 +1,120 @@
|
||||
.iconize-inline-title-wrapper {
|
||||
width: var(--line-width);
|
||||
max-width: var(--max-width);
|
||||
margin-inline: var(--content-margin);
|
||||
}
|
||||
|
||||
.iconize-title-icon {
|
||||
max-width: var(--max-width);
|
||||
margin-right: var(--size-4-2);
|
||||
}
|
||||
|
||||
.iconize-icon-in-link {
|
||||
transform: translateY(20%);
|
||||
margin-right: var(--size-2-2);
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.iconize-icon {
|
||||
border: 1px solid transparent;
|
||||
margin: 0px 4px 0px 0px;
|
||||
display: flex;
|
||||
align-self: center;
|
||||
margin: auto 0;
|
||||
}
|
||||
|
||||
.nav-folder-title,
|
||||
.nav-file-title {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.iconize-setting input[type='color'] {
|
||||
margin: 0 6px;
|
||||
}
|
||||
|
||||
.iconize-modal.prompt-results {
|
||||
margin: 0;
|
||||
overflow-y: auto;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.prompt .iconize-subheadline {
|
||||
margin-top: 12px;
|
||||
font-size: 12px;
|
||||
color: gray;
|
||||
grid-column-start: 1;
|
||||
grid-column-end: 6;
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.iconize-modal.prompt-results {
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
}
|
||||
.prompt .iconize-subheadline {
|
||||
grid-column-end: 4;
|
||||
}
|
||||
}
|
||||
|
||||
.iconize-modal.prompt-results .suggestion-item {
|
||||
cursor: pointer;
|
||||
white-space: pre-wrap;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
flex-direction: column-reverse;
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
color: var(--text-muted);
|
||||
padding: 16px 8px;
|
||||
line-break: auto;
|
||||
word-break: break-word;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.iconize-modal.prompt-results .suggestion-item.suggestion-item__center {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.iconize-icon-preview {
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
.iconize-icon-preview img {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.iconize-icon-preview svg {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
color: currentColor;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.iconize-dragover {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.iconize-dragover-el {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
color: var(--text-normal);
|
||||
background-color: var(--background-secondary-alt);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* Custom rule modal. */
|
||||
.iconize-custom-modal .modal-content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.iconize-custom-modal .modal-content input {
|
||||
width: 100%;
|
||||
margin-right: 0.5rem;
|
||||
}
|
@ -21,5 +21,5 @@
|
||||
"show_full_path": false,
|
||||
"expanded_view": true,
|
||||
"language": "en",
|
||||
"version": "2.3.47"
|
||||
"version": "2.5.4"
|
||||
}
|
18131
.obsidian/plugins/smart-connections/main.js
vendored
18131
.obsidian/plugins/smart-connections/main.js
vendored
File diff suppressed because one or more lines are too long
@ -6,5 +6,5 @@
|
||||
"minAppVersion": "1.1.0",
|
||||
"authorUrl": "https://wfhbrian.com",
|
||||
"isDesktopOnly": false,
|
||||
"version": "2.3.47"
|
||||
"version": "2.5.4"
|
||||
}
|
25
.obsidian/plugins/smart-connections/styles.css
vendored
25
.obsidian/plugins/smart-connections/styles.css
vendored
@ -204,6 +204,7 @@
|
||||
|
||||
.sc-chat-name-input {
|
||||
flex-grow: 1;
|
||||
min-width: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@ -616,6 +617,7 @@
|
||||
justify-content: space-between;
|
||||
align-items: baseline;
|
||||
font-size: var(--font-smallest);
|
||||
flex-wrap: wrap;
|
||||
|
||||
&:hover {
|
||||
background-color: var(--background-secondary-hover);
|
||||
@ -794,6 +796,10 @@
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
.setting-item {
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -966,3 +972,22 @@ div.workspace-leaf-content[data-type^="smart-"] {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sc-inline-confirm-row {
|
||||
margin-top: 10px;
|
||||
padding: 6px;
|
||||
border: 1px solid var(--interactive-normal);
|
||||
}
|
||||
.sc-inline-confirm-row-buttons {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
gap: 10px;
|
||||
margin-top: 10px;
|
||||
|
||||
& .sc-inline-confirm-yes {
|
||||
font-weight: bold;
|
||||
}
|
||||
& .sc-inline-confirm-cancel {
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
@ -31,21 +31,121 @@ Steady state parameters
|
||||
|
||||
|
||||
|
||||
BEMSolve(twist) --> phi、Pn、Pt
|
||||
|
||||
Solve_along_blade(V, omega) -> Cp、Power、Thrust
|
||||
# 转速、变桨算法
|
||||
|
||||
|
||||
aoa = phi - twist
|
||||
输入:
|
||||
- 风速 3, 25, 0.1
|
||||
- 转速min(rpm)
|
||||
- 转速max(rpm)
|
||||
|
||||
new_twist = twist + pitch_angle
|
||||
1、算Cp-lambda -> Cpmax + 对应lambda
|
||||
2、根据追踪最佳cp方法,得到3-25,每个风速对应的转速
|
||||
```python
|
||||
# 根据转速上下界,找到风速上下界 rpm -> deg
|
||||
omegalb = self.omega_rpmlb * 2 * np.pi / 60
|
||||
omegaub = self.omega_rpmub * 2 * np.pi / 60
|
||||
|
||||
# 根据relalabmda_R找到风速上下界,在此风速范围内可以追踪最佳Cp
|
||||
V0lb = omegalb * self.RPlusHub / relalabmda_R
|
||||
V0ub = omegaub * self.RPlusHub / relalabmda_R
|
||||
|
||||
for V in self.v_w:
|
||||
# self.v_w 风速序列 3, 25, 0.1
|
||||
|
||||
delta_pitch_anlge - >
|
||||
# 形成转速规律
|
||||
|
||||
if V < V0lb:
|
||||
|
||||
0
|
||||
0 + 1
|
||||
0 + 1 + 1
|
||||
# 转速为最小转速
|
||||
|
||||
19.006
|
||||
append(omegalb)
|
||||
|
||||
elif V > V0ub:
|
||||
|
||||
# 转速为最大转速
|
||||
|
||||
append(omegaub)
|
||||
|
||||
else:
|
||||
|
||||
# 转速为最大Cp对应的转速
|
||||
|
||||
append(relalabmda_R * V / self.RPlusHub)
|
||||
|
||||
self.omega_list = omega_list
|
||||
```
|
||||
|
||||
3、遍历速度
|
||||
```python
|
||||
for i in range(self.numv_w):
|
||||
|
||||
V = np.round(self.v_w[i], 3)
|
||||
|
||||
omega = self.omega_list[i]
|
||||
|
||||
Cp, CThrust, Power, Thrust, Mxy = self.SolveAlongBlade(V, omega) #对整只叶片解BEM
|
||||
|
||||
if Power > self.Rated_P: # 达到额定风速了,开始变桨
|
||||
min_angle = 0
|
||||
|
||||
max_angle = 90
|
||||
|
||||
init_pitch_angle = pitch_angle[i-1] # 从前一步变桨角度开始
|
||||
|
||||
tolerance = 0.01
|
||||
|
||||
max_iterations = 1000
|
||||
error = Power - self.Rated_P
|
||||
print(f"Iteration {0}: pitch_angle={init_pitch_angle}, Power={Power}, Error={error}")
|
||||
|
||||
delta_pitch_angle = compute_delta_pitch(Power, self.Rated_P, 0.05)
|
||||
# 我直接把delta变桨角度加到扭角里了
|
||||
self.Twist += np.full((self.SectionNum,), delta_pitch_angle)
|
||||
|
||||
total_pitch_angle = init_pitch_angle + delta_pitch_angle
|
||||
|
||||
# 开始迭代
|
||||
for iteration in range(max_iterations):
|
||||
Cp, CThrust, Power, Thrust, Mxy = self.SolveAlongBlade(V, omega)
|
||||
error = Power - self.Rated_P
|
||||
|
||||
if abs(error) < tolerance:
|
||||
Power_re[i] = Power
|
||||
self.V0 = V
|
||||
Thrust_re[i] = Thrust
|
||||
Mxy_re[i] = Mxy
|
||||
Cp_re[i] = Cp
|
||||
pitch_angle[i] = total_pitch_angle
|
||||
iteration_step[i] = iteration + 1
|
||||
break
|
||||
|
||||
else:
|
||||
delta_pitch_angle = compute_delta_pitch(Power, self.Rated_P, 0.05)
|
||||
total_pitch_angle = total_pitch_angle + delta_pitch_angle
|
||||
|
||||
# 约束检查
|
||||
if total_pitch_angle < min_angle:
|
||||
total_pitch_angle = min_angle
|
||||
elif total_pitch_angle > max_angle:
|
||||
total_pitch_angle = max_angle
|
||||
self.Twist += np.full((self.SectionNum,), delta_pitch_angle)
|
||||
|
||||
else:
|
||||
|
||||
Power_re[i] = Power
|
||||
Thrust_re[i] = Thrust
|
||||
Mxy_re[i] = Mxy
|
||||
Cp_re[i] = Cp
|
||||
pitch_angle[i] = 0
|
||||
iteration_step[i] = 0
|
||||
```
|
||||
|
||||
```python
|
||||
def compute_delta_pitch(current_power, target_power, sensitivity):
|
||||
|
||||
delta = (current_power - target_power) * sensitivity
|
||||
|
||||
return delta
|
||||
```
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"id":"b698e88ca5fb9c51","type":"text","text":"状态指标:\n推进OKR的时候也要关注这些事情,它们是完成OKR的保障。\n\n\n效率状态 green","x":-96,"y":80,"width":456,"height":347},
|
||||
{"id":"58be7961ae7275a7","type":"text","text":"# 计划\n这周要做的3~5件重要的事情,这些事情能有效推进实现OKR。\n\nP1 必须做。P2 应该做\n\nP1 多体原理学习 YouTube课程 ing\nP1 根据公共mesh模块调整代码\nP1 气动模块联合调试,跑通 no\nP1 梳理Steady Operational Load计算条件,方法及输出结果,确定变桨角度技术路线\nP1 反序列化\n\n","x":-620,"y":-307,"width":450,"height":347},
|
||||
{"id":"2b068bfe5df15a72","type":"text","text":"# 目标:多体动力学模块完善\n### 每周盘点一下它们\n\n\n关键结果:建模原理、建模方法掌握 (6.5/10)\n\n关键结果:对标Bladed模块完成 (6.5/10)\n\n关键结果:风机多体动力学文献调研情况完成 (5/10)","x":-96,"y":-307,"width":456,"height":347},
|
||||
{"id":"58be7961ae7275a7","type":"text","text":"# 计划\n这周要做的3~5件重要的事情,这些事情能有效推进实现OKR。\n\nP1 必须做。P2 应该做\n\nP1 多体原理学习 YouTube课程 014\nP1 根据公共mesh模块调整代码 no\nP1 气动模块联合调试,跑通 no\nP1 稳态工况多体动力学求解方法\n\n","x":-620,"y":-307,"width":450,"height":347},
|
||||
{"id":"2b068bfe5df15a72","type":"text","text":"# 目标:多体动力学模块完善\n### 每周盘点一下它们\n\n\n关键结果:建模原理、建模方法掌握 (6.7/10)\n\n关键结果:对标Bladed模块完成 (7/10)\n\n关键结果:风机多体动力学文献调研情况完成 (5/10)","x":-96,"y":-307,"width":456,"height":347},
|
||||
{"id":"01ee5c157d0deeae","type":"text","text":"# 推进计划\n未来四周计划推进的重要事情\n\n文献调研启动\n\n建模重新推导\n\n\n","x":-620,"y":80,"width":456,"height":347}
|
||||
],
|
||||
"edges":[]
|
||||
|
BIN
工作总结/周报/周报68-郭翼泽-1.docx
Normal file
BIN
工作总结/周报/周报68-郭翼泽-1.docx
Normal file
Binary file not shown.
Binary file not shown.
45
补课/多体动力学/14_inertia.ipynb
Normal file
45
补课/多体动力学/14_inertia.ipynb
Normal file
@ -0,0 +1,45 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import sympy as sm\n",
|
||||
"import sympy.physics.mechanics as me\n",
|
||||
"me.init_vprinting()\n",
|
||||
"\n",
|
||||
"A = me.ReferenceFrame('A')\n",
|
||||
"B = me.ReferenceFrame('B')\n",
|
||||
"\n",
|
||||
"theta = me.dynamicsymbols('theta')\n",
|
||||
"\n",
|
||||
"B.orient_axis(A, theta, A.y)\n",
|
||||
"\n",
|
||||
"Q = 3*me.outer(B.x, A.z) + 4*me.outer(A.x, A.x) + 6*me.outer(A.z, B.z)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "TagUIFocus5",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.12.4"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
22
补课/多体动力学/14_inertia.py
Normal file
22
补课/多体动力学/14_inertia.py
Normal file
@ -0,0 +1,22 @@
|
||||
import sympy as sm
|
||||
import sympy.physics.mechanics as me
|
||||
me.init_vprinting()
|
||||
|
||||
A = me.ReferenceFrame('A')
|
||||
B = me.ReferenceFrame('B')
|
||||
|
||||
theta = me.dynamicsymbols('theta')
|
||||
|
||||
B.orient_axis(A, theta, A.y)
|
||||
|
||||
Q = 3*me.outer(B.x, A.z) + 4*me.outer(A.x, A.x) + 6*me.outer(A.z, B.z)
|
||||
|
||||
print(Q)
|
||||
|
||||
print(Q.express(A))
|
||||
|
||||
print(Q.express(B))
|
||||
|
||||
print(Q.to_matrix(A))
|
||||
|
||||
print(Q.to_matrix(B))
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user