如何编写一个非线性向量值函数适合坐标网格(xq, yq)的三角形吗?

3视图(30天)
这段代码让我chalenged。我的问题是如何重新编码函数fq = f (xq yq)成一个非线性函数fq = f (u (xq yq)),它适合坐标网格(xq, yq)三角元素?同样,如果边界条件是一个非零函数,代码中改变什么?
函数u = fem2d_bvp_linear (nx、纽约、a、c、f, x, y)
% * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 80
%
% % fem2d_bvp_linear()解决边值问题在一个矩形。
%
%的讨论:
%
%程序使用有限元方法,用分段线性的基础上
%函数来解决二维矩形边值问题
%
%以下微分方程施加在该地区:
%
% - d / dx (x, y) du / dx - d / dy (x, y) du / dy + c (x, y) * u (x, y) = f (x, y)
%
% (x, y), c (x, y)和f (x, y)给出的功能。
%
%在边界上,解决方案是约束值0。
%
%的有限元方法将使用常规电网NX节点X,和
%纽约节点Y。
%
%的许可:
%
%这个代码在GNU LGPL许可证下发布的。
%
%修改:
%
2014年6月% 20
%
%的作者:
%
%约翰Burkardt
%
%的输入:
%
%整数NX, NY, X和Y网格的数量值。
%
%函数(X, Y),评估(X, Y);
%
%函数C (X, Y),评估C (X, Y);
%
%函数F (X, Y),评估F (X, Y);
%
%的X (NX), Y(纽约),网格点。
%
%输出:
%
真正% U (NX、纽约)有限元系数,也
%的价值计算网格点的解决方案。
%
%
%求积的定义。
%
quad_num = 3;
横坐标(1)= -0.774596669241483377035853079956;
横坐标(2)= 0.000000000000000000000000000000;
横坐标(3)= 0.774596669241483377035853079956;
重量(1)= 0.555555555555555555555555555556;
重量(2)= 0.888888888888888888888888888889;
重量(3)= 0.555555555555555555555555555556;
%
%为矩阵A和b右手边。
%
mn = nx *纽约;
一个= 0(锰、锰);
b = 0 (mn, 1);
%
%计算矩阵的条目通过集成在每个元素。
%
为例= 1:nx - 1
w =交货;
e = ex + 1;
xw = x (w);
xe = x (e);
嗯= 1:ny - 1
s =)等等;
n =是+ 1;
y = y (s);
yn = y (n);
sw = (ey - 1) * nx +交货;
se = (ey - 1) * nx + ex + 1;
西北=嗯* nx +交货;
不=嗯* nx + + 1交货;
为qx = 1: quad_num
xq =((1.0 -横坐标(季度))* xw……
+(1.0 +横坐标(季度))* xe)…
/ 2.0;
qy = 1: quad_num
yq =((1.0 -横坐标(qy)) * y……
+(1.0 +横坐标(qy)) * yn)…
/ 2.0;
wq =重量(季度)* (xe - xw) / 2.0……
*重量(qy) * (yn - y) / 2.0;
甚短波= (xe - xq) / (xe - xw) * (yn - yq) / (yn - y);
vswx = (-1.0) / (xe - xw) * (yn - yq) / (yn - y);
vswy = (xe - xq) / (xe - xw) * (-1.0) / (yn - y);
vse = (xq - xw) / (xe - xw) * (yn - yq) / (yn - y);
vsex = (1.0) / (xe - xw) * (yn - yq) / (yn - y);
vsey = (xq - xw) / (xe - xw) * (-1.0) / (yn - y);
vnw = (xe - xq) / (xe - xw) * (yq - y) / (yn - y);
vnwx = (-1.0) / (xe - xw) * (yq - y) / (yn - y);
vnwy = (xe - xq) / (xe - xw) * (1.0) / (yn - y);
vne = (xq - xw) / (xe - xw) * (yq - y) / (yn - y);
vnex = (1.0) / (xe - xw) * (yq - y) / (yn - y);
vney = (xq - xw) / (xe - xw) * (1.0) / (yn - y);
aq = (xq, yq);
cq = c (xq, yq);
% fq = f (xq, yq);如何代码如果我有fq = f (u (xq yq))
% u是解决方案在哪里?
(西南,西南)=(西南,西南)+ wq * (vswx * aq * vswx……
+ vswy * aq * vswy……
+甚短波* cq *甚短波);
(西南,se) = (sw, se) + wq * (vswx * aq * vsex……
+ vswy * aq * vsey……
+甚短波* cq * vse);
(西南,西北)=(西南、西北)+ wq * (vswx * aq * vnwx……
+ vswy * aq * vnwy……
+甚短波* cq * vnw);
(西南,ne) =(西南、东北)+ wq * (vswx * aq * vnex……
+ vswy * aq * vney……
+甚短波* cq * vne);
(sw) = b (sw) + wq *(甚短波* fq);
(se, sw) = (se, sw) + wq * (vsex * aq * vswx……
+ vsey * aq * vswy……
+ vse * cq *甚短波);
(se, se) = (se, se) + wq * (vsex * aq * vsex……
+ vsey * aq * vsey……
+ vse * cq * vse);
一个(nw se) = (nw se) + wq * (vsex * aq * vnwx……
+ vsey * aq * vnwy……
+ vse * cq * vnw);
(se, ne) = (se, ne) + wq * (vsex * aq * vnex……
+ vsey * aq * vney……
+ vse * cq * vne);
(se) = b (se) + wq * (vse * fq);
一个(西北、西南)=(西北、西南)+ wq * (vnwx * aq * vswx……
+ vnwy * aq * vswy……
+ vnw * cq *甚短波);
(nw se) = (nw se) + wq * (vnwx * aq * vsex……
+ vnwy * aq * vsey……
+ vnw * cq * vse);
(西北,西北)=(西北,西北)+ wq * (vnwx * aq * vnwx……
+ vnwy * aq * vnwy……
+ vnw * cq * vnw);
一个(nw、ne) = (nw、ne) + wq * (vnwx * aq * vnex……
+ vnwy * aq * vney……
+ vnw * cq * vne);
(西北)= b(西北)+ wq * (vnw * fq);
(东北、西南)=(东北、西南)+ wq * (vnex * aq * vswx……
+ vney * aq * vswy……
+ vne * cq *甚短波);
(不,se) = (ne, se) + wq * (vnex * aq * vsex……
+ vney * aq * vsey……
+ vne * cq * vse);
一个(ne、nw) = (ne、nw) + wq * (vnex * aq * vnwx……
+ vney * aq * vnwy……
+ vne * cq * vnw);
(不,ne) = (ne, ne) + wq * (vnex * aq * vnex……
+ vney * aq * vney……
+ vne * cq * vne);
(ne) = b (ne) + wq * (vne * fq);
结束
结束
结束
结束
%
%,边界上的节点,
%替代有限元方程的边界条件。
%
k = 0;
对y = 1:纽约
x = 1: nx
k = k + 1;
如果(x = = 1 | | x = = nx | | y = = 1 | | y = =纽约)
(k, 1: mn) = 0.0;
(1:mn, k) = 0.0;
(k, k) = 1.0;
b (k) = 0.0;
结束
结束
结束
如果(假)
间谍(一个);
暂停
结束
%
%解决线性系统。
%
u = \ b;

更多的答案(0)

标签

社区寻宝

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

开始狩猎!