Probl\350me 2 Question 1 restart: eq1:=-diff(diff(u(x),x)*T,x)=c(x); NiM+SSRlcTFHNiIvLCQqJi1JJWRpZmZHSSpwcm90ZWN0ZWRHRis2JC1JInVHRiU2I0kieEdGJS1JIiRHRis2JEYwIiIjIiIiSSJUR0YlRjUhIiItSSJjR0YlRi8= T:=400;
c(x):=piecewise(x>0 and x<2,-6-100*(1-exp(-3*x)),x>2 and x<5,-6); NiM+SSJURzYiIiQrJQ== NiM+LUkiY0c2IjYjSSJ4R0YmLUkqUElFQ0VXSVNFR0YmNiQ3JCwmISQxIiIiIi1JJGV4cEc2JEkqcHJvdGVjdGVkR0YzSShfc3lzbGliR0YmNiMsJEYoISIkIiQrIjMyLCRGKCEiIiIiITJGKCIiIzckISInMzJGOyEiIzJGKCIiJg== eq2:=dsolve({eq1,u(0)=0,u(5)=0},u(x)): u(x):=rhs(eq2); NiM+LUkidUc2IjYjSSJ4R0YmLUkqUElFQ0VXSVNFR0YmNiY3JCwkKigsJi1JJGV4cEc2JEkqcHJvdGVjdGVkR0YzSShfc3lzbGliR0YmNiMiIiciJGYjIiNLIiIiRjlGMCEiIkYoRjkjRjoiJD8oMkYoIiIhNyQsLEYuRjsjRjkiI09GOSokRigiIiMjIiNgIiQrJS1GMTYjLCRGKCEiJCNGOkZCRigjRjoiIzcyRihGRDckLC5GLkY7IyEjPEZCRjlGQyMiIiRGR0YoIyIiJkZOLUYxNiMhIicjISIoRkIqJkZYRjlGKEY5I0Y5Rk4yRihGVzckLCxGLkY7IyEjJioiJFciRjlGKCMiI2YiJD8iRlhGZW5GZ25GaG4xRldGKA== with(plots): Warning, the name changecoords has been redefined
plot(u(x),x=0..5); LSUlUExPVEc2JS0lJ0NVUlZFU0c2JDdmbjckJCIiIUYrRio3JCQiM1dtbW1UJilHXGEhIz4kITMlelVFT3ZnbSY+Ri83JCQiM0dMTEwzeCYpKjMiISM9JCEzRSM+KlxlPCJ5KlFGLzckJCIzKSkqKlxpIVIoKlJjIkY1JCEzQXksZlFUc21iRi83JCQiM3VtbSJIMlAiUT9GNSQhM11JO0UiPXc3QChGLzckJCIzISoqKlxQTW5OckRGNSQhM1xEQGg9JWZlLSpGLzckJCIzTUxMJGVSd1g1JEY1JCEzY2NwUUBLISl6NUY1NyQkIjNyTExMJGVJOGskRjUkITNFJlxHMUE+TUQiRjU3JCQiMzNNTCQzeCUzeVRGNSQhMygpZXpIKlxAPVUiRjU3JCQiM2grXVBmeUc3WkY1JCEzI0hFJ3BnKCopUWUiRjU3JCQiM2VtbSJ6JTRcWV9GNSQhM2M6NHJXWjhTPEY1NyQkIjNgTExlUi0vUGlGNSQhM2BoNWk+YGY4P0Y1NyQkIjNdKioqXGlsJ3Bpc0Y1JCEzZ2dfR3JPTXRBRjU3JCQiMz5NTGUqKT5WQiQpRjUkITM2LEtXXHZ6OkRGNTckJCIzWSsrREpidyFRKkY1JCEzeiI0RUBRRCx0I0Y1NyQkIjMlb21tVElPby8iISM8JCEzLCkqejsmKmZWQEhGNTckJCIzWUxMM18+alU2RmFwJCEzPVcuUyNRZ10xJEY1NyQkIjM3KytdaV5aXTdGYXAkITNRUCY+XjhPJik+JEY1NyQkIjMzKytdKD1oKGU4RmFwJCEzI2YzYV9xVUFJJEY1NyQkIjMvKytdUFs2ajlGYXAkITNFcVk4LyVlS1AkRjU3JCQiMyVvO0hLUidcNTpGYXAkITNrcyIqKmVdJjQnUiRGNTckJCIzVUwkZSpbeih5YiJGYXAkITNudEImXCVRLzhNRjU3JCQiMzQrRGMsIz5VaCJGYXAkITMlPkNcL25AYlUkRjU3JCQiM3dtbTthL2NxO0ZhcCQhM1JJcUhOLWxITUY1NyQkIjMicG07YSkpKUc9PEZhcCQhMyZ6IWVaeSEzbVUkRjU3JCQiMyVvbW1tSjxndyJGYXAkITNSdUEibzhpdlQkRjU3JCQiM0xMZWtHb2BAPUZhcCQhMzVQKjMwIyp6JSpSJEY1NyQkIjMvK11pU2oweD1GYXAkITMlKVJSLy8/RXRMRjU3JCQiM2dtbW0icFdgKD5GYXAkITNBTCNSRSk9KW9JJEY1NyQkIjNLK11pIWYjPSQzI0ZhcCQhM2czUT9NTUk4S0Y1NyQkIjM/K10oPXhwZT0jRmFwJCEzKHl5WDpgXj03JEY1NyQkIjM3bm0iSDI4SUgjRmFwJCEzXVBvRT9cdUNJRjU3JCQiM3VtO3pwU1MiUiNGYXAkITMzbFlQTFMwTUhGNTckJCIzR0xMM18/YChcI0ZhcCQhM2JhSyY0eC5ZJEdGNTckJCIzZkwkZSopPnB4ZyNGYXAkITNYd19wUFNeSEZGNTckJCIzMytdUGY0dC5GRmFwJCEzZC1OP3YhXGxqI0Y1NyQkIjN1TExlKkdzdCFHRmFwJCEzIylmcTZNR2ZNREY1NyQkIjMwKysrRFJXOUhGYXAkITNlQj4sZCpwdlUjRjU3JCQiMzorK0RKRT4+SUZhcCQhM3YnR14jZVs/QEJGNTckJCIzRitdaSFSVTA3JEZhcCQhMy0jXG1QYkNuQCNGNTckJCIzKysrdj1TMkxLRmFwJCEzKTRLJFtkPSIqKTQjRjU3JCQiM0ptbW0icCk9TUxGYXAkITMzPkd2LDxWIio+RjU3JCQiM0IrK10oPV1AVyRGYXAkITMnSF1PNnkhKVwoPUY1NyQkIjM1TCRlKlskeipSTkZhcCQhM2tzLVw5IVx6dyJGNTckJCIzZSsrXWlDJHBrJEZhcCQhMyU0WTNeTyNIXDtGNTckJCIzW207SDJxY1pQRmFwJCEzS1JsWD0qeWdgIkY1NyQkIjNPK103LiJmRiZRRmFwJCEzeiNcYmJSOWhUIkY1NyQkIjNZbW07L09nYlJGYXAkITNHJyo0UyFcQXNIIkY1NyQkIjN3KipcaWxBRmpTRmFwJCEzUz0xdmVQMHI2RjU3JCQiM3lMTEwkKSpwcDslRmFwJCEzWV95IykzVyp5LyJGNTckJCIzKVJMJDN4ZSx0VUZhcCQhMzpDaHg6K3ktIypGLzckJCIzQ247SGRPPXlWRmFwJCEzeSRbJj1yTl8/ekYvNyQkIjNhKysrRD4jW1olRmFwJCEzVyJmWSVHa2pGbkYvNyQkIjNTbm1UJkchZSZlJUZhcCQhM0xVdnZpXEFWYEYvNyQkIjMjUkxMTClRayVvJUZhcCQhM28oW3FiYiwlKjMlRi83JCQiMzcrXWlTakUheiVGYXAkITMkeTM1eHFcanQjRi83JCQiM2ErXVA0ME8iKltGYXAkITNtX1luZklqRDlGLzckJCIiJkYrJCEzVTJRaDtjdyU+KCEjTC0lJkNPTE9SRzYmJSRSR0JHJCIjNSEiIiRGK0ZdXmxGXl5sLSUrQVhFU0xBQkVMU0c2JFEieDYiUSFGY15sLSUlVklFV0c2JDtGXl5sJCIjXUZdXmw7JCExckgrU0tDKVwkISM7JCIxaVNmcS9JZm9GNQ== u_unapply:=unapply(u(x),x); NiM+SSp1X3VuYXBwbHlHNiJmKjYjSSJ4R0YlRiU2JEkpb3BlcmF0b3JHRiVJJmFycm93R0YlRiUtSSpwaWVjZXdpc2VHSSpwcm90ZWN0ZWRHRi42KjI5JCIiISwkKigsJi1JJGV4cEc2JEYuSShfc3lzbGliR0YlNiMiIiciJGYjIiNLIiIiRj5GNiEiIkYxRj4jRj8iJD8oMkYxIiIjLCxGNEZAI0Y+IiNPRj4qJEYxRkMjIiNgIiQrJS1GNzYjLCRGMSEiJCNGP0ZGRjEjRj8iIzcyRjEiIiYsLkY0RkAjISM8RkZGPkZHIyIiJEZKRjEjRlNGUS1GNzYjISInIyEiKEZGKiZGWkY+RjFGPiNGPkZRMUZTRjEsLEY0RkAjISMmKiIkVyJGPkYxIyIjZiIkPyJGWkZnbkZpbkZqbkYlRiVGJQ== Question 2 with(linalg): Warning, the protected names norm and trace have been redefined and unprotected
c(x):=piecewise(x>0 and x<2,-6-100*(1-exp(-3*x)),x>2 and x<5,-6):
T:=400:
f(x):=-c(x)/T; NiM+LUkiZkc2IjYjSSJ4R0YmLCQtSSpQSUVDRVdJU0VHRiY2JDckLCYhJDEiIiIiLUkkZXhwRzYkSSpwcm90ZWN0ZWRHRjRJKF9zeXNsaWJHRiY2IywkRighIiQiJCsiMzIsJEYoISIiIiIhMkYoIiIjNyQhIiczMkY8ISIjMkYoIiImI0Y9IiQrJQ== L:=5;
h:=0.05;
n:=L/h-1; NiM+SSJMRzYiIiIm NiM+SSJoRzYiJCIiJiEiIw== NiM+SSJuRzYiJCIqKysrISoqISIo Q1:=array(1..99):
Q2:=array(1..99):
Q3:=array(1..99):
Q4:=array(1..99):
Q5:=array(1..99):
x:=array(0..100):
for i from 0 to n+1 do
x[i]:=i*h;
od: for i from 1 to n do
Q1[i]:=0:
Q2[i]:=0:
Q3[i]:=0:
Q4[i]:=(-1/h)*int((x-x[i-1])*f(x),x=x[i-1]..x[i]):
Q5[i]:=(-1/h)*int((x[i+1]-x)*f(x),x=x[i]..x[i+1]):
od: A:=matrix(99,99,0):
b:=vector(99,0):
for i from 1 to 1 do
A[i,i]:=(1/h)+(1/h)+Q2[i]+Q3[i];
A[i,i+1]:=(-1/h)+Q1[i];
od:
for i from 2 to 98 do
A[i,i]:=(1/h)+(1/h)+Q2[i]+Q3[i];
A[i,i-1]:=(-1/h)+Q1[i-1];
A[i,i+1]:=(-1/h)+Q1[i];
od: for i from 99 to 99 do
A[i,i]:=(1/h)+(1/h)+Q2[i]+Q3[i];
A[i,i-1]:=(-1/h)+Q1[i-1];
od: for i from 1 to 99 do
b[i]:=Q4[i]+Q5[i];
od: c:=linsolve(A,b): for i from 1 to 99 do
phi(x)[i]:=piecewise(x[i-1]<x and x<=x[i], (x-x[i-1])/h, x[i]<x and x<=x[i+1], (x[i+1]-x)/h, 0);
od: phi_c:=vector(99,0): for i from 1 to 99 do
phi_c[i]:=phi(x)[i]*c[i];
od: phi_final:=sum('phi_c[i]','i'=1..99): phi_unapply:=unapply(phi_final,x): with(plots): plot(phi_final,x=0..5); LSUlUExPVEc2JS0lJ0NVUlZFU0c2JDdmbjckJCIiIUYrRio3JCQiM1dtbW1UJilHXGEhIz4kITNhXzFYS2YuYz5GLzckJCIzR0xMTDN4JikqMyIhIz0kITMnKnooKikpW3Y5JypRRi83JCQiMykpKipcaSFSKCpSYyJGNSQhMz89S1hGLDhsYkYvNyQkIjN1bW0iSDJQIlE/RjUkITNWQi5gIil6MzVzRi83JCQiMyEqKipcUE1uTnJERjUkITNoUSZ6RUg4Ti0qRi83JCQiM01MTCRlUndYNSRGNSQhMyUpKls1NkJgJXo1RjU3JCQiM3JMTEwkZUk4ayRGNSQhM2c1KW83aWJIRCJGNTckJCIzM01MJDN4JTN5VEY1JCEzJVIxNmtuajdVIkY1NyQkIjNoK11QZnlHN1pGNSQhM0NZO3d1W0UkZSJGNTckJCIzZW1tInolNFxZX0Y1JCEzZksnKiopKmZvJVI8RjU3JCQiM2BMTGVSLS9QaUY1JCEzPkR4TzIiKilHLCNGNTckJCIzXSoqKlxpbCdwaXNGNSQhM2E0TCpvNzFFRiNGNTckJCIzPk1MZSopPlZCJClGNSQhMyMzMydcRjA1OkRGNTckJCIzWSsrREpidyFRKkY1JCEzKDRsSVR2ZSZIRkY1NyQkIjMlb21tVElPby8iISM8JCEzKG9HIVw/IVs3I0hGNTckJCIzWUxMM18+alU2RmFwJCEzJz1aJyopcHRsa0lGNTckJCIzNysrXWleWl03RmFwJCEzNXdnXiRmMCYpPiRGNTckJCIzMysrXSg9aChlOEZhcCQhM3FNLCl6UXI8SSRGNTckJCIzLysrXVBbNmo5RmFwJCEzaS5xMGdaaXNMRjU3JCQiMyVvO0hLUidcNTpGYXAkITMpZnQnKXpdXmJSJEY1NyQkIjNVTCRlKlt6KHliIkZhcCQhM2M4X1IjKnlnN01GNTckJCIzNCtEYywjPlVoIkZhcCQhMzNhWSkqUUMmW1UkRjU3JCQiM3dtbTthL2NxO0ZhcCQhMzkqejlmP2ApR01GNTckJCIzInBtO2EpKSlHPTxGYXAkITMmNElWVHVWZVUkRjU3JCQiMyVvbW1tSjxndyJGYXAkITNNWDppX1Ulb1QkRjU3JCQiM0xMZWtHb2BAPUZhcCQhMy9pXyNlKjNuKVIkRjU3JCQiMy8rXWlTajB4PUZhcCQhMyUqKmUyN0VVQ1AkRjU3JCQiM2dtbW0icFdgKD5GYXAkITN1KTQ7aClmMDFMRjU3JCQiM0srXWkhZiM9JDMjRmFwJCEzNmZgIVJjaEtAJEY1NyQkIjM/K10oPXhwZT0jRmFwJCEzRig+VUZdOD03JEY1NyQkIjM3bm0iSDI4SUgjRmFwJCEzJClwZmltQnNDSUY1NyQkIjN1bTt6cFNTIlIjRmFwJCEzamxMJHpLRlMkSEY1NyQkIjNHTEwzXz9gKFwjRmFwJCEzV0tyJD0nXGZNR0Y1NyQkIjNmTCRlKik+cHhnI0ZhcCQhM05ud1M9JSpbSEZGNTckJCIzMytdUGY0dC5GRmFwJCEzVCFIOFo2T2xqI0Y1NyQkIjN1TExlKkdzdCFHRmFwJCEzLCdcJFFdI3BYYCNGNTckJCIzMCsrK0RSVzlIRmFwJCEzKSp6c3ZEOWBGQ0Y1NyQkIjM6KytESkU+PklGYXAkITNAaTUoKSpcZzZLI0Y1NyQkIjNGK11pIVJVMDckRmFwJCEzeFxmQWQiem1AI0Y1NyQkIjMrKyt2PVMyTEtGYXAkITMpKVw5bGYpcCkpNCNGNTckJCIzSm1tbSJwKT1NTEZhcCQhM0t0Jj5yOSJSIio+RjU3JCQiM0IrK10oPV1AVyRGYXAkITNbKkhnVCZmJlwoPUY1NyQkIjM1TCRlKlskeipSTkZhcCQhMy88ZndjKj16dyJGNTckJCIzZSsrXWlDJHBrJEZhcCQhMz8hSE1kYiJHXDtGNTckJCIzW207SDJxY1pQRmFwJCEzZzhDP0QtMk86RjU3JCQiM08rXTcuImZGJlFGYXAkITMncGk0bmcvaFQiRjU3JCQiM1ltbTsvT2diUkZhcCQhM2Ukb0ciPlE/KEgiRjU3JCQiM3cqKlxpbEFGalNGYXAkITNHTEU1KD08NTwiRjU3JCQiM3lMTEwkKSpwcDslRmFwJCEzJ2ZJJyopZUImeS8iRjU3JCQiMylSTCQzeGUsdFVGYXAkITNGeHQjbzY5Qj8qRi83JCQiM0NuO0hkTz15VkZhcCQhM2s5SEFOQjE/ekYvNyQkIjNhKysrRD4jW1olRmFwJCEzYScpem5GdztGbkYvNyQkIjNTbm1UJkchZSZlJUZhcCQhM1srYjc1LCVHTSZGLzckJCIzI1JMTEwpUWslbyVGYXAkITNbRkZtN0QrKjMlRi83JCQiMzcrXWlTakUheiVGYXAkITNzZkMrQmQwT0ZGLzckJCIzYStdUDQwTyIqW0ZhcCQhM2dtTmRWXU9EOUYvNyQkIiImRitGKi0lJkNPTE9SRzYmJSRSR0JHJCIjNSEiIiRGK0ZqXWxGW15sLSUrQVhFU0xBQkVMU0c2JFEieDYiUSFGYF5sLSUlVklFV0c2JDtGW15sJCIjXUZqXWw7JCEyYzRMK0ZJdVwkRmFwJCIvJ0g9VDF4Jm8hIzs= for i from 2 to 2 do
i;
x_i:=x[i-1];
x[i-1];
phi_unapply(x_i);
evalf(u_unapply(x_i));
#abs(phi_unapply(x_i)-u(x_i)):
od: fd := fopen("tableau_2.txt", WRITE):
fprintf(fd, "i\txi\tphi(xi)\t\tu(xi)\terreur=|phi(xi)-u(xi)|\n"):
for i from 1 to 101 do
x_i:=x[i-1]:
fprintf(fd, "%g\t%g\t%g\t%g\t%g\n",i,x[i-1],phi_unapply(x_i),evalf(u_unapply(x_i)),abs(phi_unapply(x_i)-evalf(u_unapply(x_i)))):
od:
fclose(fd):