matlab中predictor怎么填,在MATLAB中求解非線性有限元
我嘗試在MATLAB中求解帶有節點熱源的四面體有限元的熱擴散問題,這個節點取決於解矢量。非線性方程系統如下:在MATLAB中求解非線性有限元
乙U」 + A U = Q(T)
與B是熱capactiy矩陣,A是導電性基體,q是源項和U作爲溫度。我使用了一個Adams-Bashforth /梯形規則預估校正器方案,並進行了Picard迭代,接着是時間步長控制。源項的溫度在最後一個時間步的溫度和預測器溫度之間精確評估。這是預測校正器代碼的簡化版本。源的計算是一個函數。
% predictor
K0 = t(n)-t(n-1);
Upre(dirichlet) = u_d_t(coordinates(dirichlet,:));
Upre(FreeNodes) = U(FreeNodes,n) + (dt/2)*((2+dt/K0)*U_dt(FreeNodes,3) - (dt/K0)*U_dt(FreeNodes,1)); % predictor step
Uguess = Upre; % save as initial guess for Picard iteration
% corrector with picard iteration
while res >= picard_tolerance
T_theta = Uguess*theta + (1-theta)*U(:,n);
b = q(T_theta);
% Building right-hand side vector (without Dirichlet boundary conditions yet)
rhs = ((2/dt)*B*U(:,n) + B*U_dt(:,1))+b;
% Applying Dirichlet Boundary Conditions to the Solution Vector
Ucor(dirichlet) = u_d_t(coordinates(dirichlet,:));
rhs = rhs - ((2/dt)*B+A)*Ucor;
% Solving the linearized system using the backslash operator
% P*U(n+1) = f(Un) => U(n+1) = P\f(Un)
Ucor(FreeNodes) = ((2/dt)*B(FreeNodes,FreeNodes)+A(FreeNodes,FreeNodes))\rhs(FreeNodes);
res = norm(Uguess-Ucor);
Uguess = Ucor;
U(:,n+1) = Ucor;
end
正如你可以看到我使用反斜線運算符來解決系統。系統的非線性不應該太差。然而,隨着時間步長的增加,皮卡方法收斂得更慢,並最終停止收斂。我需要更多的時間步驟,所以我把整個校正器的步驟放到一個函數中,試圖用fsolve解決它,而不是看看我是否實現了更快的收斂。不幸的是,fsolve似乎從未完成第一步。我想我沒有正確配置fsolve的選項。任何人都可以告訴我,如何爲大型稀疏非線性系統配置fsolve(我們正在談論成千上萬個方程)。或者,對於這個問題,有沒有比fsolve更好的解決方案?幫助和 - 因爲我不是專家或計算工程師 - 非常感謝明確的建議!
matlab中predictor怎么填,在MATLAB中求解非線性有限元相关推荐
- 如何在MATLAB中把变量填到Word中,matlab数据写入现有excel表格-如何将matlab中变量写入excel...
如何将matlab 中的数据写入现有的word 表格中? 你可以这样做: (1)先在matlab里面,把相关数据导出.保存成csv格式的文件:比如说,你可以在workspace视图底下,把相关的变量直 ...
- 如何在MATLAB中把变量填到Word中,将MATLAB中的图形转化到WORD中去
Q;如何将matlab中的scope图形转到word中,至少三种方法 1.软件截图,这个就不多说了 2.使用Matlab命令,直接保存为图片 set(0,'ShowHiddenHandles','On ...
- matlab计算一组数的函数值_matlab中怎么求一组数据概率最大的数
好象直接使用就可以了,第一次出现就包含了定义 顺便把些命令弄给你看下 matlab命令 matlab commands and functions list A a abs 绝对值.模.字符的ASCI ...
- matlab中加入C代码:matlab中安装C语言编译器TDM-GCC,编译、运行及mexFunction接口设置
通过把耗时长的函数用c语言实现,并编译成mex函数可以加快执行速度.Matlab本身是不带c语言的编译器的,所以要求你的机器上已经安装有VC,BC或Watcom C中的一种. 如果你在安装Matlab ...
- matlab中的timer模块,[转载]Matlab中Timer的使用
Matlab中Timer的使用 鉴于Matlab中缺乏多线程机制,使用Timer无疑是一个很重要的工具,Matlab中Timer是一个Java对象. (1)Timer 的定义 t=timer(); 设 ...
- matlab 两列数据相乘,在EXCEL中,两列完全相同的数据,求和结果不一样??单元格两列相乘的公式...
excel表格中怎样求和以及计算两列的乘积 一.这可以用SUMPRODUCT函数来完成. 二.比如是要 =A1*B1 A2*B2 .....A100*B100,则这个公以简化成 =SUMPRODUCT ...
- cmake重新编译matlab,ubuntu系统下cmake 编译matlab中mex文件
cmake 编译工程具有独特的优势,特别对于复杂的工程更是如此.利用matlab直接编译mex文件时,对于文件数据多的工程时,需要列举所有文件,并且要按照依赖关系排 cmake 编译工程具有独特的优势 ...
- 2021-03-31 Matlab simulink 模糊PID在无刷直流电机中的应用
Matlab simulink 模糊PID在无刷直流电机中的应用 无刷直流电机的数学模型. 1.无刷直流电机数学模型 然后给出无刷直流电机的动态数学模型 看到上述这张图,不知聪明的你有没有发觉,图中采 ...
- matlab波的极化特性,Matlab GUI在电磁波极化特性教学中的应用
科技创新导报 2018 NO.16Science and Technology Innovation Herald 创新教育 科技创新导报 Science and Technology Innovat ...
最新文章
- Deepin v20依赖错误,检测更新失败解决办法
- python社区版可以用库么_应用Python,你不但能够得到出色的小区适用和普遍的库集...
- jQuery中文手册, jQuery API, jQuery UI, 分页插件 下载
- 今日恐慌与贪婪指数为94 贪婪程度与昨日持平
- eBay以2.4亿美元收购移动支付服务商Zong
- 户外运动手持GPS设备常识汇总
- 个人博客毕业设计设计总结
- MSDN资源下载网站源码
- Linu系统——基础知识1
- 一张图片中的分离数据+十进制删改十六进制+连续base32和64编码+okk编码题目--rsa中求d题目
- 服务器无法远程访问的原因有哪些
- 鱼眼校正c语言算法,一种简单而精确的鱼眼图像校正算法研究
- 【Android开发】Android休眠机制
- 数据结构——单循环链表的
- 转帖: 80分钟打造娱乐型ubuntu7.10
- SMB小传 —— SMB网络文件系统协议介绍
- 《经典食人花》windows经典桌面游戏食人花(吃花)登陆iOS,Android啦
- Python列表操作小技巧——索引、切片、增添、删除、修改和其他用法
- java调试宝塔api_宝塔接口API
- 联想盈利创新高,智能手机国内销量第二
热门文章
- Spring boot删除员工
- Table表格的单元格提示
- Java的Map遍历
- html的input的id,请求[“inputId”]不能在cshtml上工作
- java中怎样创建多个对象,java中StringBuilder.appent方法创建几个对象
- 新同事上来就把项目性能优化了一遍,瑟瑟发抖。。。
- Java 中的 BigDecimal 类你了解多少?
- maven私服-详细部署搭建笔记
- java was started but returned exit code = 1
- 【深入Java虚拟机JVM 01】Java发展与展望概述