Как отметили комментаторы, математические аспекты вашего вопроса выходят за рамки той помощи, которую вы можете ожидать здесь, и даже выходят за рамки той помощи, которую вы могли бы предложить на основании опубликованных вами подробностей.
Тем не менее, я думаю, что даже если вы хорошо понимаете математику, в вашем вопросе есть аспекты компьютерной науки, на которые следует обратить внимание.
Когда вы пишете свой код, постарайтесь организовать его в функции, которые зависят только от параметров, которые вы передаете подпрограмме. Поэтому напишите подпрограмму, которая принимает значения для y, z и r и возвращает вам x. Сделайте другой, который принимает в f, L, D, G и возвращает z. Теперь у вас есть тестируемые процедуры, которые вы можете проверить, чтобы убедиться, что они вычисляются правильно. Проверьте входные значения для ваших подпрограмм в подпрограммах - например, при вычислении x вы получите ошибку деления на 0, если передадите 0 для r. Подумайте, как вы хотите справиться с этим.
Если вы собираетесь решать эту проблему в интерактивном режиме, вам потребуется метод, который на основе результатов одной итерации определит, какими будут значения для следующей итерации. Это также должно быть заключено в подпрограмму. Теперь, если вы используете язык, который позволяет возвращать только одно значение из подпрограммы (это наиболее распространенные языки вычислений C, C ++, Java, C #), вам нужно упаковать все свои переменные в некую структуру данных, чтобы вернуть их , Вы можете использовать массив вещественных или двойных чисел, но было бы лучше выбрать объект, а затем вы можете ссылаться на переменные по их имени, а не по их положению (меньше вероятность ошибки).
Другим аспектом итерации является знание того, когда остановиться. Конечно, вы сделаете это, когда получите решение, которое сходится. Сделайте это решение в другой подпрограмме. Теперь, когда вам нужно изменить критерии сходимости, в коде есть только одно место для перехода. Но вам нужно рассмотреть другие причины остановки - что вы делаете, если ваше решение начинает расходиться вместо того, чтобы сходиться? Сколько итераций вы позволите прогону пройти, прежде чем сдаться?
Другим аспектом итерации компьютера является ошибка округления. Математически 10 ^ 40/10 ^ 38 равно 100. Математически 10 ^ 20 + 1> 10 ^ 20. Эти утверждения не соответствуют действительности в большинстве расчетов. Ваши расчеты, возможно, должны принять это во внимание, или вы получите цифры, которые являются мусором. Это пример сквозной проблемы, которая не поддается инкапсуляции в подпрограмме.
Я бы посоветовал вам взглянуть на язык Python и расширения pythonxy.com. На связанных форумах есть люди, которые могут помочь вам научиться выполнять итеративное решение системы уравнений.